diff --git a/win32libs/gettext/0001-gettext-tools-gnulib-lib-xalloc.h-Fix-function-signa.patch b/win32libs/gettext/0001-gettext-tools-gnulib-lib-xalloc.h-Fix-function-signa.patch new file mode 100644 index 00000000..74010246 --- /dev/null +++ b/win32libs/gettext/0001-gettext-tools-gnulib-lib-xalloc.h-Fix-function-signa.patch @@ -0,0 +1,32 @@ +From 0f805c1a59417d947adc834821f9e407720029d5 Mon Sep 17 00:00:00 2001 +From: Chun-wei Fan +Date: Tue, 21 Mar 2017 16:39:04 +0800 +Subject: [PATCH] gettext-tools/gnulib-lib/xalloc.h: Fix function signature + +This ensures we use _Noreturn across the board so that the compiler +won't complain about different prototype signatures, and expands to +support different compilers. +--- + gettext-tools/gnulib-lib/xalloc.h | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/gettext-tools/gnulib-lib/xalloc.h b/gettext-tools/gnulib-lib/xalloc.h +index f4a329e..0fcb44c 100644 +--- a/gettext-tools/gnulib-lib/xalloc.h ++++ b/gettext-tools/gnulib-lib/xalloc.h +@@ -60,11 +60,7 @@ extern "C" { + in charge of honoring the three previous items. This is the + function to call when one wants the program to die because of a + memory allocation failure. */ +-extern void xalloc_die (void) +-#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) && !__STRICT_ANSI__ +- __attribute__ ((__noreturn__)) +-#endif +- ; ++extern _Noreturn void xalloc_die (void); + + /* In the following macros, T must be an elementary or structure/union or + typedef'ed type, or a pointer to such a type. To apply one of the +-- +2.10.2.windows.1 + diff --git a/win32libs/gettext/0001-gettext-tools-src-Fix-linking.patch b/win32libs/gettext/0001-gettext-tools-src-Fix-linking.patch new file mode 100644 index 00000000..ee2e10f6 --- /dev/null +++ b/win32libs/gettext/0001-gettext-tools-src-Fix-linking.patch @@ -0,0 +1,69 @@ +From eca67e562870f619efaaf960e27b7d232fc6acea Mon Sep 17 00:00:00 2001 +From: Chun-wei Fan +Date: Tue, 21 Mar 2017 16:36:21 +0800 +Subject: [PATCH] gettext-tools/src: Fix linking + +xgettext.c needs to be built as C++, so we need to ensure that the +symbols from read-po.h, write-properties.h and write-stringtable.h are +decorated with extern "C" so that they will not be mangled with C++ +stuff, enabling the code to link. +--- + gettext-tools/src/read-po.h | 6 ++++++ + gettext-tools/src/write-properties.h | 6 ++++++ + gettext-tools/src/write-stringtable.h | 6 ++++++ + 3 files changed, 18 insertions(+) + +diff --git a/gettext-tools/src/read-po.h b/gettext-tools/src/read-po.h +index 064e27a..c72b432 100644 +--- a/gettext-tools/src/read-po.h ++++ b/gettext-tools/src/read-po.h +@@ -21,6 +21,12 @@ + #include "read-catalog-abstract.h" + + /* Describes a .po / .pot file parser. */ ++#ifdef __cplusplus ++extern "C" { ++#endif + extern DLL_VARIABLE const struct catalog_input_format input_format_po; ++#ifdef __cplusplus ++} ++#endif + + #endif /* _READ_PO_H */ +diff --git a/gettext-tools/src/write-properties.h b/gettext-tools/src/write-properties.h +index cf6f86c..c621b27 100644 +--- a/gettext-tools/src/write-properties.h ++++ b/gettext-tools/src/write-properties.h +@@ -21,6 +21,12 @@ + #include "write-catalog.h" + + /* Describes a PO file in Java .properties syntax. */ ++#ifdef __cplusplus ++extern "C" { ++#endif + extern DLL_VARIABLE const struct catalog_output_format output_format_properties; ++#ifdef __cplusplus ++} ++#endif + + #endif /* _WRITE_PROPERTIES_H */ +diff --git a/gettext-tools/src/write-stringtable.h b/gettext-tools/src/write-stringtable.h +index bf3de6c..179f8ae 100644 +--- a/gettext-tools/src/write-stringtable.h ++++ b/gettext-tools/src/write-stringtable.h +@@ -21,6 +21,12 @@ + #include "write-catalog.h" + + /* Describes a PO file in .strings syntax. */ ++#ifdef __cplusplus ++extern "C" { ++#endif + extern DLL_VARIABLE const struct catalog_output_format output_format_stringtable; ++#ifdef __cplusplus ++} ++#endif + + #endif /* _WRITE_STRINGTABLE_H */ +-- +2.10.2.windows.1 + diff --git a/win32libs/gettext/0001-gettext-tools-src-x-lua.c-Fix-on-pre-C99.patch b/win32libs/gettext/0001-gettext-tools-src-x-lua.c-Fix-on-pre-C99.patch new file mode 100644 index 00000000..c217f005 --- /dev/null +++ b/win32libs/gettext/0001-gettext-tools-src-x-lua.c-Fix-on-pre-C99.patch @@ -0,0 +1,62 @@ +From 38455cbd1fb05c1838e9f3ab4eeed141e0790ded Mon Sep 17 00:00:00 2001 +From: Chun-wei Fan +Date: Tue, 21 Mar 2017 16:51:56 +0800 +Subject: [PATCH] gettext-tools/src/x-lua.c: Fix on pre-C99 + +Ensure variables are declared at the top of the block. +--- + gettext-tools/src/x-lua.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/gettext-tools/src/x-lua.c b/gettext-tools/src/x-lua.c +index 78ac24f..aaa7848 100644 +--- a/gettext-tools/src/x-lua.c ++++ b/gettext-tools/src/x-lua.c +@@ -281,9 +281,9 @@ phase2_getc () + + if (c == '[') + { ++ int esigns = 0; + c = phase1_getc (); + +- int esigns = 0; + while (c == '=') + { + esigns++; +@@ -710,10 +710,11 @@ phase3_get (token_ty *tp) + break; + + case '[': ++ { ++ int esigns = 0; + c = phase1_getc (); + + /* Count the number of equal signs. */ +- int esigns = 0; + while (c == '=') + { + esigns++; +@@ -745,10 +746,10 @@ phase3_get (token_ty *tp) + + if (c == ']') + { +- c = phase1_getc (); +- + /* Count the number of equal signs. */ + int esigns2 = 0; ++ c = phase1_getc (); ++ + while (c == '=') + { + esigns2++; +@@ -798,6 +799,7 @@ phase3_get (token_ty *tp) + } + } + break; ++ } + + case ']': + tp->type = token_type_rbracket; +-- +2.10.2.windows.1 + diff --git a/win32libs/gettext/0001-ostream.h-styled-ostream.h-Fix-linking.patch b/win32libs/gettext/0001-ostream.h-styled-ostream.h-Fix-linking.patch new file mode 100644 index 00000000..eb8e50dd --- /dev/null +++ b/win32libs/gettext/0001-ostream.h-styled-ostream.h-Fix-linking.patch @@ -0,0 +1,79 @@ +From e63539a44921a69a2e33571f527f9c2d5a99bc9f Mon Sep 17 00:00:00 2001 +From: Chun-wei Fan +Date: Tue, 21 Mar 2017 16:16:12 +0800 +Subject: [PATCH] ostream.h, styled-ostream.h: Fix linking + +There are some ostream sources that we need to build as C++, but that +would make the symbols mangled with C++ items, which will break linking +of gettextlib and anything that makes use and link to the ostream items +unless they are built as C++ as well. + +Use extern "C" to fix these, since these ostream sources are C anyways. +--- + gettext-tools/gnulib-lib/ostream.h | 17 +++++++++++++++-- + gettext-tools/gnulib-lib/styled-ostream.h | 13 +++++++++++++ + 2 files changed, 28 insertions(+), 2 deletions(-) + +diff --git a/gettext-tools/gnulib-lib/ostream.h b/gettext-tools/gnulib-lib/ostream.h +index 488b1de..ff9051d 100644 +--- a/gettext-tools/gnulib-lib/ostream.h ++++ b/gettext-tools/gnulib-lib/ostream.h +@@ -108,11 +108,24 @@ ostream_free (ostream_t first_arg) + + #endif + +-extern const typeinfo_t ostream_typeinfo; ++#ifdef __cplusplus ++extern "C" { ++#endif ++extern DLL_VARIABLE const typeinfo_t ostream_typeinfo; ++#ifdef __cplusplus ++} ++#endif ++ + #define ostream_SUPERCLASSES &ostream_typeinfo, NULL + #define ostream_SUPERCLASSES_LENGTH (1 + 1) + +-extern const struct ostream_implementation ostream_vtable; ++#ifdef __cplusplus ++extern "C" { ++#endif ++extern DLL_VARIABLE const const struct ostream_implementation ostream_vtable; ++#ifdef __cplusplus ++} ++#endif + + #line 41 "ostream.oo.h" + +diff --git a/gettext-tools/gnulib-lib/styled-ostream.h b/gettext-tools/gnulib-lib/styled-ostream.h +index 3a2dc6d..8e46c84 100644 +--- a/gettext-tools/gnulib-lib/styled-ostream.h ++++ b/gettext-tools/gnulib-lib/styled-ostream.h +@@ -132,11 +132,24 @@ styled_ostream_end_use_class (styled_ostream_t first_arg, const char *classname) + + #endif + ++#ifdef __cplusplus ++extern "C" { ++#endif + extern DLL_VARIABLE const typeinfo_t styled_ostream_typeinfo; ++#ifdef __cplusplus ++} ++#endif ++ + #define styled_ostream_SUPERCLASSES &styled_ostream_typeinfo, ostream_SUPERCLASSES + #define styled_ostream_SUPERCLASSES_LENGTH (1 + ostream_SUPERCLASSES_LENGTH) + ++#ifdef __cplusplus ++extern "C" { ++#endif + extern DLL_VARIABLE const struct styled_ostream_implementation styled_ostream_vtable; ++#ifdef __cplusplus ++} ++#endif + + #line 42 "styled-ostream.oo.h" + +-- +2.10.2.windows.1 + diff --git a/win32libs/gettext/0001-printf-parse.c-Fix-build-on-Visual-Studio-2008.patch b/win32libs/gettext/0001-printf-parse.c-Fix-build-on-Visual-Studio-2008.patch new file mode 100644 index 00000000..5b2e4836 --- /dev/null +++ b/win32libs/gettext/0001-printf-parse.c-Fix-build-on-Visual-Studio-2008.patch @@ -0,0 +1,28 @@ +From d5fc639ef91cdcac2837aad99e934fe51866648e Mon Sep 17 00:00:00 2001 +From: Chun-wei Fan +Date: Tue, 21 Mar 2017 15:59:44 +0800 +Subject: [PATCH] printf-parse.c: Fix build on Visual Studio 2008 + +We didn't have a stock stdint.h to include and so intmax_t is not +defined. Add a define for it for Visual Studio 2008. +--- + gettext-runtime/intl/printf-parse.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/gettext-runtime/intl/printf-parse.c b/gettext-runtime/intl/printf-parse.c +index ebcb484..fdbcce0 100644 +--- a/gettext-runtime/intl/printf-parse.c ++++ b/gettext-runtime/intl/printf-parse.c +@@ -56,6 +56,9 @@ + # if HAVE_INTTYPES_H_WITH_UINTMAX + # include + # endif ++# if (_MSC_VER < 1600) ++# define intmax_t long long ++# endif + #else + # include + #endif +-- +2.10.2.windows.1 + diff --git a/win32libs/gettext/0001-tools-Fix-gnulib-lib-uniname-uniname.c-on-pre-C99.patch b/win32libs/gettext/0001-tools-Fix-gnulib-lib-uniname-uniname.c-on-pre-C99.patch new file mode 100644 index 00000000..4759a4fc --- /dev/null +++ b/win32libs/gettext/0001-tools-Fix-gnulib-lib-uniname-uniname.c-on-pre-C99.patch @@ -0,0 +1,35 @@ +From 26b3eb541e6ec3ca381ef488430f731415387b14 Mon Sep 17 00:00:00 2001 +From: Chun-wei Fan +Date: Tue, 21 Mar 2017 16:02:43 +0800 +Subject: [PATCH] tools: Fix gnulib-lib/uniname/uniname.c on pre-C99 + +Declare variables at top of block. +--- + gettext-tools/gnulib-lib/uniname/uniname.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gettext-tools/gnulib-lib/uniname/uniname.c b/gettext-tools/gnulib-lib/uniname/uniname.c +index 5da6ced..114e5a8 100644 +--- a/gettext-tools/gnulib-lib/uniname/uniname.c ++++ b/gettext-tools/gnulib-lib/uniname/uniname.c +@@ -375,6 +375,7 @@ unicode_name_character (const char *name) + if (false) + filled_buf: + { ++ uint16_t words[UNICODE_CHARNAME_MAX_WORDS], *wordptr; + { + /* Special case for variation selector aliases. Keeps the + tables small. */ +@@ -407,8 +408,7 @@ unicode_name_character (const char *name) + } + } + /* Convert the constituents to uint16_t words. */ +- uint16_t words[UNICODE_CHARNAME_MAX_WORDS]; +- uint16_t *wordptr = words; ++ wordptr = words; + { + const char *p1 = buf; + for (;;) +-- +2.10.2.windows.1 + diff --git a/win32libs/gettext/disable-tools.diff b/win32libs/gettext/disable-tools.diff new file mode 100644 index 00000000..6575edbe --- /dev/null +++ b/win32libs/gettext/disable-tools.diff @@ -0,0 +1,57 @@ +diff -Nru gettext-0.19.8.1-unpatched/configure gettext-0.19.8.1/configure +--- gettext-0.19.8.1-unpatched/configure 2016-06-11 15:01:20.000000000 +0200 ++++ gettext-0.19.8.1/configure 2018-02-10 10:06:18.877946400 +0100 +@@ -747,7 +747,7 @@ + EMACS + EMACSLOADPATH + CXXCPP' +-ac_subdirs_all='gettext-runtime gettext-tools' ++ac_subdirs_all='gettext-runtime' + + # Initialize some variables set by options. + ac_init_help= +@@ -2535,7 +2535,7 @@ + + + +-subdirs="$subdirs gettext-runtime gettext-tools" ++subdirs="$subdirs gettext-runtime" + + + +diff -Nru gettext-0.19.8.1-unpatched/configure.ac gettext-0.19.8.1/configure.ac +--- gettext-0.19.8.1-unpatched/configure.ac 2016-03-20 08:37:53.000000000 +0100 ++++ gettext-0.19.8.1/configure.ac 2018-02-10 10:06:16.680247500 +0100 +@@ -38,7 +38,7 @@ + + dnl Checks for library functions. + +-AC_CONFIG_SUBDIRS([gettext-runtime gettext-tools]) ++AC_CONFIG_SUBDIRS([gettext-runtime]) + + AM_EXTRA_RECURSIVE_TARGETS([maintainer-update-po]) + +diff -Nru gettext-0.19.8.1-unpatched/Makefile.am gettext-0.19.8.1/Makefile.am +--- gettext-0.19.8.1-unpatched/Makefile.am 2016-03-20 08:37:53.000000000 +0100 ++++ gettext-0.19.8.1/Makefile.am 2018-02-10 10:06:16.711447600 +0100 +@@ -19,7 +19,7 @@ + AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies + ACLOCAL_AMFLAGS = -I m4 + +-SUBDIRS = gnulib-local gettext-runtime gettext-tools ++SUBDIRS = gnulib-local gettext-runtime + + changelog_etc = \ + gettext-runtime/ChangeLog.0 \ +diff -Nru gettext-0.19.8.1-unpatched/Makefile.in gettext-0.19.8.1/Makefile.in +--- gettext-0.19.8.1-unpatched/Makefile.in 2016-06-11 15:01:21.000000000 +0200 ++++ gettext-0.19.8.1/Makefile.in 2018-02-10 10:06:16.633447400 +0100 +@@ -312,7 +312,7 @@ + top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = 1.5 gnu no-dependencies + ACLOCAL_AMFLAGS = -I m4 +-SUBDIRS = gnulib-local gettext-runtime gettext-tools ++SUBDIRS = gnulib-local gettext-runtime + changelog_etc = \ + gettext-runtime/ChangeLog.0 \ + gettext-runtime/doc/ChangeLog.0 \ diff --git a/win32libs/gettext/gettext-0.18-20130523.diff b/win32libs/gettext/gettext-0.18-20130523.diff deleted file mode 100644 index 5015651f..00000000 --- a/win32libs/gettext/gettext-0.18-20130523.diff +++ /dev/null @@ -1,2151 +0,0 @@ -diff -Nru -x '*~' gettext-0.18.orig/cmake/Modules/Findiconv.cmake gettext-0.18/cmake/Modules/Findiconv.cmake ---- gettext-0.18.orig/cmake/Modules/Findiconv.cmake 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/cmake/Modules/Findiconv.cmake 2013-04-24 12:57:08.379065500 +0200 -@@ -0,0 +1,60 @@ -+# - Try to find Iconv -+# Once done this will define -+# -+# ICONV_FOUND - system has Iconv -+# ICONV_INCLUDE_DIR - the Iconv include directory -+# ICONV_LIBRARIES - Link these to use Iconv -+# ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const -+# -+include(CheckCXXSourceCompiles) -+ -+IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) -+ # Already in cache, be silent -+ SET(ICONV_FIND_QUIETLY TRUE) -+ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) -+ -+FIND_PATH(ICONV_INCLUDE_DIR iconv.h) -+ -+FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c) -+ -+IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) -+ SET(ICONV_FOUND TRUE) -+ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) -+ -+set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) -+set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) -+IF(ICONV_FOUND) -+ check_cxx_source_compiles(" -+ #include -+ int main(){ -+ iconv_t conv = 0; -+ const char* in = 0; -+ size_t ilen = 0; -+ char* out = 0; -+ size_t olen = 0; -+ iconv(conv, &in, &ilen, &out, &olen); -+ return 0; -+ } -+" ICONV_SECOND_ARGUMENT_IS_CONST ) -+ IF(ICONV_SECOND_ARGUMENT_IS_CONST) -+ SET(ICONV_CONST "const") -+ ENDIF(ICONV_SECOND_ARGUMENT_IS_CONST) -+ENDIF(ICONV_FOUND) -+set(CMAKE_REQUIRED_INCLUDES) -+set(CMAKE_REQUIRED_LIBRARIES) -+ -+IF(ICONV_FOUND) -+ IF(NOT ICONV_FIND_QUIETLY) -+ MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}") -+ ENDIF(NOT ICONV_FIND_QUIETLY) -+ELSE(ICONV_FOUND) -+ IF(Iconv_FIND_REQUIRED) -+ MESSAGE(FATAL_ERROR "Could not find Iconv") -+ ENDIF(Iconv_FIND_REQUIRED) -+ENDIF(ICONV_FOUND) -+ -+MARK_AS_ADVANCED( -+ ICONV_INCLUDE_DIR -+ ICONV_LIBRARIES -+ ICONV_SECOND_ARGUMENT_IS_CONST -+) -diff -Nru -x '*~' gettext-0.18.orig/cmake/Modules/FindWcecompat.cmake gettext-0.18/cmake/Modules/FindWcecompat.cmake ---- gettext-0.18.orig/cmake/Modules/FindWcecompat.cmake 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/cmake/Modules/FindWcecompat.cmake 2013-04-24 12:57:08.382065700 +0200 -@@ -0,0 +1,33 @@ -+# Try to find Wcecompat functionality -+# Once done this will define -+# -+# WCECOMPAT_FOUND - system has Wcecompat -+# WCECOMPAT_INCLUDE_DIR - Wcecompat include directory -+# WCECOMPAT_LIBRARIES - Libraries needed to use Wcecompat -+# -+# Copyright (c) 2010, Andreas Holzammer, -+# -+# Redistribution and use is allowed according to the terms of the BSD license. -+ -+if(WCECOMPAT_INCLUDE_DIR AND WCECOMPAT_LIB_FOUND) -+ set(Wcecompat_FIND_QUIETLY TRUE) -+endif(WCECOMPAT_INCLUDE_DIR AND WCECOMPAT_LIB_FOUND) -+ -+find_path(WCECOMPAT_INCLUDE_DIR errno.h PATH_SUFFIXES wcecompat) -+ -+set(WCECOMPAT_LIB_FOUND FALSE) -+ -+if(WCECOMPAT_INCLUDE_DIR) -+ find_library(WCECOMPAT_LIBRARIES NAMES wcecompat wcecompatex ) -+ if(WCECOMPAT_LIBRARIES) -+ set(WCECOMPAT_LIB_FOUND TRUE) -+ endif(WCECOMPAT_LIBRARIES) -+endif(WCECOMPAT_INCLUDE_DIR) -+ -+# I have no idea what this is about, but it seems to be used quite often, so I add this here -+set(WCECOMPAT_CONST const) -+ -+include(FindPackageHandleStandardArgs) -+find_package_handle_standard_args(Wcecompat DEFAULT_MSG WCECOMPAT_LIBRARIES WCECOMPAT_LIB_FOUND) -+ -+mark_as_advanced(WCECOMPAT_INCLUDE_DIR WCECOMPAT_LIBRARIES WCECOMPAT_CONST WCECOMPAT_LIB_FOUND) -diff -Nru -x '*~' gettext-0.18.orig/cmake/Modules/MacroBoolTo01.cmake gettext-0.18/cmake/Modules/MacroBoolTo01.cmake ---- gettext-0.18.orig/cmake/Modules/MacroBoolTo01.cmake 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/cmake/Modules/MacroBoolTo01.cmake 2013-04-24 12:57:08.384065800 +0200 -@@ -0,0 +1,20 @@ -+# MACRO_BOOL_TO_01( VAR RESULT0 ... RESULTN ) -+# This macro evaluates its first argument -+# and sets all the given vaiables either to 0 or 1 -+# depending on the value of the first one -+ -+# Copyright (c) 2006, Alexander Neundorf, -+# -+# Redistribution and use is allowed according to the terms of the BSD license. -+# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -+ -+ -+MACRO(MACRO_BOOL_TO_01 FOUND_VAR ) -+ FOREACH (_current_VAR ${ARGN}) -+ IF(${FOUND_VAR}) -+ SET(${_current_VAR} 1) -+ ELSE(${FOUND_VAR}) -+ SET(${_current_VAR} 0) -+ ENDIF(${FOUND_VAR}) -+ ENDFOREACH(_current_VAR) -+ENDMACRO(MACRO_BOOL_TO_01) -diff -Nru -x '*~' gettext-0.18.orig/CMakeLists.txt gettext-0.18/CMakeLists.txt ---- gettext-0.18.orig/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/CMakeLists.txt 2013-04-24 12:57:08.454069800 +0200 -@@ -0,0 +1,39 @@ -+cmake_minimum_required(VERSION 2.6) -+ -+project(gettext) -+ -+set(PACKAGE_VERSION_MAJOR 0) -+set(PACKAGE_VERSION_MINOR 18) -+set(PACKAGE_VERSION_SUBMINOR 0) -+ -+set(PACKAGE_VERSION_STRING "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}") -+ -+add_definitions(-DPACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR} -DPACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR} -DPACKAGE_VERSION_SUBMINOR=${PACKAGE_VERSION_SUBMINOR} -DPACKAGE_VERSION_STRING="${PACKAGE_VERSION_STRING}") -+ -+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules ${CMAKE_MODULE_PATH}) -+ -+include(MacroBoolTo01) -+ -+if(WINCE) -+ find_package(Wcecompat REQUIRED) -+ include_directories(${WCECOMPAT_INCLUDE_DIR}) -+ set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${WCECOMPAT_INCLUDE_DIR}) -+ set(LIBRARY_TYPE STATIC) -+ add_definitions(-DGETTEXT_STATIC_LIBS) -+ add_definitions(-DWCECOMPAT_USE_DLMALLOC) -+else(WINCE) -+ set(LIBRARY_TYPE SHARED) -+endif(WINCE) -+ -+find_package(iconv) -+set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${ICONV_INCLUDE_DIR}) -+set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${ICONV_LIBRARIES}) -+ -+include_directories(${ICONV_INCLUDE_DIR}) -+ -+if(MSVC) -+ add_definitions(-wd4996 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS) -+endif(MSVC) -+ -+add_subdirectory(gettext-runtime) -+#add_subdirectory(gettext-tools) -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/CMakeLists.txt gettext-0.18/gettext-runtime/CMakeLists.txt ---- gettext-0.18.orig/gettext-runtime/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/gettext-runtime/CMakeLists.txt 2013-04-24 12:57:08.488071700 +0200 -@@ -0,0 +1,23 @@ -+cmake_minimum_required(VERSION 2.6) -+set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) -+ -+project(gettext-runtime) -+ -+include(ConfigureChecks.cmake) -+ -+include_directories(${CMAKE_CURRENT_BINARY_DIR}) -+ -+ -+#add_subdirectory(doc) -+add_subdirectory(intl) -+#add_subdirectory(intl-java) -+#add_subdirectory(intl-csharp) -+#add_subdirectory(gnulib-lib) -+#add_subdirectory(src) -+#add_subdirectory(po) -+#add_subdirectory(man) -+#add_subdirectory(m4) -+#add_subdirectory(tests) -+ -+ -+ -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/config.h.cmake gettext-0.18/gettext-runtime/config.h.cmake ---- gettext-0.18.orig/gettext-runtime/config.h.cmake 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/gettext-runtime/config.h.cmake 2013-04-24 12:57:08.529074100 +0200 -@@ -0,0 +1,1276 @@ -+/* config.h.in. Generated from configure.ac by autoheader. */ -+ -+/* Define if the compiler is building for multiple architectures of Apple -+ platforms at once. */ -+#cmakedefine AA_APPLE_UNIVERSAL_BUILD -+ -+/* Define to the number of bits in type 'ptrdiff_t'. */ -+#cmakedefine BITSIZEOF_PTRDIFF_T @BITSIZEOF_PTRDIFF_T@ -+ -+/* Define to the number of bits in type 'sig_atomic_t'. */ -+#cmakedefine BITSIZEOF_SIG_ATOMIC_T @BITSIZEOF_SIG_ATOMIC_T@ -+ -+/* Define to the number of bits in type 'size_t'. */ -+#cmakedefine BITSIZEOF_SIZE_T @BITSIZEOF_SIZE_T@ -+ -+/* Define to the number of bits in type 'wchar_t'. */ -+#cmakedefine BITSIZEOF_WCHAR_T @BITSIZEOF_WCHAR_T@ -+ -+/* Define to the number of bits in type 'wint_t'. */ -+#cmakedefine BITSIZEOF_WINT_T @BITSIZEOF_WINT_T@ -+ -+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP -+ systems. This function is required for `alloca.c' support on those systems. -+ */ -+#cmakedefine CRAY_STACKSEG_END -+ -+/* Define if mono is the preferred C# implementation. */ -+#cmakedefine CSHARP_CHOICE_MONO -+ -+/* Define if pnet is the preferred C# implementation. */ -+#cmakedefine CSHARP_CHOICE_PNET -+ -+/* Define to 1 if using `alloca.c'. */ -+#cmakedefine C_ALLOCA -+ -+/* Define to 1 if // is a file system root distinct from /. */ -+#cmakedefine DOUBLE_SLASH_IS_DISTINCT_ROOT -+ -+/* Define to 1 if translation of program messages to the user's native -+ language is requested. */ -+#cmakedefine ENABLE_NLS -+ -+/* Define to 1 if the package shall run at any location in the file system. */ -+#cmakedefine ENABLE_RELOCATABLE -+ -+/* Define on systems for which file names may have a so-called `drive letter' -+ prefix, define this to compute the length of that prefix, including the -+ colon. */ -+#cmakedefine FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX -+ -+/* Define if the backslash character may also serve as a file name component -+ separator. */ -+#cmakedefine FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR @FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR@ -+ -+/* Define if a drive letter prefix denotes a relative path if it is not -+ followed by a file name component separator. */ -+#cmakedefine FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE -+ -+/* Define to 1 if realpath() can malloc memory, always gives an absolute path, -+ and handles trailing slash correctly. */ -+#cmakedefine FUNC_REALPATH_WORKS -+ -+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending -+ whether the gnulib module canonicalize-lgpl shall be considered present. */ -+#cmakedefine GNULIB_CANONICALIZE_LGPL -+ -+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending -+ whether the gnulib module fwriteerror shall be considered present. */ -+#cmakedefine GNULIB_FWRITEERROR -+ -+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending -+ whether the gnulib module sigpipe shall be considered present. */ -+#cmakedefine GNULIB_SIGPIPE -+ -+/* Define to 1 when the gnulib module canonicalize_file_name should be tested. -+ */ -+#cmakedefine GNULIB_TEST_CANONICALIZE_FILE_NAME -+ -+/* Define to 1 when the gnulib module environ should be tested. */ -+#cmakedefine GNULIB_TEST_ENVIRON -+ -+/* Define to 1 when the gnulib module getopt-gnu should be tested. */ -+#cmakedefine GNULIB_TEST_GETOPT_GNU -+ -+/* Define to 1 when the gnulib module lstat should be tested. */ -+#cmakedefine GNULIB_TEST_LSTAT -+ -+/* Define to 1 when the gnulib module malloc-posix should be tested. */ -+#cmakedefine GNULIB_TEST_MALLOC_POSIX -+ -+/* Define to 1 when the gnulib module mbrtowc should be tested. */ -+#cmakedefine GNULIB_TEST_MBRTOWC -+ -+/* Define to 1 when the gnulib module mbsinit should be tested. */ -+#cmakedefine GNULIB_TEST_MBSINIT -+ -+/* Define to 1 when the gnulib module mbslen should be tested. */ -+#cmakedefine GNULIB_TEST_MBSLEN -+ -+/* Define to 1 when the gnulib module mbsstr should be tested. */ -+#cmakedefine GNULIB_TEST_MBSSTR -+ -+/* Define to 1 when the gnulib module memchr should be tested. */ -+#cmakedefine GNULIB_TEST_MEMCHR -+ -+/* Define to 1 when the gnulib module readlink should be tested. */ -+#cmakedefine GNULIB_TEST_READLINK -+ -+/* Define to 1 when the gnulib module realpath should be tested. */ -+#cmakedefine GNULIB_TEST_REALPATH -+ -+/* Define to 1 when the gnulib module sigprocmask should be tested. */ -+#cmakedefine GNULIB_TEST_SIGPROCMASK -+ -+/* Define to 1 when the gnulib module stat should be tested. */ -+#cmakedefine GNULIB_TEST_STAT -+ -+/* Define to 1 when the gnulib module strerror should be tested. */ -+#cmakedefine GNULIB_TEST_STRERROR -+ -+/* Define to 1 when the gnulib module strnlen should be tested. */ -+#cmakedefine GNULIB_TEST_STRNLEN -+ -+/* Define to 1 when the gnulib module wcwidth should be tested. */ -+#cmakedefine GNULIB_TEST_WCWIDTH -+ -+/* Define to 1 if you have `alloca', as a function or macro. */ -+#cmakedefine HAVE_ALLOCA 1 -+ -+/* Define to 1 if you have and it should be used (not on Ultrix). -+ */ -+#cmakedefine HAVE_ALLOCA_H 1 -+ -+/* Define to 1 if you have the `argz_count' function. */ -+#cmakedefine HAVE_ARGZ_COUNT 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_ARGZ_H 1 -+ -+/* Define to 1 if you have the `argz_next' function. */ -+#cmakedefine HAVE_ARGZ_NEXT 1 -+ -+/* Define to 1 if you have the `argz_stringify' function. */ -+#cmakedefine HAVE_ARGZ_STRINGIFY 1 -+ -+/* Define to 1 if you have the `asprintf' function. */ -+#cmakedefine HAVE_ASPRINTF 1 -+ -+/* Define to 1 if you have the `atexit' function. */ -+#cmakedefine HAVE_ATEXIT 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_BP_SYM_H 1 -+ -+/* Define to 1 if the compiler understands __builtin_expect. */ -+#cmakedefine HAVE_BUILTIN_EXPECT 1 -+ -+/* Define to 1 if you have the `canonicalize_file_name' function. */ -+#cmakedefine HAVE_CANONICALIZE_FILE_NAME 1 -+ -+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the -+ CoreFoundation framework. */ -+#cmakedefine HAVE_CFLOCALECOPYCURRENT 1 -+ -+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in -+ the CoreFoundation framework. */ -+#cmakedefine HAVE_CFPREFERENCESCOPYAPPVALUE 1 -+ -+/* Define if the GNU dcgettext() function is already present or preinstalled. -+ */ -+#cmakedefine HAVE_DCGETTEXT -+ -+/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_CLEARERR_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_FEOF_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_FERROR_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_FFLUSH_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_FGETS_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_FPUTC_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_FPUTS_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_FREAD_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_FWRITE_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_GETCHAR_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_GETC_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. -+ */ -+#cmakedefine HAVE_DECL_GETENV 1 -+ -+/* Define to 1 if you have the declaration of `getopt_clip', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_GETOPT_CLIP 1 -+ -+/* Define to 1 if you have the declaration of `optreset', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_OPTRESET 1 -+ -+/* Define to 1 if you have the declaration of `program_invocation_name', and -+ to 0 if you don't. */ -+#cmakedefine HAVE_DECL_PROGRAM_INVOCATION_NAME 1 -+ -+/* Define to 1 if you have the declaration of `program_invocation_short_name', -+ and to 0 if you don't. */ -+#cmakedefine HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 1 -+ -+/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if -+ you don't. */ -+#cmakedefine HAVE_DECL_PUTCHAR_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_PUTC_UNLOCKED 1 -+ -+/* Define to 1 if you have the declaration of `strerror', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_STRERROR 1 -+ -+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_STRERROR_R 1 -+ -+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_STRNLEN 1 -+ -+/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL_WCWIDTH 1 -+ -+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL__SNPRINTF 1 -+ -+/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you -+ don't. */ -+#cmakedefine HAVE_DECL__SNWPRINTF 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_DLFCN_H 1 -+ -+/* Define if you have the declaration of environ. */ -+#cmakedefine HAVE_ENVIRON_DECL 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_ERRNO_H 1 -+ -+/* Define to 1 if you have the `fwprintf' function. */ -+#cmakedefine HAVE_FWPRINTF 1 -+ -+/* Define to 1 if you have the `getcwd' function. */ -+#cmakedefine HAVE_GETCWD 1 -+ -+/* Define to 1 if you have the `_getcwd' function. */ -+#cmakedefine HAVE_GETCWD2 1 -+ -+/* Define to 1 if you have the `getegid' function. */ -+#cmakedefine HAVE_GETEGID 1 -+ -+/* Define to 1 if you have the `geteuid' function. */ -+#cmakedefine HAVE_GETEUID 1 -+ -+/* Define to 1 if you have the `getgid' function. */ -+#cmakedefine HAVE_GETGID 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_GETOPT_H 1 -+ -+/* Define to 1 if you have the `getopt_long_only' function. */ -+#cmakedefine HAVE_GETOPT_LONG_ONLY 1 -+ -+/* Define to 1 if you have the `getpagesize' function. */ -+#cmakedefine HAVE_GETPAGESIZE 1 -+ -+/* Define if the GNU gettext() function is already present or preinstalled. */ -+#cmakedefine HAVE_GETTEXT 1 -+ -+/* Define to 1 if you have the `getuid' function. */ -+#cmakedefine HAVE_GETUID 1 -+ -+/* Define if you have the iconv() function and it works. */ -+#cmakedefine HAVE_ICONV @HAVE_ICONV@ -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_ICONV_H 1 -+ -+/* Define if you have the 'intmax_t' type in or . */ -+#cmakedefine HAVE_INTMAX_T 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_INTTYPES_H 1 -+ -+/* Define if exists, doesn't clash with , and -+ declares uintmax_t. */ -+#cmakedefine HAVE_INTTYPES_H_WITH_UINTMAX 1 -+ -+/* Define to 1 if you have the `iswblank' function. */ -+#cmakedefine HAVE_ISWBLANK 1 -+ -+/* Define to 1 if you have the `iswcntrl' function. */ -+#cmakedefine HAVE_ISWCNTRL 1 -+ -+/* Define if you have and nl_langinfo(CODESET). */ -+#cmakedefine HAVE_LANGINFO_CODESET -+ -+/* Define if your file defines LC_MESSAGES. */ -+#cmakedefine HAVE_LC_MESSAGES -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_LIMITS_H 1 -+ -+/* Define to 1 if the system has the type `long long int'. */ -+#cmakedefine HAVE_LONG_LONG_INT 1 -+ -+/* Define to 1 if you have the `lstat' function. */ -+#cmakedefine HAVE_LSTAT 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_MACH_O_DYLD_H 1 -+ -+/* Define if the 'malloc' function is POSIX compliant. */ -+#cmakedefine HAVE_MALLOC_POSIX -+ -+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including -+ config.h and . */ -+#cmakedefine HAVE_MAP_ANONYMOUS 1 -+ -+/* Define to 1 if you have the `mbrtowc' function. */ -+#cmakedefine HAVE_MBRTOWC 1 -+ -+/* Define to 1 if you have the `mbsinit' function. */ -+#cmakedefine HAVE_MBSINIT 1 -+ -+/* Define to 1 if you have the `mbslen' function. */ -+#cmakedefine HAVE_MBSLEN 1 -+ -+/* Define to 1 if declares mbstate_t. */ -+#cmakedefine HAVE_MBSTATE_T 1 -+ -+/* Define to 1 if you have the `memchr' function. */ -+#cmakedefine HAVE_MEMCHR 1 -+ -+/* Define to 1 if you have the `memmove' function. */ -+#cmakedefine HAVE_MEMMOVE 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_MEMORY_H 1 -+ -+/* Define to 1 if you have the `mempcpy' function. */ -+#cmakedefine HAVE_MEMPCPY 1 -+ -+/* Define to 1 if you have a working `mmap' system call. */ -+#cmakedefine HAVE_MMAP 1 -+ -+/* Define to 1 if you have the `mprotect' function. */ -+#cmakedefine HAVE_MPROTECT 1 -+ -+/* Define to 1 if you have the `munmap' function. */ -+#cmakedefine HAVE_MUNMAP 1 -+ -+/* Define to 1 if you have the `newlocale' function. */ -+#cmakedefine HAVE_NEWLOCALE 1 -+ -+/* Define to 1 if you have the `pathconf' function. */ -+#cmakedefine HAVE_PATHCONF 1 -+ -+/* Define if your printf() function supports format strings with positions. */ -+#cmakedefine HAVE_POSIX_PRINTF -+ -+/* Define if the defines PTHREAD_MUTEX_RECURSIVE. */ -+#cmakedefine HAVE_PTHREAD_MUTEX_RECURSIVE -+ -+/* Define if the POSIX multithreading library has read/write locks. */ -+#cmakedefine HAVE_PTHREAD_RWLOCK -+ -+/* Define to 1 if you have the `putenv' function. */ -+#cmakedefine HAVE_PUTENV 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_RANDOM_H 1 -+ -+/* Define to 1 if atoll is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_ATOLL 1 -+ -+/* Define to 1 if btowc is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_BTOWC 1 -+ -+/* Define to 1 if canonicalize_file_name is declared even after undefining -+ macros. */ -+#cmakedefine HAVE_RAW_DECL_CANONICALIZE_FILE_NAME 1 -+ -+/* Define to 1 if chown is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_CHOWN 1 -+ -+/* Define to 1 if dprintf is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_DPRINTF 1 -+ -+/* Define to 1 if dup2 is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_DUP2 1 -+ -+/* Define to 1 if dup3 is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_DUP3 1 -+ -+/* Define to 1 if endusershell is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_ENDUSERSHELL 1 -+ -+/* Define to 1 if environ is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_ENVIRON 1 -+ -+/* Define to 1 if euidaccess is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_EUIDACCESS 1 -+ -+/* Define to 1 if faccessat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FACCESSAT 1 -+ -+/* Define to 1 if fchdir is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FCHDIR 1 -+ -+/* Define to 1 if fchmodat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FCHMODAT 1 -+ -+/* Define to 1 if fchownat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FCHOWNAT 1 -+ -+/* Define to 1 if fpurge is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FPURGE 1 -+ -+/* Define to 1 if fseeko is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FSEEKO 1 -+ -+/* Define to 1 if fstatat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FSTATAT 1 -+ -+/* Define to 1 if fsync is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FSYNC 1 -+ -+/* Define to 1 if ftello is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FTELLO 1 -+ -+/* Define to 1 if ftruncate is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FTRUNCATE 1 -+ -+/* Define to 1 if futimens is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_FUTIMENS 1 -+ -+/* Define to 1 if getcwd is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETCWD 1 -+ -+/* Define to 1 if getdelim is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETDELIM 1 -+ -+/* Define to 1 if getdomainname is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETDOMAINNAME 1 -+ -+/* Define to 1 if getdtablesize is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETDTABLESIZE 1 -+ -+/* Define to 1 if getgroups is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETGROUPS 1 -+ -+/* Define to 1 if gethostname is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETHOSTNAME 1 -+ -+/* Define to 1 if getline is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETLINE 1 -+ -+/* Define to 1 if getloadavg is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETLOADAVG 1 -+ -+/* Define to 1 if getlogin is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETLOGIN 1 -+ -+/* Define to 1 if getlogin_r is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETLOGIN_R 1 -+ -+/* Define to 1 if getpagesize is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETPAGESIZE 1 -+ -+/* Define to 1 if getsubopt is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETSUBOPT 1 -+ -+/* Define to 1 if getusershell is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GETUSERSHELL 1 -+ -+/* Define to 1 if grantpt is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_GRANTPT 1 -+ -+/* Define to 1 if initstat_r is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_INITSTAT_R 1 -+ -+/* Define to 1 if lchmod is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_LCHMOD -+ -+/* Define to 1 if lchown is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_LCHOWN -+ -+/* Define to 1 if link is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_LINK -+ -+/* Define to 1 if linkat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_LINKAT -+ -+/* Define to 1 if lseek is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_LSEEK -+ -+/* Define to 1 if lstat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_LSTAT -+ -+/* Define to 1 if mbrlen is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MBRLEN -+ -+/* Define to 1 if mbrtowc is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MBRTOWC -+ -+/* Define to 1 if mbsinit is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MBSINIT -+ -+/* Define to 1 if mbsnrtowcs is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MBSNRTOWCS -+ -+/* Define to 1 if mbsrtowcs is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MBSRTOWCS -+ -+/* Define to 1 if memmem is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MEMMEM -+ -+/* Define to 1 if mempcpy is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MEMPCPY -+ -+/* Define to 1 if memrchr is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MEMRCHR -+ -+/* Define to 1 if mkdirat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKDIRAT -+ -+/* Define to 1 if mkdtemp is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKDTEMP -+ -+/* Define to 1 if mkfifo is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKFIFO -+ -+/* Define to 1 if mkfifoat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKFIFOAT -+ -+/* Define to 1 if mknod is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKNOD -+ -+/* Define to 1 if mknodat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKNODAT -+ -+/* Define to 1 if mkostemp is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKOSTEMP -+ -+/* Define to 1 if mkostemps is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKOSTEMPS -+ -+/* Define to 1 if mkstemp is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKSTEMP -+ -+/* Define to 1 if mkstemps is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_MKSTEMPS -+ -+/* Define to 1 if pipe2 is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_PIPE2 -+ -+/* Define to 1 if popen is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_POPEN -+ -+/* Define to 1 if pread is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_PREAD -+ -+/* Define to 1 if ptsname is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_PTSNAME -+ -+/* Define to 1 if pwrite is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_PWRITE -+ -+/* Define to 1 if random_r is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_RANDOM_R -+ -+/* Define to 1 if rawmemchr is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_RAWMEMCHR -+ -+/* Define to 1 if readlink is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_READLINK -+ -+/* Define to 1 if readlinkat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_READLINKAT -+ -+/* Define to 1 if realpath is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_REALPATH -+ -+/* Define to 1 if renameat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_RENAMEAT -+ -+/* Define to 1 if rmdir is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_RMDIR -+ -+/* Define to 1 if rpmatch is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_RPMATCH -+ -+/* Define to 1 if setenv is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SETENV -+ -+/* Define to 1 if setstate_r is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SETSTATE_R -+ -+/* Define to 1 if setusershell is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SETUSERSHELL -+ -+/* Define to 1 if sigaction is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGACTION -+ -+/* Define to 1 if sigaddset is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGADDSET -+ -+/* Define to 1 if sigdelset is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGDELSET -+ -+/* Define to 1 if sigemptyset is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGEMPTYSET -+ -+/* Define to 1 if sigfillset is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGFILLSET -+ -+/* Define to 1 if sigismember is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGISMEMBER -+ -+/* Define to 1 if sigpending is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGPENDING -+ -+/* Define to 1 if sigprocmask is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SIGPROCMASK -+ -+/* Define to 1 if sleep is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SLEEP -+ -+/* Define to 1 if snprintf is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SNPRINTF -+ -+/* Define to 1 if srandom_r is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SRANDOM_R -+ -+/* Define to 1 if stat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STAT -+ -+/* Define to 1 if stpcpy is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STPCPY -+ -+/* Define to 1 if stpncpy is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STPNCPY -+ -+/* Define to 1 if strcasestr is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRCASESTR -+ -+/* Define to 1 if strchrnul is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRCHRNUL -+ -+/* Define to 1 if strdup is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRDUP -+ -+/* Define to 1 if strncat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRNCAT -+ -+/* Define to 1 if strndup is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRNDUP -+ -+/* Define to 1 if strnlen is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRNLEN -+ -+/* Define to 1 if strpbrk is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRPBRK -+ -+/* Define to 1 if strsep is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRSEP -+ -+/* Define to 1 if strsignal is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRSIGNAL -+ -+/* Define to 1 if strtod is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRTOD -+ -+/* Define to 1 if strtok_r is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRTOK_R -+ -+/* Define to 1 if strtoll is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRTOLL -+ -+/* Define to 1 if strtoull is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRTOULL -+ -+/* Define to 1 if strverscmp is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_STRVERSCMP -+ -+/* Define to 1 if symlink is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SYMLINK -+ -+/* Define to 1 if symlinkat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_SYMLINKAT -+ -+/* Define to 1 if tmpfile is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_TMPFILE -+ -+/* Define to 1 if ttyname_r is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_TTYNAME_R -+ -+/* Define to 1 if unlink is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_UNLINK -+ -+/* Define to 1 if unlinkat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_UNLINKAT -+ -+/* Define to 1 if unlockpt is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_UNLOCKPT -+ -+/* Define to 1 if unsetenv is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_UNSETENV -+ -+/* Define to 1 if usleep is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_USLEEP -+ -+/* Define to 1 if utimensat is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_UTIMENSAT -+ -+/* Define to 1 if vdprintf is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_VDPRINTF -+ -+/* Define to 1 if vsnprintf is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_VSNPRINTF -+ -+/* Define to 1 if wcrtomb is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_WCRTOMB -+ -+/* Define to 1 if wcsnrtombs is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_WCSNRTOMBS -+ -+/* Define to 1 if wcsrtombs is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_WCSRTOMBS -+ -+/* Define to 1 if wctob is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_WCTOB -+ -+/* Define to 1 if wcwidth is declared even after undefining macros. */ -+#cmakedefine HAVE_RAW_DECL_WCWIDTH -+ -+/* Define to 1 if you have the `readlink' function. */ -+#cmakedefine HAVE_READLINK 1 -+ -+/* Define to 1 if you have the `realpath' function. */ -+#cmakedefine HAVE_REALPATH 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SEARCH_H 1 -+ -+/* Define to 1 if you have the `setenv' function. */ -+#cmakedefine HAVE_SETENV 1 -+ -+/* Define to 1 if you have the `setlocale' function. */ -+#cmakedefine HAVE_SETLOCALE 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SIGNAL_H 1 -+ -+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */ -+#cmakedefine HAVE_SIGNED_SIG_ATOMIC_T 1 -+ -+/* Define to 1 if 'wchar_t' is a signed integer type. */ -+#cmakedefine HAVE_SIGNED_WCHAR_T 1 -+ -+/* Define to 1 if 'wint_t' is a signed integer type. */ -+#cmakedefine HAVE_SIGNED_WINT_T 1 -+ -+/* Define to 1 if the system has the type `sigset_t'. */ -+#cmakedefine HAVE_SIGSET_T 1 -+ -+/* Define to 1 if you have the `snprintf' function. */ -+#cmakedefine HAVE_SNPRINTF 1 -+ -+/* Define to 1 if stdbool.h conforms to C99. */ -+#cmakedefine HAVE_STDBOOL_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_STDDEF_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_STDINT_H 1 -+ -+/* Define if exists, doesn't clash with , and declares -+ uintmax_t. */ -+#cmakedefine HAVE_STDINT_H_WITH_UINTMAX 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_STDIO_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_STDLIB_H 1 -+ -+/* Define to 1 if you have the `stpcpy' function. */ -+#cmakedefine HAVE_STPCPY 1 -+ -+/* Define to 1 if you have the `strcasecmp' function. */ -+#cmakedefine HAVE_STRCASECMP 1 -+ -+/* Define to 1 if you have the `strdup' function. */ -+#cmakedefine HAVE_STRDUP 1 -+ -+/* Define to 1 if you have the `strerror_r' function. */ -+#cmakedefine HAVE_STRERROR_R 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_STRINGS_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_STRING_H 1 -+ -+/* Define to 1 if you have the `strnlen' function. */ -+#cmakedefine HAVE_STRNLEN 1 -+ -+/* Define to 1 if you have the `strtol' function. */ -+#cmakedefine HAVE_STRTOL 1 -+ -+/* Define to 1 if you have the `strtoul' function. */ -+#cmakedefine HAVE_STRTOUL 1 -+ -+/* Define to 1 if the system has the type `struct random_data'. */ -+#cmakedefine HAVE_STRUCT_RANDOM_DATA 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_BITYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_INTTYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_MMAN_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_PARAM_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_SOCKET_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_STAT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_TIME_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_SYS_TYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_TIME_H 1 -+ -+/* Define to 1 if you have the `tsearch' function. */ -+#cmakedefine HAVE_TSEARCH 1 -+ -+/* Define if you have the 'uintmax_t' type in or . */ -+#cmakedefine HAVE_UINTMAX_T 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_UNISTD_H 1 -+ -+/* Define to 1 if the system has the type `unsigned long long int'. */ -+#cmakedefine HAVE_UNSIGNED_LONG_LONG_INT 1 -+ -+/* Define to 1 if you have the `uselocale' function. */ -+#cmakedefine HAVE_USELOCALE 1 -+ -+/* Define to 1 or 0, depending whether the compiler supports simple visibility -+ declarations. */ -+#cmakedefine HAVE_VISIBILITY 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_WCHAR_H 1 -+ -+/* Define if you have the 'wchar_t' type. */ -+#cmakedefine HAVE_WCHAR_T -+ -+/* Define to 1 if you have the `wcrtomb' function. */ -+#cmakedefine HAVE_WCRTOMB 1 -+ -+/* Define to 1 if you have the `wcslen' function. */ -+#cmakedefine HAVE_WCSLEN 1 -+ -+/* Define to 1 if you have the `wcsnlen' function. */ -+#cmakedefine HAVE_WCSNLEN 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_WCTYPE_H 1 -+ -+/* Define to 1 if you have the `wcwidth' function. */ -+#cmakedefine HAVE_WCWIDTH 1 -+ -+/* Define to 1 if you have the header file. */ -+#cmakedefine HAVE_WINSOCK2_H 1 -+ -+/* Define if you have the 'wint_t' type. */ -+#cmakedefine HAVE_WINT_T -+ -+/* Define to 1 if O_NOATIME works. */ -+#cmakedefine HAVE_WORKING_O_NOATIME 1 -+ -+/* Define to 1 if O_NOFOLLOW works. */ -+#cmakedefine HAVE_WORKING_O_NOFOLLOW 1 -+ -+/* Define to 1 if the system has the type `_Bool'. */ -+#cmakedefine HAVE__BOOL 1 -+ -+/* Define to 1 if you have the `_NSGetExecutablePath' function. */ -+#cmakedefine HAVE__NSGETEXECUTABLEPATH 1 -+ -+/* Define to 1 if you have the `__fsetlocking' function. */ -+#cmakedefine HAVE___FSETLOCKING 1 -+ -+/* Define as const if the declaration of iconv() needs const. */ -+#cmakedefine HAVE_ICONV_CONST @HAVE_ICONV_CONST@ -+ -+/* Define to a symbolic name denoting the flavor of iconv_open() -+ implementation. */ -+#cmakedefine ICONV_FLAVOR -+ -+/* Define to the value of ${prefix}, as a string. */ -+#cmakedefine INSTALLPREFIX -+ -+/* Define if integer division by zero raises signal SIGFPE. */ -+#cmakedefine INTDIV0_RAISES_SIGFPE 1 -+ -+#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR -+# define ISSLASH(C) ((C) == '/' || (C) == '\\') -+#else -+# define ISSLASH(C) ((C) == '/') -+#endif -+ -+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing -+ slash. */ -+#cmakedefine LSTAT_FOLLOWS_SLASHED_SYMLINK 1 -+ -+/* Define to the sub-directory in which libtool stores uninstalled libraries. -+ */ -+#cmakedefine LT_OBJDIR -+ -+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */ -+#cmakedefine MALLOC_0_IS_NONNULL 1 -+ -+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */ -+#cmakedefine MAP_ANONYMOUS -+ -+/* Define if the mbrtowc function has the NULL string argument bug. */ -+#cmakedefine MBRTOWC_NULL_ARG_BUG -+ -+/* Define if the mbrtowc function does not return 0 for a NUL character. */ -+#cmakedefine MBRTOWC_NUL_RETVAL_BUG -+ -+/* Define if the mbrtowc function returns a wrong return value. */ -+#cmakedefine MBRTOWC_RETVAL_BUG -+ -+/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -+#cmakedefine NO_MINUS_C_MINUS_O -+ -+/* Name of package */ -+#cmakedefine PACKAGE -+ -+/* Define to the address where bug reports for this package should be sent. */ -+#cmakedefine PACKAGE_BUGREPORT -+ -+/* Define to the full name of this package. */ -+#cmakedefine PACKAGE_NAME -+ -+/* Define to the full name and version of this package. */ -+#cmakedefine PACKAGE_STRING -+ -+/* Define to the one symbol short name of this package. */ -+#cmakedefine PACKAGE_TARNAME -+ -+/* Define to the home page for this package. */ -+#cmakedefine PACKAGE_URL -+ -+/* Define to the version of this package. */ -+#cmakedefine PACKAGE_VERSION -+ -+/* Define if exists and defines unusable PRI* macros. */ -+#cmakedefine PRI_MACROS_BROKEN -+ -+/* Define if the pthread_in_use() detection is hard. */ -+#cmakedefine PTHREAD_IN_USE_DETECTION_HARD -+ -+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type -+ 'ptrdiff_t'. */ -+#cmakedefine PTRDIFF_T_SUFFIX -+ -+/* Define to 1 if readlink fails to recognize a trailing slash. */ -+#cmakedefine READLINK_TRAILING_SLASH_BUG 1 -+ -+/* Define to 1 if stat needs help when passed a directory name with a trailing -+ slash */ -+#cmakedefine REPLACE_FUNC_STAT_DIR 1 -+ -+/* Define to 1 if stat needs help when passed a file name with a trailing -+ slash */ -+#cmakedefine REPLACE_FUNC_STAT_FILE 1 -+ -+/* Define this to 1 if strerror is broken. */ -+#cmakedefine REPLACE_STRERROR 1 -+ -+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type -+ 'sig_atomic_t'. */ -+#cmakedefine SIG_ATOMIC_T_SUFFIX -+ -+/* Define as the maximum value of type 'size_t', if the system doesn't define -+ it. */ -+#ifndef SIZE_MAX -+# undef SIZE_MAX -+#endif -+ -+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type -+ 'size_t'. */ -+#cmakedefine SIZE_T_SUFFIX -+ -+/* If using the C implementation of alloca, define if you know the -+ direction of stack growth for your system; otherwise it will be -+ automatically deduced at runtime. -+ STACK_DIRECTION > 0 => grows toward higher addresses -+ STACK_DIRECTION < 0 => grows toward lower addresses -+ STACK_DIRECTION = 0 => direction of growth unknown */ -+#cmakedefine STACK_DIRECTION -+ -+/* Define to 1 if the `S_IS*' macros in do not work properly. */ -+#cmakedefine STAT_MACROS_BROKEN -+ -+/* Define to 1 if you have the ANSI C header files. */ -+#cmakedefine STDC_HEADERS -+ -+/* Define to 1 if strerror_r returns char *. */ -+#cmakedefine STRERROR_R_CHAR_P -+ -+/* Define if the POSIX multithreading library can be used. */ -+#cmakedefine USE_POSIX_THREADS -+ -+/* Define if references to the POSIX multithreading library should be made -+ weak. */ -+#cmakedefine USE_POSIX_THREADS_WEAK -+ -+/* Define if the GNU Pth multithreading library can be used. */ -+#cmakedefine USE_PTH_THREADS -+ -+/* Define if references to the GNU Pth multithreading library should be made -+ weak. */ -+#cmakedefine USE_PTH_THREADS_WEAK -+ -+/* Define if the old Solaris multithreading library can be used. */ -+#cmakedefine USE_SOLARIS_THREADS -+ -+/* Define if references to the old Solaris multithreading library should be -+ made weak. */ -+#cmakedefine USE_SOLARIS_THREADS_WEAK -+ -+/* Define to 1 if you want getc etc. to use unlocked I/O if available. -+ Unlocked I/O can improve performance in unithreaded apps, but it is not -+ safe for multithreaded apps. */ -+#cmakedefine USE_UNLOCKED_IO -+ -+/* Define if the Win32 multithreading API can be used. */ -+#cmakedefine USE_WIN32_THREADS -+ -+/* Version number of package */ -+#cmakedefine VERSION -+ -+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type -+ 'wchar_t'. */ -+#cmakedefine WCHAR_T_SUFFIX -+ -+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type -+ 'wint_t'. */ -+#cmakedefine WINT_T_SUFFIX -+ -+/* Define to 1 if on MINIX. */ -+#cmakedefine _MINIX -+ -+/* Define to 2 if the system does not provide POSIX.1 features except with -+ this defined. */ -+#cmakedefine _POSIX_1_SOURCE -+ -+/* Define to 1 if you need to in order for `stat' and other things to work. */ -+#cmakedefine _POSIX_SOURCE -+ -+/* Define to 500 only on HP-UX. */ -+#cmakedefine _XOPEN_SOURCE -+ -+/* Enable extensions on AIX 3, Interix. */ -+#ifndef _ALL_SOURCE -+# undef _ALL_SOURCE -+#endif -+/* Enable GNU extensions on systems that have them. */ -+#ifndef _GNU_SOURCE -+# undef _GNU_SOURCE -+#endif -+/* Enable threading extensions on Solaris. */ -+#ifndef _POSIX_PTHREAD_SEMANTICS -+# undef _POSIX_PTHREAD_SEMANTICS -+#endif -+/* Enable extensions on HP NonStop. */ -+#ifndef _TANDEM_SOURCE -+# undef _TANDEM_SOURCE -+#endif -+/* Enable general extensions on Solaris. */ -+#ifndef __EXTENSIONS__ -+# undef __EXTENSIONS__ -+#endif -+ -+ -+/* Define to rpl_ if the getopt replacement functions and variables should be -+ used. */ -+#cmakedefine __GETOPT_PREFIX -+ -+/* Define to `int' if doesn't define. */ -+#cmakedefine gid_t -+ -+/* Define to `__inline__' or `__inline' if that's what the C compiler -+ calls it, or to nothing if 'inline' is not supported under any name. */ -+#ifndef __cplusplus -+#cmakedefine inline -+#endif -+ -+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports -+ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of -+ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. -+ __APPLE__ && __MACH__ test for MacOS X. -+ __APPLE_CC__ tests for the Apple compiler and its version. -+ __STDC_VERSION__ tests for the C99 mode. */ -+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ -+# define __GNUC_STDC_INLINE__ 1 -+#endif -+ -+/* Define to a type if does not define. */ -+#cmakedefine mbstate_t -+ -+/* Define to the type of st_nlink in struct stat, or a supertype. */ -+#cmakedefine nlink_t -+ -+/* Define as the type of the result of subtracting two pointers, if the system -+ doesn't define it. */ -+#cmakedefine ptrdiff_t -+ -+/* Define to the equivalent of the C99 'restrict' keyword, or to -+ nothing if this is not supported. Do not define if restrict is -+ supported directly. */ -+#cmakedefine restrict -+/* Work around a bug in Sun C++: it does not support _Restrict or -+ __restrict__, even though the corresponding Sun C compiler ends up with -+ "#define restrict _Restrict" or "#define restrict __restrict__" in the -+ previous line. Perhaps some future version of Sun C++ will work with -+ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ -+#if defined __SUNPRO_CC && !defined __RESTRICT -+# define _Restrict -+# define __restrict__ -+#endif -+ -+/* Define to `unsigned int' if does not define. */ -+#cmakedefine size_t -+ -+/* Define as a signed type of the same size as size_t. */ -+#cmakedefine ssize_t -+ -+/* Define to `int' if doesn't define. */ -+#cmakedefine uid_t -+ -+/* Define to unsigned long or unsigned long long if and -+ don't define. */ -+#cmakedefine uintmax_t @uintmax_t@ -+#cmakedefine intmax_t @intmax_t@ -+ -+/* Define as a marker that can be attached to declarations that might not -+ be used. This helps to reduce warnings, such as from -+ GCC -Wunused-parameter. */ -+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) -+# define _GL_UNUSED __attribute__ ((__unused__)) -+#else -+# define _GL_UNUSED -+#endif -+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name -+ is a misnomer outside of parameter lists. */ -+#define _UNUSED_PARAMETER_ _GL_UNUSED -+ -+ -+ -+#define __libc_lock_t gl_lock_t -+#define __libc_lock_define gl_lock_define -+#define __libc_lock_define_initialized gl_lock_define_initialized -+#define __libc_lock_init gl_lock_init -+#define __libc_lock_lock gl_lock_lock -+#define __libc_lock_unlock gl_lock_unlock -+#define __libc_lock_recursive_t gl_recursive_lock_t -+#define __libc_lock_define_recursive gl_recursive_lock_define -+#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized -+#define __libc_lock_init_recursive gl_recursive_lock_init -+#define __libc_lock_lock_recursive gl_recursive_lock_lock -+#define __libc_lock_unlock_recursive gl_recursive_lock_unlock -+#define glthread_in_use libintl_thread_in_use -+#define glthread_lock_init_func libintl_lock_init_func -+#define glthread_lock_lock_func libintl_lock_lock_func -+#define glthread_lock_unlock_func libintl_lock_unlock_func -+#define glthread_lock_destroy_func libintl_lock_destroy_func -+#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded -+#define glthread_rwlock_init_func libintl_rwlock_init_func -+#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded -+#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func -+#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded -+#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func -+#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded -+#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func -+#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded -+#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func -+#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded -+#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func -+#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded -+#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func -+#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded -+#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func -+#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded -+#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func -+#define glthread_once_func libintl_once_func -+#define glthread_once_singlethreaded libintl_once_singlethreaded -+#define glthread_once_multithreaded libintl_once_multithreaded -+ -+/* On Windows, variables that may be in a DLL must be marked specially. */ -+#if (defined _MSC_VER && defined _DLL) && !defined IN_RELOCWRAPPER -+# define DLL_VARIABLE __declspec (dllimport) -+#else -+# define DLL_VARIABLE -+#endif -+ -+/* Extra OS/2 (emx+gcc) defines. */ -+#ifdef __EMX__ -+# include "intl/os2compat.h" -+#endif -+ -+#ifdef _MSC_VER -+#define inline __inline -+#endif -+ -+#ifdef HAVE_ICONV_CONST -+#define ICONV_CONST const -+#else -+#define ICONV_CONST -+#endif -\ Kein Zeilenumbruch am Dateiende. -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/ConfigureChecks.cmake gettext-0.18/gettext-runtime/ConfigureChecks.cmake ---- gettext-0.18.orig/gettext-runtime/ConfigureChecks.cmake 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/gettext-runtime/ConfigureChecks.cmake 2013-04-24 12:57:08.534074400 +0200 -@@ -0,0 +1,161 @@ -+include(CheckFunctionExists) -+include(CheckIncludeFile) -+include(CheckTypeSize) -+ -+check_include_file("argz.h" HAVE_ARGZ_H) -+CHECK_INCLUDE_FILE("alloca.h" HAVE_ALLOCA_H) -+CHECK_INCLUDE_FILE("bp-sym.h" HAVE_BP_SYM_H) -+CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H) -+CHECK_INCLUDE_FILE("direct.h" HAVE_DIRECT_H) -+CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H) -+CHECK_INCLUDE_FILE("getopt.h" HAVE_GETOPT_H) -+CHECK_INCLUDE_FILE("iconv.h" HAVE_ICONV_H) -+CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H) -+CHECK_INCLUDE_FILE("limits.h" HAVE_LIMITS_H) -+CHECK_INCLUDE_FILE("mach-o/dyld.h" HAVE_MACH_O_DYLD_H) -+CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H) -+CHECK_INCLUDE_FILE("random.h" HAVE_RANDOM_H) -+CHECK_INCLUDE_FILE("search.h" HAVE_SEARCH_H) -+CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H) -+CHECK_INCLUDE_FILE("stddef.h" HAVE_STDDEF_H) -+CHECK_INCLUDE_FILE("stdint.h" HAVE_STDINT_H) -+CHECK_INCLUDE_FILE("stdio.h" HAVE_STDIO_H) -+CHECK_INCLUDE_FILE("stdlib.h" HAVE_STDLIB_H) -+CHECK_INCLUDE_FILE("strings.h" HAVE_STRINGS_H) -+CHECK_INCLUDE_FILE("string.h" HAVE_STRING_H) -+CHECK_INCLUDE_FILE("sys/bitypes.h" HAVE_SYS_BITYPES_H) -+CHECK_INCLUDE_FILE("sys/inttypes.h" HAVE_SYS_INTTYPES_H) -+CHECK_INCLUDE_FILE("sys/mman.h" HAVE_SYS_MMAN_H) -+CHECK_INCLUDE_FILE("sys/param.h" HAVE_SYS_PARAM_H) -+CHECK_INCLUDE_FILE("sys/socket.h" HAVE_SYS_SOCKET_H) -+CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) -+CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H) -+CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H) -+CHECK_INCLUDE_FILE("time.h" HAVE_TIME_H) -+CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H) -+CHECK_INCLUDE_FILE("wchar.h" HAVE_WCHAR_H) -+CHECK_INCLUDE_FILE("wctype.h" HAVE_WCTYPE_H) -+CHECK_INCLUDE_FILE("winsock2.h" HAVE_WINSOCK2_H) -+ -+ -+CHECK_FUNCTION_EXISTS("argz_count" HAVE_ARGZ_COUNT) -+CHECK_FUNCTION_EXISTS("argz_next" HAVE_ARGZ_NEXT) -+CHECK_FUNCTION_EXISTS("argz_stringify" HAVE_ARGZ_STRINGIFY) -+CHECK_FUNCTION_EXISTS("alloca" HAVE_ALLOCA) -+if(MSVC OR (WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")) -+ set(HAVE_ALLOCA 1) -+endif(MSVC OR (WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")) -+CHECK_FUNCTION_EXISTS("asprintf" HAVE_ASPRINTF) -+CHECK_FUNCTION_EXISTS("atexit" HAVE_ATEXIT) -+CHECK_FUNCTION_EXISTS("canonicalize_file_name" HAVE_CANONICALIZE_FILE_NAME) -+CHECK_FUNCTION_EXISTS("CFLocaleCopyCurrent" HAVE_CFLOCALECOPYCURRENT) -+CHECK_FUNCTION_EXISTS("fwprintf" HAVE_FWPRINTF) -+CHECK_FUNCTION_EXISTS("getcwd" HAVE_GETCWD) -+CHECK_FUNCTION_EXISTS("_getcwd" HAVE_GETCWD2) -+CHECK_FUNCTION_EXISTS("getegid" HAVE_GETEGID) -+CHECK_FUNCTION_EXISTS("geteuid" HAVE_GETEUID) -+CHECK_FUNCTION_EXISTS("getgid" HAVE_GETGID) -+CHECK_FUNCTION_EXISTS("getopt_long_only" HAVE_GETOPT_LONG_ONLY) -+CHECK_FUNCTION_EXISTS("getpagesize" HAVE_GETPAGESIZE) -+CHECK_FUNCTION_EXISTS("gettext" HAVE_GETTEXT) -+CHECK_FUNCTION_EXISTS("getuid" HAVE_GETUID) -+CHECK_FUNCTION_EXISTS("iconv" HAVE_ICONV) -+CHECK_FUNCTION_EXISTS("iswblank" HAVE_ISWBLANK) -+CHECK_FUNCTION_EXISTS("iswcntrl" HAVE_ISWCNTRL) -+CHECK_FUNCTION_EXISTS("lstat" HAVE_LSTAT) -+CHECK_FUNCTION_EXISTS("mbrtowc" HAVE_MBRTOWC) -+CHECK_FUNCTION_EXISTS("mbsinit" HAVE_MBSINIT) -+CHECK_FUNCTION_EXISTS("mbslen" HAVE_MBSLEN) -+CHECK_FUNCTION_EXISTS("memchr" HAVE_MEMCHR) -+CHECK_FUNCTION_EXISTS("memmove" HAVE_MEMMOVE) -+CHECK_FUNCTION_EXISTS("mempcpy" HAVE_MEMPCPY) -+CHECK_FUNCTION_EXISTS("mmap" HAVE_MMAP) -+CHECK_FUNCTION_EXISTS("mprotect" HAVE_MPROTECT) -+CHECK_FUNCTION_EXISTS("munmap" HAVE_MUNMAP) -+CHECK_FUNCTION_EXISTS("newlocale" HAVE_NEWLOCALE) -+CHECK_FUNCTION_EXISTS("pathconf" HAVE_PATHCONF) -+CHECK_FUNCTION_EXISTS("putenv" HAVE_PUTENV) -+CHECK_FUNCTION_EXISTS("readlink" HAVE_READLINK) -+CHECK_FUNCTION_EXISTS("realpath" HAVE_REALPATH) -+CHECK_FUNCTION_EXISTS("setenv" HAVE_SETENV) -+CHECK_FUNCTION_EXISTS("setlocale" HAVE_SETLOCALE) -+CHECK_FUNCTION_EXISTS("snprintf" HAVE_SNPRINTF) -+CHECK_FUNCTION_EXISTS("stpcpy" HAVE_STPCPY) -+CHECK_FUNCTION_EXISTS("strcasecmp" HAVE_STRCASECMP) -+CHECK_FUNCTION_EXISTS("strdup" HAVE_STRDUP) -+CHECK_FUNCTION_EXISTS("strerror_r" HAVE_STRERROR_R) -+CHECK_FUNCTION_EXISTS("strnlen" HAVE_STRNLEN) -+CHECK_FUNCTION_EXISTS("strtol" HAVE_STRTOL) -+CHECK_FUNCTION_EXISTS("strtoul" HAVE_STRTOUL) -+CHECK_FUNCTION_EXISTS("tsearch" HAVE_TSEARCH) -+CHECK_FUNCTION_EXISTS("uselocale" HAVE_USELOCALE) -+CHECK_FUNCTION_EXISTS("wcrtomb" HAVE_WCRTOMB) -+CHECK_FUNCTION_EXISTS("wcslen" HAVE_WCSLEN) -+CHECK_FUNCTION_EXISTS("wcsnlen" HAVE_WCSNLEN) -+CHECK_FUNCTION_EXISTS("wcwidth" HAVE_WCWIDTH) -+CHECK_FUNCTION_EXISTS("_NSGetExecutablePath" HAVE__NSGETEXECUTABLEPATH) -+CHECK_FUNCTION_EXISTS("__fsetlocking" HAVE___FSETLOCKING) -+ -+CHECK_FUNCTION_EXISTS("clearerr_unlocked" HAVE_DECL_CLEARERR_UNLOCKED) -+CHECK_FUNCTION_EXISTS("feof_unlocked" HAVE_DECL_FEOF_UNLOCKED) -+CHECK_FUNCTION_EXISTS("ferror_unlocked" HAVE_DECL_FERROR_UNLOCKED) -+CHECK_FUNCTION_EXISTS("fflush_unlocked" HAVE_DECL_FFLUSH_UNLOCKED) -+CHECK_FUNCTION_EXISTS("fgets_unlocked" HAVE_DECL_FGETS_UNLOCKED) -+CHECK_FUNCTION_EXISTS("fputc_unlocked" HAVE_DECL_FPUTC_UNLOCKED) -+CHECK_FUNCTION_EXISTS("fputs_unlocked" HAVE_DECL_FPUTS_UNLOCKED) -+CHECK_FUNCTION_EXISTS("fread_unlocked" HAVE_DECL_FREAD_UNLOCKED) -+CHECK_FUNCTION_EXISTS("fwrite_unlocked" HAVE_DECL_FWRITE_UNLOCKED) -+CHECK_FUNCTION_EXISTS("getchar_unlocked" HAVE_DECL_GETCHAR_UNLOCKED) -+CHECK_FUNCTION_EXISTS("getc_unlocked" HAVE_DECL_GETC_UNLOCKED) -+CHECK_FUNCTION_EXISTS("getenv" HAVE_DECL_GETENV) -+CHECK_FUNCTION_EXISTS("getopt_clip" HAVE_DECL_GETOPT_CLIP) -+CHECK_FUNCTION_EXISTS("optreset" HAVE_DECL_OPTRESET) -+CHECK_FUNCTION_EXISTS("program_invocation_name" HAVE_DECL_PROGRAM_INVOCATION_NAME) -+CHECK_FUNCTION_EXISTS("program_invocation_short_name" HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME) -+CHECK_FUNCTION_EXISTS("putchar_unlocked" HAVE_DECL_PUTCHAR_UNLOCKED) -+CHECK_FUNCTION_EXISTS("putc_unlocked" HAVE_DECL_PUTC_UNLOCKED) -+CHECK_FUNCTION_EXISTS("strerror_r" HAVE_DECL_STRERROR_R) -+CHECK_FUNCTION_EXISTS("strnlen" HAVE_DECL_STRNLEN) -+CHECK_FUNCTION_EXISTS("wcwidth" HAVE_DECL_WCWIDTH) -+CHECK_FUNCTION_EXISTS("_snprintf" HAVE_DECL__SNPRINTF) -+CHECK_FUNCTION_EXISTS("_snwprintf" HAVE_DECL__SNWPRINTF) -+CHECK_FUNCTION_EXISTS("strerror" HAVE_DECL_STRERROR) -+ -+CHECK_TYPE_SIZE("ptrdiff_t" BITSIZEOF_PTRDIFF_T) -+CHECK_TYPE_SIZE("sig_atomic_t" BITSIZEOF_SIG_ATOMIC_T) -+CHECK_TYPE_SIZE("size_t" BITSIZEOF_SIZE_T) -+CHECK_TYPE_SIZE("wchar_t" BITSIZEOF_WCHAR_T) -+CHECK_TYPE_SIZE("wint_t" BITSIZEOF_WINT_T) -+ -+CHECK_TYPE_SIZE("intmax_t" INTMAX_T) -+ -+CHECK_TYPE_SIZE("uintmax_t" UINTMAX_T) -+if(HAVE_UINTMAX_T) -+set(HAVE_STDINT_H_WITH_UINTMAX true) -+endif(HAVE_UINTMAX_T) -+ -+if(ICONV_SECOND_ARGUMENT_IS_CONST) -+ set(HAVE_ICONV_CONST 1) -+endif(ICONV_SECOND_ARGUMENT_IS_CONST) -+ -+if(NOT HAVE_UINTMAX_T) -+ set(uintmax_t "unsigned __int64") -+endif(NOT HAVE_UINTMAX_T) -+if(NOT HAVE_INTMAX_T) -+ set(intmax_t "__int64") -+endif(NOT HAVE_INTMAX_T) -+ -+if(WINCE) -+ set(INTDIV0_RAISES_SIGFPE 1) -+endif(WINCE) -+ -+if(WIN32) -+ set(FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX 1) -+ set(FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 1) -+else(WIN32) -+ set(FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR 0) -+endif(WIN32) -+ -+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) -+ -+add_definitions(-DHAVE_CONFIG_H -DLIBDIR) -\ Kein Zeilenumbruch am Dateiende. -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/CMakeLists.txt gettext-0.18/gettext-runtime/intl/CMakeLists.txt ---- gettext-0.18.orig/gettext-runtime/intl/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/gettext-runtime/intl/CMakeLists.txt 2013-04-24 12:57:08.536074500 +0200 -@@ -0,0 +1,70 @@ -+cmake_minimum_required(VERSION 2.6) -+set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) -+ -+project(intl) -+ -+set(HAVE_NEWLOCALE 0) -+set(HAVE_POSIX_PRINTF 0) -+set(HAVE_SNPRINTF 0) -+set(HAVE_ASPRINTF 0) -+set(HAVE_WPRINTF 0) -+ -+configure_file(libgnuintl.h.in libgnuintl.h) -+ -+include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) -+ -+set(INTL_SRCS -+ bindtextdom.c -+ dcgettext.c -+ dgettext.c -+ gettext.c -+ finddomain.c -+ hash-string.c -+ loadmsgcat.c -+ localealias.c -+ textdomain.c -+ l10nflist.c -+ explodename.c -+ dcigettext.c -+ dcngettext.c -+ dngettext.c -+ ngettext.c -+ plural-exp.c -+ localcharset.c -+ threadlib.c -+ lock.c -+ relocatable.c -+ langprefs.c -+ localename.c -+ log.c -+ printf.c -+ setlocale.c -+ version.c -+ osdep.c -+ intl-compat.c -+ libintl.rc -+ plural.c -+ intl.def -+) -+ -+add_definitions(-DLOCALE_ALIAS_PATH="") -+add_definitions(-DLOCALEDIR="") -+add_definitions(-DIN_LIBINTL) -+#add_definitions(-DBUILDING_DLL) -+#add_definitions(-DHAVE_VISIBILITY) -+ -+add_library(intl ${LIBRARY_TYPE} ${INTL_SRCS}) -+target_link_libraries(intl ${ICONV_LIBRARIES}) -+if(MSVC OR (WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")) -+set_target_properties(intl PROPERTIES OUTPUT_NAME "libintl") -+endif(MSVC OR (WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")) -+ -+if(WINCE) -+ target_link_libraries(intl ${WCECOMPAT_LIBRARIES}) -+endif(WINCE) -+ -+install(TARGETS intl RUNTIME DESTINATION bin -+ LIBRARY DESTINATION lib -+ ARCHIVE DESTINATION lib) -+ -+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libgnuintl.h DESTINATION include RENAME libintl.h) -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/dcigettext.c gettext-0.18/gettext-runtime/intl/dcigettext.c ---- gettext-0.18.orig/gettext-runtime/intl/dcigettext.c 2009-12-26 14:42:37.000000000 +0100 -+++ gettext-0.18/gettext-runtime/intl/dcigettext.c 2013-04-24 12:57:08.540074700 +0200 -@@ -140,8 +140,12 @@ - # define tfind __tfind - #else - # if !defined HAVE_GETCWD -+# ifndef _WIN32_WCE - char *getwd (); --# define getcwd(buf, max) getwd (buf) -+# define getcwd(buf, max) getwd (buf) -+# else -+# define getcwd _getcwd -+# endif - # else - # if VMS - # define getcwd(buf, max) (getcwd) (buf, max, 0) -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/intl.def gettext-0.18/gettext-runtime/intl/intl.def ---- gettext-0.18.orig/gettext-runtime/intl/intl.def 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/gettext-runtime/intl/intl.def 2013-04-24 12:57:08.543074900 +0200 -@@ -0,0 +1,52 @@ -+LIBRARY libintl.DLL -+EXPORTS -+;_imp___ctype_ptr -+_nl_expand_alias -+_nl_explode_name -+_nl_find_domain -+_nl_find_msg -+_nl_language_preferences_default -+_nl_load_domain -+_nl_locale_name -+_nl_locale_name_default -+_nl_locale_name_environ -+_nl_locale_name_posix -+_nl_locale_name_thread_unsafe -+_nl_log_untranslated -+_nl_make_l10nflist -+_nl_msg_cat_cntr -+_nl_normalize_codeset -+bind_textdomain_codeset -+bindtextdomain -+dcgettext -+dcngettext -+dgettext -+dngettext -+gettext -+gl_locale_name_thread -+libintl_bind_textdomain_codeset -+libintl_bindtextdomain -+libintl_dcgettext -+libintl_dcigettext -+libintl_dcngettext -+libintl_dgettext -+libintl_dngettext -+libintl_gettext -+libintl_gettext_extract_plural -+libintl_gettext_free_exp -+libintl_gettext_germanic_plural -+libintl_gettextparse -+libintl_fprintf -+libintl_hash_string -+libintl_ngettext -+libintl_nl_current_default_domain -+libintl_nl_default_default_domain -+libintl_nl_default_dirname -+libintl_nl_domain_bindings -+;libintl_relocate -+;libintl_set_relocation_prefix -+libintl_setlocale -+libintl_sprintf -+libintl_textdomain -+libintl_version -+locale_charset -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/langprefs.c gettext-0.18/gettext-runtime/intl/langprefs.c ---- gettext-0.18.orig/gettext-runtime/intl/langprefs.c 2009-12-12 16:08:01.000000000 +0100 -+++ gettext-0.18/gettext-runtime/intl/langprefs.c 2013-04-24 12:57:08.546075000 +0200 -@@ -53,6 +53,8 @@ - extern const char *_nl_locale_name_from_win32_LANGID (LANGID langid); - extern const char *_nl_locale_name_from_win32_LCID (LCID lcid); - -+#ifndef _WIN32_WCE -+ - /* Get the preferences list through the MUI APIs. This works on Windows Vista - and newer. */ - static const char * -@@ -205,6 +207,8 @@ - return NULL; - } - -+ -+ - /* Get the system's preference. This can be used as a fallback. */ - static BOOL CALLBACK - ret_first_language (HMODULE h, LPCSTR type, LPCSTR name, WORD lang, LONG_PTR param) -@@ -222,7 +226,7 @@ - ret_first_language, (LONG_PTR)&languages); - return languages; - } -- -+#endif - #endif - - /* Determine the user's language preferences, as a colon separated list of -@@ -324,6 +328,7 @@ - static const char *cached_languages; - static int cache_initialized; - -+#ifndef _WIN32_WCE - /* Activate the new code only when the GETTEXT_MUI environment variable is - set, for the time being, since the new code is not well tested. */ - if (!cache_initialized && getenv ("GETTEXT_MUI") != NULL) -@@ -346,10 +351,21 @@ - cached_languages = languages; - cache_initialized = 1; - } -+#else -+ if (!cache_initialized) -+ { -+ LCID lcid; -+ -+ /* Use native Win32 API locale ID. */ -+ lcid = GetSystemDefaultLCID (); -+ -+ cached_languages = _nl_locale_name_from_win32_LCID(lcid); -+ cache_initialized = 1; -+ } -+#endif - if (cached_languages != NULL) - return cached_languages; - } - #endif -- - return NULL; - } -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/libgnuintl.h.in gettext-0.18/gettext-runtime/intl/libgnuintl.h.in ---- gettext-0.18.orig/gettext-runtime/intl/libgnuintl.h.in 2010-05-09 20:54:29.000000000 +0200 -+++ gettext-0.18/gettext-runtime/intl/libgnuintl.h.in 2013-04-25 00:05:19.617037300 +0200 -@@ -19,6 +19,10 @@ - #ifndef _LIBINTL_H - #define _LIBINTL_H 1 - -+#ifdef _MSC_VER -+#define inline __inline -+#endif -+ - #include - #if (defined __APPLE__ && defined __MACH__) && @HAVE_NEWLOCALE@ - # include -@@ -330,15 +334,15 @@ - #define fprintf libintl_fprintf - extern int fprintf (FILE *, const char *, ...); - #endif --#if !(defined vfprintf && defined _GL_STDIO_H) /* don't override gnulib */ -+#if !(defined vfprintf && defined _GL_STDIO_H || defined __MINGW32__) /* don't override gnulib */ - #undef vfprintf - #define vfprintf libintl_vfprintf - extern int vfprintf (FILE *, const char *, va_list); - #endif - --#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */ -+#if !(defined printf && defined _GL_STDIO_H || defined __MINGW32__) /* don't override gnulib */ - #undef printf --#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ -+#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ - /* Don't break __attribute__((format(printf,M,N))). - This redefinition is only possible because the libc in NetBSD, Cygwin, - mingw does not have a function __printf__. */ -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/libintl.rc gettext-0.18/gettext-runtime/intl/libintl.rc ---- gettext-0.18.orig/gettext-runtime/intl/libintl.rc 2010-05-09 20:54:29.000000000 +0200 -+++ gettext-0.18/gettext-runtime/intl/libintl.rc 2013-04-24 12:57:08.553075400 +0200 -@@ -22,13 +22,13 @@ - VALUE "Comments", "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\0" - VALUE "CompanyName", "Free Software Foundation\0" - VALUE "FileDescription", "LGPLed libintl for Windows NT/2000/XP/Vista/7 and Windows 95/98/ME\0" -- VALUE "FileVersion", PACKAGE_VERSION_STRING "\0" -+ VALUE "FileVersion", "0.18\0" - VALUE "InternalName", "intl.dll\0" - VALUE "LegalCopyright", "Copyright (C) 1995-2010\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "intl.dll\0" - VALUE "ProductName", "libintl: accessing NLS message catalogs\0" -- VALUE "ProductVersion", PACKAGE_VERSION_STRING "\0" -+ VALUE "ProductVersion", "0.18\0" - END - END - BLOCK "VarFileInfo" -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/loadmsgcat.c gettext-0.18/gettext-runtime/intl/loadmsgcat.c ---- gettext-0.18.orig/gettext-runtime/intl/loadmsgcat.c 2009-06-28 21:44:04.000000000 +0200 -+++ gettext-0.18/gettext-runtime/intl/loadmsgcat.c 2013-04-24 12:57:08.557075700 +0200 -@@ -33,6 +33,11 @@ - #include - #include - -+#ifdef _WIN32_WCE -+# include -+#define open(a,b) _open(a,b,0) -+#endif -+ - #ifdef __GNUC__ - # undef alloca - # define alloca __builtin_alloca -@@ -40,7 +45,9 @@ - #else - # ifdef _MSC_VER - # include -+# undef alloca - # define alloca _alloca -+# define HAVE_ALLOCA - # else - # if defined HAVE_ALLOCA_H || defined _LIBC - # include -@@ -499,7 +506,6 @@ - # define O_BINARY 0 - #endif - -- - /* We need a sign, whether a new catalog was loaded, which can be associated - with all translations. This is important if the translations are - cached by one of GCC's features. */ -@@ -782,7 +788,7 @@ - { - __libc_lock_define_initialized_recursive (static, lock) - int fd = -1; -- size_t size; -+ size_t _size; - #ifdef _LIBC - struct stat64 st; - #else -@@ -836,15 +842,15 @@ - #else - __builtin_expect (fstat (fd, &st) != 0, 0) - #endif -- || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) -- || __builtin_expect (size < sizeof (struct mo_file_header), 0)) -+ || __builtin_expect ((_size = (size_t) st.st_size) != st.st_size, 0) -+ || __builtin_expect (_size < sizeof (struct mo_file_header), 0)) - /* Something went wrong. */ - goto out; - - #ifdef HAVE_MMAP - /* Now we are ready to load the file. If mmap() is available we try - this first. If not available or it failed we try to load it. */ -- data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, -+ data = (struct mo_file_header *) mmap (NULL, _size, PROT_READ, - MAP_PRIVATE, fd, 0); - - if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) -@@ -863,11 +869,11 @@ - size_t to_read; - char *read_ptr; - -- data = (struct mo_file_header *) malloc (size); -+ data = (struct mo_file_header *) malloc (_size); - if (data == NULL) - goto out; - -- to_read = size; -+ to_read = _size; - read_ptr = (char *) data; - do - { -@@ -897,7 +903,7 @@ - /* The magic number is wrong: not a message catalog file. */ - #ifdef HAVE_MMAP - if (use_mmap) -- munmap ((caddr_t) data, size); -+ munmap ((caddr_t) data, _size); - else - #endif - free (data); -@@ -911,7 +917,7 @@ - - domain->data = (char *) data; - domain->use_mmap = use_mmap; -- domain->mmap_size = size; -+ domain->mmap_size = _size; - domain->must_swap = data->magic != _MAGIC; - domain->malloced = NULL; - -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/localename.c gettext-0.18/gettext-runtime/intl/localename.c ---- gettext-0.18.orig/gettext-runtime/intl/localename.c 2010-05-09 04:27:13.000000000 +0200 -+++ gettext-0.18/gettext-runtime/intl/localename.c 2013-04-24 12:57:08.561075900 +0200 -@@ -1128,6 +1128,10 @@ - # endif - #endif - -+#ifdef _WIN32_WCE -+#define GetThreadLocale GetUserDefaultLCID -+#endif -+ - - #if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE - /* MacOS X 10.2 or newer */ -@@ -1448,6 +1452,7 @@ - const char * - gl_locale_name_from_win32_LANGID (LANGID langid) - { -+#ifndef _WIN32_WCE - /* Activate the new code only when the GETTEXT_MUI environment variable is - set, for the time being, since the new code is not well tested. */ - if (getenv ("GETTEXT_MUI") != NULL) -@@ -1465,6 +1470,7 @@ - return namebuf; - } - } -+#endif - /* Internet Explorer has an LCID to RFC3066 name mapping stored in - HKEY_CLASSES_ROOT\Mime\Database\Rfc1766. But we better don't use that - since IE's i18n subsystem is known to be inconsistent with the Win32 base -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/os2compat.c gettext-0.18/gettext-runtime/intl/os2compat.c ---- gettext-0.18.orig/gettext-runtime/intl/os2compat.c 2009-06-28 21:44:04.000000000 +0200 -+++ gettext-0.18/gettext-runtime/intl/os2compat.c 2013-04-24 12:57:08.564076100 +0200 -@@ -23,7 +23,9 @@ - - #include - #include -+#ifdef HAVE_SYS_PARAM_H - #include -+#endif - - /* A version of getenv() that works from DLLs */ - extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/printf-parse.c gettext-0.18/gettext-runtime/intl/printf-parse.c ---- gettext-0.18.orig/gettext-runtime/intl/printf-parse.c 2009-12-12 16:08:01.000000000 +0100 -+++ gettext-0.18/gettext-runtime/intl/printf-parse.c 2013-04-24 12:57:08.568076300 +0200 -@@ -75,6 +75,11 @@ - # include "c-ctype.h" - #endif - -+#if defined(_WIN32_WCE) && !defined(_PTRDIFF_T_DEFINED) -+ typedef int ptrdiff_t; -+# define _PTRDIFF_T_DEFINED -+#endif -+ - #ifdef STATIC - STATIC - #endif -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/setlocale.c gettext-0.18/gettext-runtime/intl/setlocale.c ---- gettext-0.18.orig/gettext-runtime/intl/setlocale.c 2009-12-26 04:15:07.000000000 +0100 -+++ gettext-0.18/gettext-runtime/intl/setlocale.c 2013-04-24 12:57:08.571076500 +0200 -@@ -16,6 +16,7 @@ - License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, - USA. */ -+ - - #ifdef HAVE_CONFIG_H - # include -@@ -46,6 +47,9 @@ - - #if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ - -+/* FIXME: In Windwos CE the function setlocale is not defined */ -+# ifndef _WIN32_WCE -+ - # undef setlocale - # undef newlocale - -@@ -816,10 +820,14 @@ - # define setlocale_single setlocale_unixlike - # endif - -+# endif -+ - DLL_EXPORTED - char * - libintl_setlocale (int category, const char *locale) - { -+/* FIXME: In Windwos CE we dont need setlocale */ -+#ifndef _WIN32_WCE - if (locale != NULL && locale[0] == '\0') - { - /* A request to the set the current locale to the default locale. */ -@@ -899,6 +907,8 @@ - } - else - return setlocale_single (category, locale); -+#endif -+ return NULL; - } - - # if HAVE_NEWLOCALE -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/vasnprintf.c gettext-0.18/gettext-runtime/intl/vasnprintf.c ---- gettext-0.18.orig/gettext-runtime/intl/vasnprintf.c 2010-05-09 12:54:20.000000000 +0200 -+++ gettext-0.18/gettext-runtime/intl/vasnprintf.c 2013-04-24 12:57:08.578076900 +0200 -@@ -86,6 +86,10 @@ - # endif - #endif - -+#ifdef _WIN32_WCE -+#include -+#endif -+ - /* Checked size_t computations. */ - #include "xsize.h" - -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/intl/xsize.h gettext-0.18/gettext-runtime/intl/xsize.h ---- gettext-0.18.orig/gettext-runtime/intl/xsize.h 2009-06-28 21:44:04.000000000 +0200 -+++ gettext-0.18/gettext-runtime/intl/xsize.h 2013-04-24 12:57:08.580077000 +0200 -@@ -25,6 +25,9 @@ - - /* Get SIZE_MAX. */ - #include -+#ifdef _WIN32_WCE -+#define SIZE_MAX _UI32_MAX -+#endif - #if HAVE_STDINT_H - # include - #endif -diff -Nru -x '*~' gettext-0.18.orig/gettext-runtime/src/CMakeLists.txt gettext-0.18/gettext-runtime/src/CMakeLists.txt ---- gettext-0.18.orig/gettext-runtime/src/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 -+++ gettext-0.18/gettext-runtime/src/CMakeLists.txt 2013-04-24 12:57:08.583077200 +0200 -@@ -0,0 +1,22 @@ -+cmake_minimum_required(VERSION 2.6) -+set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) -+ -+project(tools) -+ -+set(GETTEXT_SRCS -+ gettext.c -+) -+ -+set(NGETTEXT_SRCS -+ ngettext.c -+) -+ -+set(ENVSUBST_SRCS -+ envsubst.c -+) -+ -+add_executable(gettext ${GETTEXT_SRCS}) -+ -+add_executable(ngettext ${NGETTEXT_SRCS}) -+ -+add_executable(envsubst ${ENVSUBST_SRCS}) diff --git a/win32libs/gettext/gettext-0.19.8.1-gtk-msvc-projects.diff b/win32libs/gettext/gettext-0.19.8.1-gtk-msvc-projects.diff new file mode 100644 index 00000000..186a479c --- /dev/null +++ b/win32libs/gettext/gettext-0.19.8.1-gtk-msvc-projects.diff @@ -0,0 +1,82049 @@ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/alloca.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/alloca.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/alloca.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/alloca.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,70 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Memory allocation on the stack. ++ Copyright (C) 1995, 1999, 2001-2007, 2015-2016 Free Software Foundation, ++ Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++/* When this file is included, it may be preceded only by preprocessor ++ declarations. Thanks to AIX. Therefore we include it right after ++ "config.h", not later. */ ++ ++/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H ++ means there is a real alloca function. */ ++#ifndef _GL_ALLOCA_H ++#define _GL_ALLOCA_H ++ ++/* alloca(N) returns a pointer (void* or char*) to N bytes of memory ++ allocated on the stack, and which will last until the function returns. ++ Use of alloca should be avoided: ++ - inside arguments of function calls - undefined behaviour, ++ - in inline functions - the allocation may actually last until the ++ calling function returns, ++ - for huge N (say, N >= 65536) - you never know how large (or small) ++ the stack is, and when the stack cannot fulfill the memory allocation ++ request, the program just crashes. ++ */ ++ ++#ifndef alloca ++# ifdef __GNUC__ ++# define alloca __builtin_alloca ++# else ++# ifdef _MSC_VER ++# include ++# define alloca _alloca ++# else ++# if HAVE_ALLOCA_H ++# include ++# else ++# ifdef _AIX ++ #pragma alloca ++# else ++# ifdef __hpux /* This section must match that of bison generated files. */ ++# ifdef __cplusplus ++extern "C" void *alloca (unsigned int); ++# else /* not __cplusplus */ ++extern void *alloca (); ++# endif /* not __cplusplus */ ++# else /* not __hpux */ ++# ifndef alloca ++extern char *alloca (); ++# endif ++# endif /* __hpux */ ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#endif /* _GL_ALLOCA_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/errno.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/errno.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/errno.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/errno.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,280 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A POSIX-like . ++ ++ Copyright (C) 2008-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_ERRNO_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(errno.h) ++ ++#ifndef _GL_ERRNO_H ++#define _GL_ERRNO_H ++ ++ ++/* On native Windows platforms, many macros are not defined. */ ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++/* These are the same values as defined by MSVC 10, for interoperability. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 122 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 111 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 121 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 134 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 104 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 132 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 129 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 117 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 106 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 105 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++# ifndef EOWNERDEAD ++# define EOWNERDEAD 133 ++# define GNULIB_defined_EOWNERDEAD 1 ++# endif ++ ++# ifndef ENOTRECOVERABLE ++# define ENOTRECOVERABLE 127 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EINPROGRESS ++# define EINPROGRESS 112 ++# define EALREADY 103 ++# define ENOTSOCK 128 ++# define EDESTADDRREQ 109 ++# define EMSGSIZE 115 ++# define EPROTOTYPE 136 ++# define ENOPROTOOPT 123 ++# define EPROTONOSUPPORT 135 ++# define EOPNOTSUPP 130 ++# define EAFNOSUPPORT 102 ++# define EADDRINUSE 100 ++# define EADDRNOTAVAIL 101 ++# define ENETDOWN 116 ++# define ENETUNREACH 118 ++# define ECONNRESET 108 ++# define ENOBUFS 119 ++# define EISCONN 113 ++# define ENOTCONN 126 ++# define ETIMEDOUT 138 ++# define ECONNREFUSED 107 ++# define ELOOP 114 ++# define EHOSTUNREACH 110 ++# define EWOULDBLOCK 140 ++# define GNULIB_defined_ESOCK 1 ++# endif ++ ++# ifndef ETXTBSY ++# define ETXTBSY 139 ++# define ENODATA 120 /* not required by POSIX */ ++# define ENOSR 124 /* not required by POSIX */ ++# define ENOSTR 125 /* not required by POSIX */ ++# define ETIME 137 /* not required by POSIX */ ++# define EOTHER 131 /* not required by POSIX */ ++# define GNULIB_defined_ESTREAMS 1 ++# endif ++ ++/* These are intentionally the same values as the WSA* error numbers, defined ++ in . */ ++# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ ++# define EPFNOSUPPORT 10046 /* not required by POSIX */ ++# define ESHUTDOWN 10058 /* not required by POSIX */ ++# define ETOOMANYREFS 10059 /* not required by POSIX */ ++# define EHOSTDOWN 10064 /* not required by POSIX */ ++# define EPROCLIM 10067 /* not required by POSIX */ ++# define EUSERS 10068 /* not required by POSIX */ ++# define EDQUOT 10069 ++# define ESTALE 10070 ++# define EREMOTE 10071 /* not required by POSIX */ ++# define GNULIB_defined_EWINSOCK 1 ++ ++# endif ++ ++ ++/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros ++ EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ ++# if 0 ++# define EMULTIHOP ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++# if 0 ++# define ENOLINK ++# define GNULIB_defined_ENOLINK 1 ++# endif ++# if 0 ++# define EOVERFLOW ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++ ++/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, ++ EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. ++ Likewise, on NonStop Kernel, EDQUOT is not defined. ++ Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, ++ HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. ++ ++ Note: When one of these systems defines some of these macros some day, ++ binaries will have to be recompiled so that they recognizes the new ++ errno values from the system. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 2000 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 2001 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 2002 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 2003 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EMULTIHOP ++# define EMULTIHOP 2004 ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 2005 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 2006 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 2007 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 2011 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 2012 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ESTALE ++# define ESTALE 2009 ++# define GNULIB_defined_ESTALE 1 ++# endif ++ ++# ifndef EDQUOT ++# define EDQUOT 2010 ++# define GNULIB_defined_EDQUOT 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 2008 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not ++ defined. */ ++ ++# ifndef EOWNERDEAD ++# if defined __sun ++ /* Use the same values as defined for Solaris >= 8, for ++ interoperability. */ ++# define EOWNERDEAD 58 ++# define ENOTRECOVERABLE 59 ++# elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ /* We have a conflict here: pthreads-win32 defines these values ++ differently than MSVC 10. It's hairy to decide which one to use. */ ++# if defined __MINGW32__ && !defined USE_WINDOWS_THREADS ++ /* Use the same values as defined by pthreads-win32, for ++ interoperability. */ ++# define EOWNERDEAD 43 ++# define ENOTRECOVERABLE 44 ++# else ++ /* Use the same values as defined by MSVC 10, for ++ interoperability. */ ++# define EOWNERDEAD 133 ++# define ENOTRECOVERABLE 127 ++# endif ++# else ++# define EOWNERDEAD 2013 ++# define ENOTRECOVERABLE 2014 ++# endif ++# define GNULIB_defined_EOWNERDEAD 1 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EILSEQ ++# define EILSEQ 2015 ++# define GNULIB_defined_EILSEQ 1 ++# endif ++ ++#endif /* _GL_ERRNO_H */ ++#endif /* _GL_ERRNO_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/getopt.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/getopt.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/getopt.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/getopt.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,274 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Declarations for getopt. ++ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2016 Free Software ++ Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GL_GETOPT_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. We must ++ also inform the replacement unistd.h to not recursively use ++ ; our definitions will be present soon enough. */ ++#if 0 ++# define _GL_SYSTEM_GETOPT ++# include ++# undef _GL_SYSTEM_GETOPT ++#endif ++ ++#ifndef _GL_GETOPT_H ++ ++#ifndef __need_getopt ++# define _GL_GETOPT_H 1 ++#endif ++ ++/* Ensure that DLL_VARIABLE is defined. Since on OSF/1 4.0 and Irix 6.5 ++ includes , and is not a prerequisite for ++ using , this file can be included without a prior ++ "#include ". */ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++/* Standalone applications should #define __GETOPT_PREFIX to an ++ identifier that prefixes the external functions and variables ++ defined in this header. When this happens, include the ++ headers that might declare getopt so that they will not cause ++ confusion if included after this file (if the system had , ++ we have already included it). Then systematically rename ++ identifiers so that they do not collide with the system functions ++ and variables. Renaming avoids problems with some compilers and ++ linkers. */ ++#if defined __GETOPT_PREFIX && !defined __need_getopt ++# if !0 ++# define __need_system_stdlib_h ++# include ++# undef __need_system_stdlib_h ++# include ++# include ++# endif ++# undef __need_getopt ++# undef getopt ++# undef getopt_long ++# undef getopt_long_only ++# undef optarg ++# undef opterr ++# undef optind ++# undef optopt ++# undef option ++# define __GETOPT_CONCAT(x, y) x ## y ++# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) ++# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) ++# define getopt __GETOPT_ID (getopt) ++# define getopt_long __GETOPT_ID (getopt_long) ++# define getopt_long_only __GETOPT_ID (getopt_long_only) ++# define optarg __GETOPT_ID (optarg) ++# define opterr __GETOPT_ID (opterr) ++# define optind __GETOPT_ID (optind) ++# define optopt __GETOPT_ID (optopt) ++# define option __GETOPT_ID (option) ++# define _getopt_internal __GETOPT_ID (getopt_internal) ++#endif ++ ++/* Standalone applications get correct prototypes for getopt_long and ++ getopt_long_only; they declare "char **argv". libc uses prototypes ++ with "char *const *argv" that are incorrect because getopt_long and ++ getopt_long_only can permute argv; this is required for backward ++ compatibility (e.g., for LSB 2.0.1). ++ ++ This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt', ++ but it caused redefinition warnings if both unistd.h and getopt.h were ++ included, since unistd.h includes getopt.h having previously defined ++ __need_getopt. ++ ++ The only place where __getopt_argv_const is used is in definitions ++ of getopt_long and getopt_long_only below, but these are visible ++ only if __need_getopt is not defined, so it is quite safe to rewrite ++ the conditional as follows: ++*/ ++#if !defined __need_getopt ++# if defined __GETOPT_PREFIX ++# define __getopt_argv_const /* empty */ ++# else ++# define __getopt_argv_const const ++# endif ++#endif ++ ++/* If __GNU_LIBRARY__ is not already defined, either we are being used ++ standalone, or this is the first header included in the source file. ++ If we are being used with glibc, we need to include , but ++ that does not exist if we are standalone. So: if __GNU_LIBRARY__ is ++ not defined, include , which will pull in for us ++ if it's from glibc. (Why ctype.h? It's guaranteed to exist and it ++ doesn't flood the namespace with stuff the way some other headers do.) */ ++#if !defined __GNU_LIBRARY__ ++# include ++#endif ++ ++#ifndef __THROW ++# ifndef __GNUC_PREREQ ++# define __GNUC_PREREQ(maj, min) (0) ++# endif ++# if defined __cplusplus && __GNUC_PREREQ (2,8) ++# define __THROW throw () ++# else ++# define __THROW ++# endif ++#endif ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* For communication from 'getopt' to the caller. ++ When 'getopt' finds an option that takes an argument, ++ the argument value is returned here. ++ Also, when 'ordering' is RETURN_IN_ORDER, ++ each non-option ARGV-element is returned here. */ ++ ++extern DLL_VARIABLE char *optarg; ++ ++/* Index in ARGV of the next element to be scanned. ++ This is used for communication to and from the caller ++ and for communication between successive calls to 'getopt'. ++ ++ On entry to 'getopt', zero means this is the first call; initialize. ++ ++ When 'getopt' returns -1, this is the index of the first of the ++ non-option elements that the caller should itself scan. ++ ++ Otherwise, 'optind' communicates from one call to the next ++ how much of ARGV has been scanned so far. */ ++ ++extern DLL_VARIABLE int optind; ++ ++/* Callers store zero here to inhibit the error message 'getopt' prints ++ for unrecognized options. */ ++ ++extern DLL_VARIABLE int opterr; ++ ++/* Set to an option character which was unrecognized. */ ++ ++extern DLL_VARIABLE int optopt; ++ ++#ifndef __need_getopt ++/* Describe the long-named options requested by the application. ++ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector ++ of 'struct option' terminated by an element containing a name which is ++ zero. ++ ++ The field 'has_arg' is: ++ no_argument (or 0) if the option does not take an argument, ++ required_argument (or 1) if the option requires an argument, ++ optional_argument (or 2) if the option takes an optional argument. ++ ++ If the field 'flag' is not NULL, it points to a variable that is set ++ to the value given in the field 'val' when the option is found, but ++ left unchanged if the option is not found. ++ ++ To have a long-named option do something other than set an 'int' to ++ a compiled-in constant, such as set a value from 'optarg', set the ++ option's 'flag' field to zero and its 'val' field to a nonzero ++ value (the equivalent single-letter option character, if there is ++ one). For long options that have a zero 'flag' field, 'getopt' ++ returns the contents of the 'val' field. */ ++ ++# if !GNULIB_defined_struct_option ++struct option ++{ ++ const char *name; ++ /* has_arg can't be an enum because some compilers complain about ++ type mismatches in all the code that assumes it is an int. */ ++ int has_arg; ++ int *flag; ++ int val; ++}; ++# define GNULIB_defined_struct_option 1 ++# endif ++ ++/* Names for the values of the 'has_arg' field of 'struct option'. */ ++ ++# define no_argument 0 ++# define required_argument 1 ++# define optional_argument 2 ++#endif /* need getopt */ ++ ++ ++/* Get definitions and prototypes for functions to process the ++ arguments in ARGV (ARGC of them, minus the program name) for ++ options given in OPTS. ++ ++ Return the option character from OPTS just read. Return -1 when ++ there are no more options. For unrecognized options, or options ++ missing arguments, 'optopt' is set to the option letter, and '?' is ++ returned. ++ ++ The OPTS string is a list of characters which are recognized option ++ letters, optionally followed by colons, specifying that that letter ++ takes an argument, to be placed in 'optarg'. ++ ++ If a letter in OPTS is followed by two colons, its argument is ++ optional. This behavior is specific to the GNU 'getopt'. ++ ++ The argument '--' causes premature termination of argument ++ scanning, explicitly telling 'getopt' that there are no more ++ options. ++ ++ If OPTS begins with '-', then non-option arguments are treated as ++ arguments to the option '\1'. This behavior is specific to the GNU ++ 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in ++ the environment, then do not permute arguments. */ ++ ++extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) ++ __THROW _GL_ARG_NONNULL ((2, 3)); ++ ++#ifndef __need_getopt ++extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, ++ const char *__shortopts, ++ const struct option *__longopts, int *__longind) ++ __THROW _GL_ARG_NONNULL ((2, 3)); ++extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, ++ const char *__shortopts, ++ const struct option *__longopts, int *__longind) ++ __THROW _GL_ARG_NONNULL ((2, 3)); ++ ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++ ++/* Make sure we later can get all the definitions and declarations. */ ++#undef __need_getopt ++ ++#endif /* _GL_GETOPT_H */ ++#endif /* _GL_GETOPT_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/iconv.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/iconv.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/iconv.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/iconv.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,422 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_ICONV_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include <../include/iconv.h> ++ ++#ifndef _GL_ICONV_H ++#define _GL_ICONV_H ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++#if 1 ++# if 0 ++/* An iconv_open wrapper that supports the IANA standardized encoding names ++ ("ISO-8859-1" etc.) as far as possible. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv_open rpl_iconv_open ++# endif ++_GL_FUNCDECL_RPL (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode)); ++# else ++_GL_CXXALIAS_SYS (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode)); ++# endif ++_GL_CXXALIASWARN (iconv_open); ++#endif ++ ++#if 0 ++/* Special constants for supporting UTF-{16,32}{BE,LE} encodings. ++ Not public. */ ++# define _ICONV_UTF8_UTF16BE (iconv_t)(-161) ++# define _ICONV_UTF8_UTF16LE (iconv_t)(-162) ++# define _ICONV_UTF8_UTF32BE (iconv_t)(-163) ++# define _ICONV_UTF8_UTF32LE (iconv_t)(-164) ++# define _ICONV_UTF16BE_UTF8 (iconv_t)(-165) ++# define _ICONV_UTF16LE_UTF8 (iconv_t)(-166) ++# define _ICONV_UTF32BE_UTF8 (iconv_t)(-167) ++# define _ICONV_UTF32LE_UTF8 (iconv_t)(-168) ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv rpl_iconv ++# endif ++_GL_FUNCDECL_RPL (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++_GL_CXXALIAS_RPL (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++# else ++_GL_CXXALIAS_SYS (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++# endif ++_GL_CXXALIASWARN (iconv); ++# ifndef ICONV_CONST ++# define ICONV_CONST ++# endif ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv_close rpl_iconv_close ++# endif ++_GL_FUNCDECL_RPL (iconv_close, int, (iconv_t cd)); ++_GL_CXXALIAS_RPL (iconv_close, int, (iconv_t cd)); ++# else ++_GL_CXXALIAS_SYS (iconv_close, int, (iconv_t cd)); ++# endif ++_GL_CXXALIASWARN (iconv_close); ++#endif ++ ++ ++#endif /* _GL_ICONV_H */ ++#endif /* _GL_ICONV_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/langinfo.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/langinfo.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/langinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/langinfo.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,496 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Substitute for and wrapper around . ++ Copyright (C) 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* ++ * POSIX for platforms that lack it or have an incomplete one. ++ * ++ */ ++ ++#ifndef _GL_LANGINFO_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_LANGINFO_H ++#define _GL_LANGINFO_H ++ ++ ++#if !0 ++ ++/* A platform that lacks . */ ++ ++/* Assume that it also lacks and the nl_item type. */ ++# if !GNULIB_defined_nl_item ++typedef int nl_item; ++# define GNULIB_defined_nl_item 1 ++# endif ++ ++/* nl_langinfo items of the LC_CTYPE category */ ++# define CODESET 10000 ++/* nl_langinfo items of the LC_NUMERIC category */ ++# define RADIXCHAR 10001 ++# define DECIMAL_POINT RADIXCHAR ++# define THOUSEP 10002 ++# define THOUSANDS_SEP THOUSEP ++# define GROUPING 10114 ++/* nl_langinfo items of the LC_TIME category */ ++# define D_T_FMT 10003 ++# define D_FMT 10004 ++# define T_FMT 10005 ++# define T_FMT_AMPM 10006 ++# define AM_STR 10007 ++# define PM_STR 10008 ++# define DAY_1 10009 ++# define DAY_2 (DAY_1 + 1) ++# define DAY_3 (DAY_1 + 2) ++# define DAY_4 (DAY_1 + 3) ++# define DAY_5 (DAY_1 + 4) ++# define DAY_6 (DAY_1 + 5) ++# define DAY_7 (DAY_1 + 6) ++# define ABDAY_1 10016 ++# define ABDAY_2 (ABDAY_1 + 1) ++# define ABDAY_3 (ABDAY_1 + 2) ++# define ABDAY_4 (ABDAY_1 + 3) ++# define ABDAY_5 (ABDAY_1 + 4) ++# define ABDAY_6 (ABDAY_1 + 5) ++# define ABDAY_7 (ABDAY_1 + 6) ++# define MON_1 10023 ++# define MON_2 (MON_1 + 1) ++# define MON_3 (MON_1 + 2) ++# define MON_4 (MON_1 + 3) ++# define MON_5 (MON_1 + 4) ++# define MON_6 (MON_1 + 5) ++# define MON_7 (MON_1 + 6) ++# define MON_8 (MON_1 + 7) ++# define MON_9 (MON_1 + 8) ++# define MON_10 (MON_1 + 9) ++# define MON_11 (MON_1 + 10) ++# define MON_12 (MON_1 + 11) ++# define ABMON_1 10035 ++# define ABMON_2 (ABMON_1 + 1) ++# define ABMON_3 (ABMON_1 + 2) ++# define ABMON_4 (ABMON_1 + 3) ++# define ABMON_5 (ABMON_1 + 4) ++# define ABMON_6 (ABMON_1 + 5) ++# define ABMON_7 (ABMON_1 + 6) ++# define ABMON_8 (ABMON_1 + 7) ++# define ABMON_9 (ABMON_1 + 8) ++# define ABMON_10 (ABMON_1 + 9) ++# define ABMON_11 (ABMON_1 + 10) ++# define ABMON_12 (ABMON_1 + 11) ++# define ERA 10047 ++# define ERA_D_FMT 10048 ++# define ERA_D_T_FMT 10049 ++# define ERA_T_FMT 10050 ++# define ALT_DIGITS 10051 ++/* nl_langinfo items of the LC_MONETARY category */ ++# define CRNCYSTR 10052 ++# define CURRENCY_SYMBOL CRNCYSTR ++# define INT_CURR_SYMBOL 10100 ++# define MON_DECIMAL_POINT 10101 ++# define MON_THOUSANDS_SEP 10102 ++# define MON_GROUPING 10103 ++# define POSITIVE_SIGN 10104 ++# define NEGATIVE_SIGN 10105 ++# define FRAC_DIGITS 10106 ++# define INT_FRAC_DIGITS 10107 ++# define P_CS_PRECEDES 10108 ++# define N_CS_PRECEDES 10109 ++# define P_SEP_BY_SPACE 10110 ++# define N_SEP_BY_SPACE 10111 ++# define P_SIGN_POSN 10112 ++# define N_SIGN_POSN 10113 ++/* nl_langinfo items of the LC_MESSAGES category */ ++# define YESEXPR 10053 ++# define NOEXPR 10054 ++ ++#else ++ ++/* A platform that has . */ ++ ++# if !0 ++# define CODESET 10000 ++# define GNULIB_defined_CODESET 1 ++# endif ++ ++# if !0 ++# define T_FMT_AMPM 10006 ++# define GNULIB_defined_T_FMT_AMPM 1 ++# endif ++ ++# if !0 ++# define ERA 10047 ++# define ERA_D_FMT 10048 ++# define ERA_D_T_FMT 10049 ++# define ERA_T_FMT 10050 ++# define ALT_DIGITS 10051 ++# define GNULIB_defined_ERA 1 ++# endif ++ ++# if !0 ++# define YESEXPR 10053 ++# define NOEXPR 10054 ++# define GNULIB_defined_YESEXPR 1 ++# endif ++ ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Declare overridden functions. */ ++ ++ ++/* Return a piece of locale dependent information. ++ Note: The difference between nl_langinfo (CODESET) and locale_charset () ++ is that the latter normalizes the encoding names to GNU conventions. */ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef nl_langinfo ++# define nl_langinfo rpl_nl_langinfo ++# endif ++_GL_FUNCDECL_RPL (nl_langinfo, char *, (nl_item item)); ++_GL_CXXALIAS_RPL (nl_langinfo, char *, (nl_item item)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (nl_langinfo, char *, (nl_item item)); ++# endif ++_GL_CXXALIAS_SYS (nl_langinfo, char *, (nl_item item)); ++# endif ++_GL_CXXALIASWARN (nl_langinfo); ++#elif defined GNULIB_POSIXCHECK ++# undef nl_langinfo ++# if HAVE_RAW_DECL_NL_LANGINFO ++_GL_WARN_ON_USE (nl_langinfo, "nl_langinfo is not portable - " ++ "use gnulib module nl_langinfo for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_LANGINFO_H */ ++#endif /* _GL_LANGINFO_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/locale.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/locale.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/locale.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/locale.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,528 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A POSIX . ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifdef _GL_ALREADY_INCLUDING_LOCALE_H ++ ++/* Special invocation conventions to handle Solaris header files ++ (through Solaris 10) when combined with gettext's libintl.h. */ ++ ++#include MSVC_INCLUDE(locale.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_LOCALE_H ++ ++#define _GL_ALREADY_INCLUDING_LOCALE_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(locale.h) ++ ++#undef _GL_ALREADY_INCLUDING_LOCALE_H ++ ++#ifndef _GL_LOCALE_H ++#define _GL_LOCALE_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* Mac OS X 10.5 defines the locale_t type in . */ ++#if 0 ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C. ++ On systems that don't define it, use the same value as GNU libintl. */ ++#if !defined LC_MESSAGES ++# define LC_MESSAGES 1729 ++#endif ++ ++/* Bionic libc's 'struct lconv' is just a dummy. */ ++#if 1 ++# define lconv rpl_lconv ++struct lconv ++{ ++ /* All 'char *' are actually 'const char *'. */ ++ ++ /* Members that depend on the LC_NUMERIC category of the locale. See ++ */ ++ ++ /* Symbol used as decimal point. */ ++ char *decimal_point; ++ /* Symbol used to separate groups of digits to the left of the decimal ++ point. */ ++ char *thousands_sep; ++ /* Definition of the size of groups of digits to the left of the decimal ++ point. */ ++ char *grouping; ++ ++ /* Members that depend on the LC_MONETARY category of the locale. See ++ */ ++ ++ /* Symbol used as decimal point. */ ++ char *mon_decimal_point; ++ /* Symbol used to separate groups of digits to the left of the decimal ++ point. */ ++ char *mon_thousands_sep; ++ /* Definition of the size of groups of digits to the left of the decimal ++ point. */ ++ char *mon_grouping; ++ /* Sign used to indicate a value >= 0. */ ++ char *positive_sign; ++ /* Sign used to indicate a value < 0. */ ++ char *negative_sign; ++ ++ /* For formatting local currency. */ ++ /* Currency symbol (3 characters) followed by separator (1 character). */ ++ char *currency_symbol; ++ /* Number of digits after the decimal point. */ ++ char frac_digits; ++ /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char p_cs_precedes; ++ /* For values >= 0: Position of the sign. */ ++ char p_sign_posn; ++ /* For values >= 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char p_sep_by_space; ++ /* For values < 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char n_cs_precedes; ++ /* For values < 0: Position of the sign. */ ++ char n_sign_posn; ++ /* For values < 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char n_sep_by_space; ++ ++ /* For formatting international currency. */ ++ /* Currency symbol (3 characters) followed by separator (1 character). */ ++ char *int_curr_symbol; ++ /* Number of digits after the decimal point. */ ++ char int_frac_digits; ++ /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char int_p_cs_precedes; ++ /* For values >= 0: Position of the sign. */ ++ char int_p_sign_posn; ++ /* For values >= 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char int_p_sep_by_space; ++ /* For values < 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char int_n_cs_precedes; ++ /* For values < 0: Position of the sign. */ ++ char int_n_sign_posn; ++ /* For values < 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char int_n_sep_by_space; ++}; ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localeconv ++# define localeconv rpl_localeconv ++# endif ++_GL_FUNCDECL_RPL (localeconv, struct lconv *, (void)); ++_GL_CXXALIAS_RPL (localeconv, struct lconv *, (void)); ++# else ++_GL_CXXALIAS_SYS (localeconv, struct lconv *, (void)); ++# endif ++_GL_CXXALIASWARN (localeconv); ++#elif 1 ++# undef localeconv ++# define localeconv localeconv_used_without_requesting_gnulib_module_localeconv ++#elif defined GNULIB_POSIXCHECK ++# undef localeconv ++# if HAVE_RAW_DECL_LOCALECONV ++_GL_WARN_ON_USE (localeconv, ++ "localeconv returns too few information on some platforms - " ++ "use gnulib module localeconv for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setlocale ++# define setlocale rpl_setlocale ++# define GNULIB_defined_setlocale 1 ++# endif ++_GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale)); ++_GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale)); ++# else ++_GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale)); ++# endif ++_GL_CXXALIASWARN (setlocale); ++#elif defined GNULIB_POSIXCHECK ++# undef setlocale ++# if HAVE_RAW_DECL_SETLOCALE ++_GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - " ++ "use gnulib module setlocale for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef duplocale ++# define duplocale rpl_duplocale ++# endif ++_GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale)); ++# else ++# if 1 ++_GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale)); ++# endif ++# endif ++# if 1 ++_GL_CXXALIASWARN (duplocale); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef duplocale ++# if HAVE_RAW_DECL_DUPLOCALE ++_GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - " ++ "use gnulib module duplocale for portability"); ++# endif ++#endif ++ ++#endif /* _GL_LOCALE_H */ ++#endif /* ! _GL_ALREADY_INCLUDING_LOCALE_H */ ++#endif /* _GL_LOCALE_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/signal.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/signal.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/signal.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/signal.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,775 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T) ++/* Special invocation convention: ++ - Inside glibc header files. ++ - On glibc systems we have a sequence of nested includes ++ -> -> . ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. ++ - On glibc systems with GCC 4.3 we have a sequence of nested includes ++ -> -> -> . ++ In this situation, some of the functions are not yet declared, therefore ++ we cannot provide the C++ aliases. */ ++ ++# include MSVC_INCLUDE(signal.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_SIGNAL_H ++ ++#define _GL_ALREADY_INCLUDING_SIGNAL_H ++ ++/* Define pid_t, uid_t. ++ Also, mingw defines sigset_t not in , but in . ++ On Solaris 10, includes , which eventually includes ++ us; so include now, before the second inclusion guard. */ ++#include ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(signal.h) ++ ++#undef _GL_ALREADY_INCLUDING_SIGNAL_H ++ ++#ifndef _GL_SIGNAL_H ++#define _GL_SIGNAL_H ++ ++/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6, Android ++ declare pthread_sigmask in , not in . ++ But avoid namespace pollution on glibc systems.*/ ++#if (0 || defined GNULIB_POSIXCHECK) \ ++ && ((defined __APPLE__ && defined __MACH__) \ ++ || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ \ ++ || defined __sun || defined __ANDROID__) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* On AIX, sig_atomic_t already includes volatile. C99 requires that ++ 'volatile sig_atomic_t' ignore the extra modifier, but C89 did not. ++ Hence, redefine this to a non-volatile type as needed. */ ++#if ! 1 ++# if !GNULIB_defined_sig_atomic_t ++typedef int rpl_sig_atomic_t; ++# undef sig_atomic_t ++# define sig_atomic_t rpl_sig_atomic_t ++# define GNULIB_defined_sig_atomic_t 1 ++# endif ++#endif ++ ++/* A set or mask of signals. */ ++#if !0 ++# if !GNULIB_defined_sigset_t ++typedef unsigned int sigset_t; ++# define GNULIB_defined_sigset_t 1 ++# endif ++#endif ++ ++/* Define sighandler_t, the type of signal handlers. A GNU extension. */ ++#if !0 ++# ifdef __cplusplus ++extern "C" { ++# endif ++# if !GNULIB_defined_sighandler_t ++typedef void (*sighandler_t) (int); ++# define GNULIB_defined_sighandler_t 1 ++# endif ++# ifdef __cplusplus ++} ++# endif ++#endif ++ ++ ++#if 1 ++# ifndef SIGPIPE ++/* Define SIGPIPE to a value that does not overlap with other signals. */ ++# define SIGPIPE 13 ++# define GNULIB_defined_SIGPIPE 1 ++/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask', ++ 'write', 'stdio'. */ ++# endif ++#endif ++ ++ ++/* Maximum signal number + 1. */ ++#ifndef NSIG ++# if defined __TANDEM ++# define NSIG 32 ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pthread_sigmask ++# define pthread_sigmask rpl_pthread_sigmask ++# endif ++_GL_FUNCDECL_RPL (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++_GL_CXXALIAS_RPL (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# endif ++_GL_CXXALIAS_SYS (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# endif ++_GL_CXXALIASWARN (pthread_sigmask); ++#elif defined GNULIB_POSIXCHECK ++# undef pthread_sigmask ++# if HAVE_RAW_DECL_PTHREAD_SIGMASK ++_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - " ++ "use gnulib module pthread_sigmask for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef raise ++# define raise rpl_raise ++# endif ++_GL_FUNCDECL_RPL (raise, int, (int sig)); ++_GL_CXXALIAS_RPL (raise, int, (int sig)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (raise, int, (int sig)); ++# endif ++_GL_CXXALIAS_SYS (raise, int, (int sig)); ++# endif ++_GL_CXXALIASWARN (raise); ++#elif defined GNULIB_POSIXCHECK ++# undef raise ++/* Assume raise is always declared. */ ++_GL_WARN_ON_USE (raise, "raise can crash on native Windows - " ++ "use gnulib module raise for portability"); ++#endif ++ ++ ++#if 1 ++# if !0 ++ ++# ifndef GNULIB_defined_signal_blocking ++# define GNULIB_defined_signal_blocking 1 ++# endif ++ ++/* Maximum signal number + 1. */ ++# ifndef NSIG ++# define NSIG 32 ++# endif ++ ++/* This code supports only 32 signals. */ ++# if !GNULIB_defined_verify_NSIG_constraint ++typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1]; ++# define GNULIB_defined_verify_NSIG_constraint 1 ++# endif ++ ++# endif ++ ++/* When also using extern inline, suppress the use of static inline in ++ standard headers of problematic Apple configurations, as Libc at ++ least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., ++ . ++ Perhaps Apple will fix this some day. */ ++#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ ++ && (defined __i386__ || defined __x86_64__)) ++# undef sigaddset ++# undef sigdelset ++# undef sigemptyset ++# undef sigfillset ++# undef sigismember ++#endif ++ ++/* Test whether a given signal is contained in a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigismember ++# endif ++# else ++_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigismember); ++ ++/* Initialize a signal set to the empty set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigemptyset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigemptyset); ++ ++/* Add a signal to a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigaddset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigaddset); ++ ++/* Remove a signal from a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigdelset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigdelset); ++ ++/* Fill a signal set with all possible signals. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigfillset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigfillset); ++ ++/* Return the set of those blocked signals that are pending. */ ++# if !0 ++_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigpending); ++ ++/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET. ++ Then, if SET is not NULL, affect the current set of blocked signals by ++ combining it with *SET as indicated in OPERATION. ++ In this implementation, you are not allowed to change a signal handler ++ while the signal is blocked. */ ++# if !0 ++# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ ++# define SIG_SETMASK 1 /* blocked_set = *set; */ ++# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ ++_GL_FUNCDECL_SYS (sigprocmask, int, ++ (int operation, const sigset_t *set, sigset_t *old_set)); ++# endif ++_GL_CXXALIAS_SYS (sigprocmask, int, ++ (int operation, const sigset_t *set, sigset_t *old_set)); ++_GL_CXXALIASWARN (sigprocmask); ++ ++/* Install the handler FUNC for signal SIG, and return the previous ++ handler. */ ++# ifdef __cplusplus ++extern "C" { ++# endif ++# if !GNULIB_defined_function_taking_int_returning_void_t ++typedef void (*_gl_function_taking_int_returning_void_t) (int); ++# define GNULIB_defined_function_taking_int_returning_void_t 1 ++# endif ++# ifdef __cplusplus ++} ++# endif ++# if !0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define signal rpl_signal ++# endif ++_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++# else ++_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++# endif ++_GL_CXXALIASWARN (signal); ++ ++# if !0 && GNULIB_defined_SIGPIPE ++/* Raise signal SIGPIPE. */ ++_GL_EXTERN_C int _gl_raise_SIGPIPE (void); ++# endif ++ ++#elif defined GNULIB_POSIXCHECK ++# undef sigaddset ++# if HAVE_RAW_DECL_SIGADDSET ++_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigdelset ++# if HAVE_RAW_DECL_SIGDELSET ++_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigemptyset ++# if HAVE_RAW_DECL_SIGEMPTYSET ++_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigfillset ++# if HAVE_RAW_DECL_SIGFILLSET ++_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigismember ++# if HAVE_RAW_DECL_SIGISMEMBER ++_GL_WARN_ON_USE (sigismember, "sigismember is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigpending ++# if HAVE_RAW_DECL_SIGPENDING ++_GL_WARN_ON_USE (sigpending, "sigpending is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigprocmask ++# if HAVE_RAW_DECL_SIGPROCMASK ++_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++#endif /* 1 */ ++ ++ ++#if 0 ++# if !1 ++ ++# if !1 ++ ++# if !GNULIB_defined_siginfo_types ++ ++/* Present to allow compilation, but unsupported by gnulib. */ ++union sigval ++{ ++ int sival_int; ++ void *sival_ptr; ++}; ++ ++/* Present to allow compilation, but unsupported by gnulib. */ ++struct siginfo_t ++{ ++ int si_signo; ++ int si_code; ++ int si_errno; ++ pid_t si_pid; ++ uid_t si_uid; ++ void *si_addr; ++ int si_status; ++ long si_band; ++ union sigval si_value; ++}; ++typedef struct siginfo_t siginfo_t; ++ ++# define GNULIB_defined_siginfo_types 1 ++# endif ++ ++# endif /* !1 */ ++ ++/* We assume that platforms which lack the sigaction() function also lack ++ the 'struct sigaction' type, and vice versa. */ ++ ++# if !GNULIB_defined_struct_sigaction ++ ++struct sigaction ++{ ++ union ++ { ++ void (*_sa_handler) (int); ++ /* Present to allow compilation, but unsupported by gnulib. POSIX ++ says that implementations may, but not must, make sa_sigaction ++ overlap with sa_handler, but we know of no implementation where ++ they do not overlap. */ ++ void (*_sa_sigaction) (int, siginfo_t *, void *); ++ } _sa_func; ++ sigset_t sa_mask; ++ /* Not all POSIX flags are supported. */ ++ int sa_flags; ++}; ++# define sa_handler _sa_func._sa_handler ++# define sa_sigaction _sa_func._sa_sigaction ++/* Unsupported flags are not present. */ ++# define SA_RESETHAND 1 ++# define SA_NODEFER 2 ++# define SA_RESTART 4 ++ ++# define GNULIB_defined_struct_sigaction 1 ++# endif ++ ++_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict, ++ struct sigaction *restrict)); ++ ++# elif !1 ++ ++# define sa_sigaction sa_handler ++ ++# endif /* !1, !1 */ ++ ++_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict, ++ struct sigaction *restrict)); ++_GL_CXXALIASWARN (sigaction); ++ ++#elif defined GNULIB_POSIXCHECK ++# undef sigaction ++# if HAVE_RAW_DECL_SIGACTION ++_GL_WARN_ON_USE (sigaction, "sigaction is unportable - " ++ "use the gnulib module sigaction for portability"); ++# endif ++#endif ++ ++/* Some systems don't have SA_NODEFER. */ ++#ifndef SA_NODEFER ++# define SA_NODEFER 0 ++#endif ++ ++ ++#endif /* _GL_SIGNAL_H */ ++#endif /* _GL_SIGNAL_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdbool.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdbool.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdbool.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdbool.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,139 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Copyright (C) 2001-2003, 2006-2016 Free Software Foundation, Inc. ++ Written by Bruno Haible , 2001. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if (_MSC_VER >= 1800) ++/* just include the stock stdbool.h for Visual Studio 2013 and later */ ++# include <../include/stdbool.h> ++#else ++ ++#ifndef _GL_STDBOOL_H ++#define _GL_STDBOOL_H ++ ++/* ISO C 99 for platforms that lack it. */ ++ ++/* Usage suggestions: ++ ++ Programs that use should be aware of some limitations ++ and standards compliance issues. ++ ++ Standards compliance: ++ ++ - must be #included before 'bool', 'false', 'true' ++ can be used. ++ ++ - You cannot assume that sizeof (bool) == 1. ++ ++ - Programs should not undefine the macros bool, true, and false, ++ as C99 lists that as an "obsolescent feature". ++ ++ Limitations of this substitute, when used in a C89 environment: ++ ++ - must be #included before the '_Bool' type can be used. ++ ++ - You cannot assume that _Bool is a typedef; it might be a macro. ++ ++ - Bit-fields of type 'bool' are not supported. Portable code ++ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. ++ ++ - In C99, casts and automatic conversions to '_Bool' or 'bool' are ++ performed in such a way that every nonzero value gets converted ++ to 'true', and zero gets converted to 'false'. This doesn't work ++ with this substitute. With this substitute, only the values 0 and 1 ++ give the expected result when converted to _Bool' or 'bool'. ++ ++ - C99 allows the use of (_Bool)0.0 in constant expressions, but ++ this substitute cannot always provide this property. ++ ++ Also, it is suggested that programs use 'bool' rather than '_Bool'; ++ this isn't required, but 'bool' is more common. */ ++ ++ ++/* 7.16. Boolean type and values */ ++ ++/* BeOS already #defines false 0, true 1. We use the same ++ definitions below, but temporarily we have to #undef them. */ ++#if defined __BEOS__ && !defined __HAIKU__ ++# include /* defines bool but not _Bool */ ++# undef false ++# undef true ++#endif ++ ++#if defined (__cplusplus) && (_MSC_VER < 1600) ++# define _Bool bool ++# define bool bool ++#else ++# if defined __BEOS__ && !defined __HAIKU__ ++ /* A compiler known to have 'bool'. */ ++ /* If the compiler already has both 'bool' and '_Bool', we can assume they ++ are the same types. */ ++# if !0 && !defined __cplusplus ++typedef bool _Bool; ++# endif ++# else ++# if !defined __GNUC__ && !defined __cplusplus ++ /* If 0: ++ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when ++ the built-in _Bool type is used. See ++ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html ++ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html ++ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html ++ Similar bugs are likely with other compilers as well; this file ++ wouldn't be used if was working. ++ So we override the _Bool type. ++ If !0: ++ Need to define _Bool ourselves. As 'signed char' or as an enum type? ++ Use of a typedef, with SunPRO C, leads to a stupid ++ "warning: _Bool is a keyword in ISO C99". ++ Use of an enum type, with IRIX cc, leads to a stupid ++ "warning(1185): enumerated type mixed with another type". ++ Even the existence of an enum type, without a typedef, ++ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. ++ The only benefit of the enum, debuggability, is not important ++ with these compilers. So use 'signed char' and no enum. */ ++# define _Bool signed char ++# else ++ /* With this compiler, trust the _Bool type if the compiler has it. */ ++# if !0 ++ /* For the sake of symbolic names in gdb, define true and false as ++ enum constants, not only as macros. ++ It is tempting to write ++ typedef enum { false = 0, true = 1 } _Bool; ++ so that gdb prints values of type 'bool' symbolically. But then ++ values of type '_Bool' might promote to 'int' or 'unsigned int' ++ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' ++ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the ++ enum; this ensures that '_Bool' promotes to 'int'. */ ++typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; ++# endif ++# endif ++# endif ++# define bool _Bool ++#endif ++ ++/* The other macros must be usable in preprocessor directives. */ ++#ifdef __cplusplus ++# define false false ++# define true true ++#else ++# define false 0 ++# define true 1 ++#endif ++ ++#define __bool_true_false_are_defined 1 ++ ++#endif /* _GL_STDBOOL_H */ ++#endif /* _MSC_VER < 1800 */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stddef.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/stddef.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stddef.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/stddef.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,111 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for POSIX 2008 , for platforms that have issues. ++ ++ Copyright (C) 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake. */ ++ ++/* ++ * POSIX 2008 for platforms that have issues. ++ * ++ */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_wchar_t || defined __need_size_t \ ++ || defined __need_ptrdiff_t || defined __need_NULL \ ++ || defined __need_wint_t ++/* Special invocation convention inside gcc header files. In ++ particular, gcc provides a version of that blindly ++ redefines NULL even when __need_wint_t was defined, even though ++ wint_t is not normally provided by . Hence, we must ++ remember if special invocation has ever been used to obtain wint_t, ++ in which case we need to clean up NULL yet again. */ ++ ++# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T) ++# ifdef __need_wint_t ++# define _GL_STDDEF_WINT_T ++# endif ++# include MSVC_INCLUDE(stddef.h) ++# endif ++ ++#else ++/* Normal invocation convention. */ ++ ++# ifndef _GL_STDDEF_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++ ++# include MSVC_INCLUDE(stddef.h) ++ ++/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ ++# if (0 \ ++ && (!defined _GL_STDDEF_H || defined _GL_STDDEF_WINT_T)) ++# undef NULL ++# ifdef __cplusplus ++ /* ISO C++ says that the macro NULL must expand to an integer constant ++ expression, hence '((void *) 0)' is not allowed in C++. */ ++# if __GNUG__ >= 3 ++ /* GNU C++ has a __null macro that behaves like an integer ('int' or ++ 'long') but has the same size as a pointer. Use that, to avoid ++ warnings. */ ++# define NULL __null ++# else ++# define NULL 0L ++# endif ++# else ++# define NULL ((void *) 0) ++# endif ++# endif ++ ++# ifndef _GL_STDDEF_H ++# define _GL_STDDEF_H ++ ++/* Some platforms lack wchar_t. */ ++#if !1 ++# define wchar_t int ++#endif ++ ++/* Some platforms lack max_align_t. The check for _GCC_MAX_ALIGN_T is ++ a hack in case the configure-time test was done with g++ even though ++ we are currently compiling with gcc. */ ++#if ! (0 || defined _GCC_MAX_ALIGN_T) ++/* On the x86, the maximum storage alignment of double, long, etc. is 4, ++ but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8, ++ and the C11 standard allows this. Work around this problem by ++ using __alignof__ (which returns 8 for double) rather than _Alignof ++ (which returns 4), and align each union member accordingly. */ ++# ifdef __GNUC__ ++# define _GL_STDDEF_ALIGNAS(type) \ ++ __attribute__ ((__aligned__ (__alignof__ (type)))) ++# else ++# define _GL_STDDEF_ALIGNAS(type) /* */ ++# endif ++typedef union ++{ ++ char *__p _GL_STDDEF_ALIGNAS (char *); ++ double __d _GL_STDDEF_ALIGNAS (double); ++ long double __ld _GL_STDDEF_ALIGNAS (long double); ++ long int __i _GL_STDDEF_ALIGNAS (long int); ++} max_align_t; ++#endif ++ ++# endif /* _GL_STDDEF_H */ ++# endif /* _GL_STDDEF_H */ ++#endif /* __need_XXX */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdint.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdint.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdint.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,662 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Copyright (C) 2001-2002, 2004-2016 Free Software Foundation, Inc. ++ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. ++ This file is part of gnulib. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* ++ * ISO C 99 for platforms that lack it. ++ * ++ */ ++ ++/* Just include the stock stdint.h on Visual Studio 2012 and later, as it is enough ++ for our purposes here */ ++#if (_MSC_VER >= 1700) ++# include <../include/stdint.h> ++#else ++ ++#ifndef _GL_STDINT_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* When including a system file that in turn includes , ++ use the system , not our substitute. This avoids ++ problems with (for example) VMS, whose includes ++ . */ ++#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H ++ ++/* On Android (Bionic libc), includes this file before ++ having defined 'time_t'. Therefore in this case avoid including ++ other system header files; just include the system's . ++ Ideally we should test __BIONIC__ here, but it is only defined after ++ has been included; hence test __ANDROID__ instead. */ ++#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H ++# if (_MSC_VER >= 1600) ++# include <../include/stdint.h> ++# else ++# include ++# endif ++#else ++ ++/* Get those types that are already defined in other system include ++ files, so that we can "#define int8_t signed char" below without ++ worrying about a later system include file containing a "typedef ++ signed char int8_t;" that will get messed up by our macro. Our ++ macros should all be consistent with the system versions, except ++ for the "fast" types and macros, which we recommend against using ++ in public interfaces due to compiler differences. */ ++ ++#if (_MSC_VER >= 1600) ++# if defined __sgi && ! defined __c99 ++ /* Bypass IRIX's if in C89 mode, since it merely annoys users ++ with "This header file is to be used only for c99 mode compilations" ++ diagnostics. */ ++# define __STDINT_H__ ++# endif ++ ++ /* Some pre-C++11 implementations need this. */ ++# ifdef __cplusplus ++# ifndef __STDC_CONSTANT_MACROS ++# define __STDC_CONSTANT_MACROS 1 ++# endif ++# ifndef __STDC_LIMIT_MACROS ++# define __STDC_LIMIT_MACROS 1 ++# endif ++# endif ++ ++ /* Other systems may have an incomplete or buggy . ++ Include it before , since any "#include " ++ in would reinclude us, skipping our contents because ++ _GL_STDINT_H is defined. ++ The include_next requires a split double-inclusion guard. */ ++# if (_MSC_VER >= 1600) ++# include <../include/stdint.h> ++# else ++# include ++# endif ++#endif ++ ++#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H ++#define _GL_STDINT_H ++ ++/* defines some of the stdint.h types as well, on glibc, ++ IRIX 6.5, and OpenBSD 3.8 (via ). ++ AIX 5.2 isn't needed and causes troubles. ++ Mac OS X 10.4.6 includes (which is us), but ++ relies on the system definitions, so include ++ after . */ ++#if 1 && ! defined _AIX ++# include ++#endif ++ ++/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, ++ LONG_MIN, LONG_MAX, ULONG_MAX. */ ++#include ++ ++#if 0 ++ /* In OpenBSD 3.8, includes , which defines ++ int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. ++ also defines intptr_t and uintptr_t. */ ++# include ++#elif 0 ++ /* Solaris 7 has the types except the *_fast*_t types, and ++ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ ++# include ++#endif ++ ++#if 0 && ! defined __BIT_TYPES_DEFINED__ ++ /* Linux libc4 >= 4.6.7 and libc5 have a that defines ++ int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is ++ included by . */ ++# include ++#endif ++ ++#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H ++ ++/* Minimum and maximum values for an integer type under the usual assumption. ++ Return an unspecified value if BITS == 0, adding a check to pacify ++ picky compilers. */ ++ ++#define _STDINT_MIN(signed, bits, zero) \ ++ ((signed) ? ~ _STDINT_MAX (signed, bits, zero) : (zero)) ++ ++#define _STDINT_MAX(signed, bits, zero) \ ++ (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) ++ ++#if !GNULIB_defined_stdint_types ++ ++/* 7.18.1.1. Exact-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. */ ++ ++#undef int8_t ++#undef uint8_t ++typedef signed char gl_int8_t; ++typedef unsigned char gl_uint8_t; ++#define int8_t gl_int8_t ++#define uint8_t gl_uint8_t ++ ++#undef int16_t ++#undef uint16_t ++typedef short int gl_int16_t; ++typedef unsigned short int gl_uint16_t; ++#define int16_t gl_int16_t ++#define uint16_t gl_uint16_t ++ ++#undef int32_t ++#undef uint32_t ++typedef int gl_int32_t; ++typedef unsigned int gl_uint32_t; ++#define int32_t gl_int32_t ++#define uint32_t gl_uint32_t ++ ++/* If the system defines INT64_MAX, assume int64_t works. That way, ++ if the underlying platform defines int64_t to be a 64-bit long long ++ int, the code below won't mistakenly define it to be a 64-bit long ++ int, which would mess up C++ name mangling. We must use #ifdef ++ rather than #if, to avoid an error with HP-UX 10.20 cc. */ ++ ++#ifdef INT64_MAX ++# define GL_INT64_T ++#else ++/* Do not undefine int64_t if gnulib is not being used with 64-bit ++ types, since otherwise it breaks platforms like Tandem/NSK. */ ++# if LONG_MAX >> 31 >> 31 == 1 ++# undef int64_t ++typedef long int gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# elif defined _MSC_VER ++# undef int64_t ++typedef __int64 gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# elif 1 ++# undef int64_t ++typedef long long int gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# endif ++#endif ++ ++#ifdef UINT64_MAX ++# define GL_UINT64_T ++#else ++# if ULONG_MAX >> 31 >> 31 >> 1 == 1 ++# undef uint64_t ++typedef unsigned long int gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# elif defined _MSC_VER ++# undef uint64_t ++typedef unsigned __int64 gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# elif 1 ++# undef uint64_t ++typedef unsigned long long int gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# endif ++#endif ++ ++/* Avoid collision with Solaris 2.5.1 etc. */ ++#define _UINT8_T ++#define _UINT32_T ++#define _UINT64_T ++ ++ ++/* 7.18.1.2. Minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types ++ are the same as the corresponding N_t types. */ ++ ++#undef int_least8_t ++#undef uint_least8_t ++#undef int_least16_t ++#undef uint_least16_t ++#undef int_least32_t ++#undef uint_least32_t ++#undef int_least64_t ++#undef uint_least64_t ++#define int_least8_t int8_t ++#define uint_least8_t uint8_t ++#define int_least16_t int16_t ++#define uint_least16_t uint16_t ++#define int_least32_t int32_t ++#define uint_least32_t uint32_t ++#ifdef GL_INT64_T ++# define int_least64_t int64_t ++#endif ++#ifdef GL_UINT64_T ++# define uint_least64_t uint64_t ++#endif ++ ++/* 7.18.1.3. Fastest minimum-width integer types */ ++ ++/* Note: Other substitutes may define these types differently. ++ It is not recommended to use these types in public header files. */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types ++ are taken from the same list of types. The following code normally ++ uses types consistent with glibc, as that lessens the chance of ++ incompatibility with older GNU hosts. */ ++ ++#undef int_fast8_t ++#undef uint_fast8_t ++#undef int_fast16_t ++#undef uint_fast16_t ++#undef int_fast32_t ++#undef uint_fast32_t ++#undef int_fast64_t ++#undef uint_fast64_t ++typedef signed char gl_int_fast8_t; ++typedef unsigned char gl_uint_fast8_t; ++ ++#ifdef __sun ++/* Define types compatible with SunOS 5.10, so that code compiled under ++ earlier SunOS versions works with code compiled under SunOS 5.10. */ ++typedef int gl_int_fast32_t; ++typedef unsigned int gl_uint_fast32_t; ++#else ++typedef long int gl_int_fast32_t; ++typedef unsigned long int gl_uint_fast32_t; ++#endif ++typedef gl_int_fast32_t gl_int_fast16_t; ++typedef gl_uint_fast32_t gl_uint_fast16_t; ++ ++#define int_fast8_t gl_int_fast8_t ++#define uint_fast8_t gl_uint_fast8_t ++#define int_fast16_t gl_int_fast16_t ++#define uint_fast16_t gl_uint_fast16_t ++#define int_fast32_t gl_int_fast32_t ++#define uint_fast32_t gl_uint_fast32_t ++#ifdef GL_INT64_T ++# define int_fast64_t int64_t ++#endif ++#ifdef GL_UINT64_T ++# define uint_fast64_t uint64_t ++#endif ++ ++/* 7.18.1.4. Integer types capable of holding object pointers */ ++ ++/* kLIBC's stdint.h defines _INTPTR_T_DECLARED and needs its own ++ definitions of intptr_t and uintptr_t (which use int and unsigned) ++ to avoid clashes with declarations of system functions like sbrk. */ ++#ifndef _INTPTR_T_DECLARED ++#undef intptr_t ++#undef uintptr_t ++typedef long int gl_intptr_t; ++typedef unsigned long int gl_uintptr_t; ++#define intptr_t gl_intptr_t ++#define uintptr_t gl_uintptr_t ++#endif ++ ++/* 7.18.1.5. Greatest-width integer types */ ++ ++/* Note: These types are compiler dependent. It may be unwise to use them in ++ public header files. */ ++ ++/* If the system defines INTMAX_MAX, assume that intmax_t works, and ++ similarly for UINTMAX_MAX and uintmax_t. This avoids problems with ++ assuming one type where another is used by the system. */ ++ ++#ifndef INTMAX_MAX ++# undef INTMAX_C ++# undef intmax_t ++# if 1 && LONG_MAX >> 30 == 1 ++typedef long long int gl_intmax_t; ++# define intmax_t gl_intmax_t ++# elif defined GL_INT64_T ++# define intmax_t int64_t ++# else ++typedef long int gl_intmax_t; ++# define intmax_t gl_intmax_t ++# endif ++#endif ++ ++#ifndef UINTMAX_MAX ++# undef UINTMAX_C ++# undef uintmax_t ++# if 1 && ULONG_MAX >> 31 == 1 ++typedef unsigned long long int gl_uintmax_t; ++# define uintmax_t gl_uintmax_t ++# elif defined GL_UINT64_T ++# define uintmax_t uint64_t ++# else ++typedef unsigned long int gl_uintmax_t; ++# define uintmax_t gl_uintmax_t ++# endif ++#endif ++ ++/* Verify that intmax_t and uintmax_t have the same size. Too much code ++ breaks if this is not the case. If this check fails, the reason is likely ++ to be found in the autoconf macros. */ ++typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ++ ? 1 : -1]; ++ ++#define GNULIB_defined_stdint_types 1 ++#endif /* !GNULIB_defined_stdint_types */ ++ ++/* 7.18.2. Limits of specified-width integer types */ ++ ++/* 7.18.2.1. Limits of exact-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. */ ++ ++#undef INT8_MIN ++#undef INT8_MAX ++#undef UINT8_MAX ++#define INT8_MIN (~ INT8_MAX) ++#define INT8_MAX 127 ++#define UINT8_MAX 255 ++ ++#undef INT16_MIN ++#undef INT16_MAX ++#undef UINT16_MAX ++#define INT16_MIN (~ INT16_MAX) ++#define INT16_MAX 32767 ++#define UINT16_MAX 65535 ++ ++#undef INT32_MIN ++#undef INT32_MAX ++#undef UINT32_MAX ++#define INT32_MIN (~ INT32_MAX) ++#define INT32_MAX 2147483647 ++#define UINT32_MAX 4294967295U ++ ++#if defined GL_INT64_T && ! defined INT64_MAX ++/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 ++ evaluates the latter incorrectly in preprocessor expressions. */ ++# define INT64_MIN (- INTMAX_C (1) << 63) ++# define INT64_MAX INTMAX_C (9223372036854775807) ++#endif ++ ++#if defined GL_UINT64_T && ! defined UINT64_MAX ++# define UINT64_MAX UINTMAX_C (18446744073709551615) ++#endif ++ ++/* 7.18.2.2. Limits of minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types ++ are the same as the corresponding N_t types. */ ++ ++#undef INT_LEAST8_MIN ++#undef INT_LEAST8_MAX ++#undef UINT_LEAST8_MAX ++#define INT_LEAST8_MIN INT8_MIN ++#define INT_LEAST8_MAX INT8_MAX ++#define UINT_LEAST8_MAX UINT8_MAX ++ ++#undef INT_LEAST16_MIN ++#undef INT_LEAST16_MAX ++#undef UINT_LEAST16_MAX ++#define INT_LEAST16_MIN INT16_MIN ++#define INT_LEAST16_MAX INT16_MAX ++#define UINT_LEAST16_MAX UINT16_MAX ++ ++#undef INT_LEAST32_MIN ++#undef INT_LEAST32_MAX ++#undef UINT_LEAST32_MAX ++#define INT_LEAST32_MIN INT32_MIN ++#define INT_LEAST32_MAX INT32_MAX ++#define UINT_LEAST32_MAX UINT32_MAX ++ ++#undef INT_LEAST64_MIN ++#undef INT_LEAST64_MAX ++#ifdef GL_INT64_T ++# define INT_LEAST64_MIN INT64_MIN ++# define INT_LEAST64_MAX INT64_MAX ++#endif ++ ++#undef UINT_LEAST64_MAX ++#ifdef GL_UINT64_T ++# define UINT_LEAST64_MAX UINT64_MAX ++#endif ++ ++/* 7.18.2.3. Limits of fastest minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types ++ are taken from the same list of types. */ ++ ++#undef INT_FAST8_MIN ++#undef INT_FAST8_MAX ++#undef UINT_FAST8_MAX ++#define INT_FAST8_MIN SCHAR_MIN ++#define INT_FAST8_MAX SCHAR_MAX ++#define UINT_FAST8_MAX UCHAR_MAX ++ ++#undef INT_FAST16_MIN ++#undef INT_FAST16_MAX ++#undef UINT_FAST16_MAX ++#define INT_FAST16_MIN INT_FAST32_MIN ++#define INT_FAST16_MAX INT_FAST32_MAX ++#define UINT_FAST16_MAX UINT_FAST32_MAX ++ ++#undef INT_FAST32_MIN ++#undef INT_FAST32_MAX ++#undef UINT_FAST32_MAX ++#ifdef __sun ++# define INT_FAST32_MIN INT_MIN ++# define INT_FAST32_MAX INT_MAX ++# define UINT_FAST32_MAX UINT_MAX ++#else ++# define INT_FAST32_MIN LONG_MIN ++# define INT_FAST32_MAX LONG_MAX ++# define UINT_FAST32_MAX ULONG_MAX ++#endif ++ ++#undef INT_FAST64_MIN ++#undef INT_FAST64_MAX ++#ifdef GL_INT64_T ++# define INT_FAST64_MIN INT64_MIN ++# define INT_FAST64_MAX INT64_MAX ++#endif ++ ++#undef UINT_FAST64_MAX ++#ifdef GL_UINT64_T ++# define UINT_FAST64_MAX UINT64_MAX ++#endif ++ ++/* 7.18.2.4. Limits of integer types capable of holding object pointers */ ++ ++#undef INTPTR_MIN ++#undef INTPTR_MAX ++#undef UINTPTR_MAX ++#define INTPTR_MIN LONG_MIN ++#define INTPTR_MAX LONG_MAX ++#define UINTPTR_MAX ULONG_MAX ++ ++/* 7.18.2.5. Limits of greatest-width integer types */ ++ ++#ifndef INTMAX_MAX ++# undef INTMAX_MIN ++# ifdef INT64_MAX ++# define INTMAX_MIN INT64_MIN ++# define INTMAX_MAX INT64_MAX ++# else ++# define INTMAX_MIN INT32_MIN ++# define INTMAX_MAX INT32_MAX ++# endif ++#endif ++ ++#ifndef UINTMAX_MAX ++# ifdef UINT64_MAX ++# define UINTMAX_MAX UINT64_MAX ++# else ++# define UINTMAX_MAX UINT32_MAX ++# endif ++#endif ++ ++/* 7.18.3. Limits of other integer types */ ++ ++/* ptrdiff_t limits */ ++#undef PTRDIFF_MIN ++#undef PTRDIFF_MAX ++#if 0 ++# ifdef _LP64 ++# define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) ++# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) ++# else ++# define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) ++# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) ++# endif ++#else ++# ifdef _WIN64 ++# define PTRDIFF_MIN \ ++ _STDINT_MIN (1, 64, 0ll) ++# define PTRDIFF_MAX \ ++ _STDINT_MAX (1, 64, 0ll) ++# else ++# define PTRDIFF_MIN \ ++ _STDINT_MIN (1, 32, 0) ++# define PTRDIFF_MAX \ ++ _STDINT_MAX (1, 32, 0) ++# endif ++#endif ++ ++/* sig_atomic_t limits */ ++#undef SIG_ATOMIC_MIN ++#undef SIG_ATOMIC_MAX ++#define SIG_ATOMIC_MIN \ ++ _STDINT_MIN (1, 32, \ ++ 0) ++#define SIG_ATOMIC_MAX \ ++ _STDINT_MAX (1, 32, \ ++ 0) ++ ++ ++/* size_t limit */ ++#undef SIZE_MAX ++#if 0 ++# ifdef _LP64 ++# define SIZE_MAX _STDINT_MAX (0, 64, 0ul) ++# else ++# define SIZE_MAX _STDINT_MAX (0, 32, 0ul) ++# endif ++#else ++# ifdef _WIN64 ++# define SIZE_MAX _STDINT_MAX (0, 64, 0ull) ++# else ++# define SIZE_MAX _STDINT_MAX (0, 32, 0u) ++# endif ++#endif ++ ++/* wchar_t limits */ ++/* Get WCHAR_MIN, WCHAR_MAX. ++ This include is not on the top, above, because on OSF/1 4.0 we have a ++ sequence of nested includes ++ -> -> -> , and the latter includes ++ and assumes its types are already defined. */ ++#if 1 && ! (defined WCHAR_MIN && defined WCHAR_MAX) ++ /* BSD/OS 4.0.1 has a bug: , and must be ++ included before . */ ++# include ++# include ++# include ++# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H ++# include ++# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H ++#endif ++#undef WCHAR_MIN ++#undef WCHAR_MAX ++#define WCHAR_MIN \ ++ _STDINT_MIN (0, 16, 0) ++#define WCHAR_MAX \ ++ _STDINT_MAX (0, 16, 0) ++ ++/* wint_t limits */ ++#undef WINT_MIN ++#undef WINT_MAX ++#define WINT_MIN \ ++ _STDINT_MIN (0, 32, 0) ++#define WINT_MAX \ ++ _STDINT_MAX (0, 32, 0) ++ ++/* 7.18.4. Macros for integer constants */ ++ ++/* 7.18.4.1. Macros for minimum-width integer constants */ ++/* According to ISO C 99 Technical Corrigendum 1 */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ ++ ++#undef INT8_C ++#undef UINT8_C ++#define INT8_C(x) x ++#define UINT8_C(x) x ++ ++#undef INT16_C ++#undef UINT16_C ++#define INT16_C(x) x ++#define UINT16_C(x) x ++ ++#undef INT32_C ++#undef UINT32_C ++#define INT32_C(x) x ++#define UINT32_C(x) x ## U ++ ++#undef INT64_C ++#undef UINT64_C ++#if LONG_MAX >> 31 >> 31 == 1 ++# define INT64_C(x) x##L ++#elif defined _MSC_VER ++# define INT64_C(x) x##i64 ++#elif 1 ++# define INT64_C(x) x##LL ++#endif ++#if ULONG_MAX >> 31 >> 31 >> 1 == 1 ++# define UINT64_C(x) x##UL ++#elif defined _MSC_VER ++# define UINT64_C(x) x##ui64 ++#elif 1 ++# define UINT64_C(x) x##ULL ++#endif ++ ++/* 7.18.4.2. Macros for greatest-width integer constants */ ++ ++#ifndef INTMAX_C ++# if 1 && LONG_MAX >> 30 == 1 ++# define INTMAX_C(x) x##LL ++# elif defined GL_INT64_T ++# define INTMAX_C(x) INT64_C(x) ++# else ++# define INTMAX_C(x) x##L ++# endif ++#endif ++ ++#ifndef UINTMAX_C ++# if 1 && ULONG_MAX >> 31 == 1 ++# define UINTMAX_C(x) x##ULL ++# elif defined GL_UINT64_T ++# define UINTMAX_C(x) UINT64_C(x) ++# else ++# define UINTMAX_C(x) x##UL ++# endif ++#endif ++ ++#endif /* _GL_STDINT_H */ ++#endif /* !(defined __ANDROID__ && ...) */ ++#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ ++#endif /* _MSC_VER < 1700 */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdio.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdio.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdio.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdio.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1669 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2004, 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H ++/* Special invocation convention: ++ - Inside glibc header files. ++ - On OSF/1 5.1 we have a sequence of nested includes ++ -> -> -> -> ++ -> -> -> . ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. */ ++ ++#include MSVC_INCLUDE(stdio.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_STDIO_H ++ ++#define _GL_ALREADY_INCLUDING_STDIO_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(stdio.h) ++ ++#undef _GL_ALREADY_INCLUDING_STDIO_H ++ ++#ifndef _GL_STDIO_H ++#define _GL_STDIO_H ++ ++/* Get va_list. Needed on many systems, including glibc 2.8. */ ++#include ++ ++#include ++ ++/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 ++ and eglibc 2.11.2. ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The __-protected variants of the attributes 'format' and 'printf' are ++ accepted by gcc versions 2.6.4 (effectively 2.7) and later. ++ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because ++ gnulib and libintl do '#define printf __printf__' when they override ++ the 'printf' function. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) ++#else ++# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_PRINTF ++ indicates to GCC that the function takes a format string and arguments, ++ where the format string directives are the ones standardized by ISO C99 ++ and POSIX. */ ++#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) ++# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) ++#else ++# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, ++ except that it indicates to GCC that the supported format string directives ++ are the ones of the system printf(), rather than the ones standardized by ++ ISO C99 and POSIX. */ ++#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU ++# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument) ++#else ++# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_SCANF ++ indicates to GCC that the function takes a format string and arguments, ++ where the format string directives are the ones standardized by ISO C99 ++ and POSIX. */ ++#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) ++# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) ++#else ++# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, ++ except that it indicates to GCC that the supported format string directives ++ are the ones of the system scanf(), rather than the ones standardized by ++ ISO C99 and POSIX. */ ++#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) ++ ++/* Solaris 10 declares renameat in , not in . */ ++/* But in any case avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __sun \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Macros for stringification. */ ++#define _GL_STDIO_STRINGIZE(token) #token ++#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) ++ ++/* When also using extern inline, suppress the use of static inline in ++ standard headers of problematic Apple configurations, as Libc at ++ least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., ++ . ++ Perhaps Apple will fix this some day. */ ++#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ ++ && defined __GNUC__ && defined __STDC__) ++# undef putc_unlocked ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dprintf rpl_dprintf ++# endif ++_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (dprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef dprintf ++# if HAVE_RAW_DECL_DPRINTF ++_GL_WARN_ON_USE (dprintf, "dprintf is unportable - " ++ "use gnulib module dprintf for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Close STREAM and its underlying file descriptor. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fclose rpl_fclose ++# endif ++_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fclose); ++#elif defined GNULIB_POSIXCHECK ++# undef fclose ++/* Assume fclose is always declared. */ ++_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " ++ "use gnulib module fclose for portable POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fdopen ++# define fdopen rpl_fdopen ++# endif ++_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); ++# else ++_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); ++# endif ++_GL_CXXALIASWARN (fdopen); ++#elif defined GNULIB_POSIXCHECK ++# undef fdopen ++/* Assume fdopen is always declared. */ ++_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module fdopen for portability"); ++#endif ++ ++#if 0 ++/* Flush all pending data on STREAM according to POSIX rules. Both ++ output and seekable input streams are supported. ++ Note! LOSS OF DATA can occur if fflush is applied on an input stream ++ that is _not_seekable_ or on an update stream that is _not_seekable_ ++ and in which the most recent operation was input. Seekability can ++ be tested with lseek(fileno(fp),0,SEEK_CUR). */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fflush rpl_fflush ++# endif ++_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); ++_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); ++# else ++_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); ++# endif ++_GL_CXXALIASWARN (fflush); ++#elif defined GNULIB_POSIXCHECK ++# undef fflush ++/* Assume fflush is always declared. */ ++_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " ++ "use gnulib module fflush for portable POSIX compliance"); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fgetc ++# define fgetc rpl_fgetc ++# endif ++_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fgetc); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fgets ++# define fgets rpl_fgets ++# endif ++_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fgets); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fopen ++# define fopen rpl_fopen ++# endif ++_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); ++# else ++_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); ++# endif ++_GL_CXXALIASWARN (fopen); ++#elif defined GNULIB_POSIXCHECK ++# undef fopen ++/* Assume fopen is always declared. */ ++_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module fopen for portability"); ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fprintf rpl_fprintf ++# endif ++# define GNULIB_overrides_fprintf 1 ++# if 0 || 0 ++_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# else ++_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (fprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_fprintf ++# undef fprintf ++# endif ++/* Assume fprintf is always declared. */ ++_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " ++ "use gnulib module fprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++/* Discard all pending buffered I/O data on STREAM. ++ STREAM must not be wide-character oriented. ++ When discarding pending output, the file position is set back to where it ++ was before the write calls. When discarding pending input, the file ++ position is advanced to match the end of the previously read input. ++ Return 0 if successful. Upon error, return -1 and set errno. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fpurge rpl_fpurge ++# endif ++_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); ++# endif ++_GL_CXXALIASWARN (fpurge); ++#elif defined GNULIB_POSIXCHECK ++# undef fpurge ++# if HAVE_RAW_DECL_FPURGE ++_GL_WARN_ON_USE (fpurge, "fpurge is not always present - " ++ "use gnulib module fpurge for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fputc ++# define fputc rpl_fputc ++# endif ++_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fputc); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fputs ++# define fputs rpl_fputs ++# endif ++_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fputs); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fread ++# define fread rpl_fread ++# endif ++_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) ++ _GL_ARG_NONNULL ((4))); ++_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fread); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef freopen ++# define freopen rpl_freopen ++# endif ++_GL_FUNCDECL_RPL (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (freopen); ++#elif defined GNULIB_POSIXCHECK ++# undef freopen ++/* Assume freopen is always declared. */ ++_GL_WARN_ON_USE (freopen, ++ "freopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module freopen for portability"); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fscanf ++# define fscanf rpl_fscanf ++# endif ++_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (fscanf); ++#endif ++ ++ ++/* Set up the following warnings, based on which modules are in use. ++ GNU Coding Standards discourage the use of fseek, since it imposes ++ an arbitrary limitation on some 32-bit hosts. Remember that the ++ fseek module depends on the fseeko module, so we only have three ++ cases to consider: ++ ++ 1. The developer is not using either module. Issue a warning under ++ GNULIB_POSIXCHECK for both functions, to remind them that both ++ functions have bugs on some systems. _GL_NO_LARGE_FILES has no ++ impact on this warning. ++ ++ 2. The developer is using both modules. They may be unaware of the ++ arbitrary limitations of fseek, so issue a warning under ++ GNULIB_POSIXCHECK. On the other hand, they may be using both ++ modules intentionally, so the developer can define ++ _GL_NO_LARGE_FILES in the compilation units where the use of fseek ++ is safe, to silence the warning. ++ ++ 3. The developer is using the fseeko module, but not fseek. Gnulib ++ guarantees that fseek will still work around platform bugs in that ++ case, but we presume that the developer is aware of the pitfalls of ++ fseek and was trying to avoid it, so issue a warning even when ++ GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be ++ defined to silence the warning in particular compilation units. ++ In C++ compilations with GNULIB_NAMESPACE, in order to avoid that ++ fseek gets defined as a macro, it is recommended that the developer ++ uses the fseek module, even if he is not calling the fseek function. ++ ++ Most gnulib clients that perform stream operations should fall into ++ category 3. */ ++ ++#if 0 ++# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES ++# define _GL_FSEEK_WARN /* Category 2, above. */ ++# undef fseek ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fseek ++# define fseek rpl_fseek ++# endif ++_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); ++# else ++_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); ++# endif ++_GL_CXXALIASWARN (fseek); ++#endif ++ ++#if 0 ++# if !0 && !defined _GL_NO_LARGE_FILES ++# define _GL_FSEEK_WARN /* Category 3, above. */ ++# undef fseek ++# endif ++# if 0 ++/* Provide an fseeko function that is aware of a preceding fflush(), and which ++ detects pipes. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fseeko ++# define fseeko rpl_fseeko ++# endif ++_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); ++# endif ++_GL_CXXALIASWARN (fseeko); ++#elif defined GNULIB_POSIXCHECK ++# define _GL_FSEEK_WARN /* Category 1, above. */ ++# undef fseek ++# undef fseeko ++# if HAVE_RAW_DECL_FSEEKO ++_GL_WARN_ON_USE (fseeko, "fseeko is unportable - " ++ "use gnulib module fseeko for portability"); ++# endif ++#endif ++ ++#ifdef _GL_FSEEK_WARN ++# undef _GL_FSEEK_WARN ++/* Here, either fseek is undefined (but C89 guarantees that it is ++ declared), or it is defined as rpl_fseek (declared above). */ ++_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " ++ "on 32-bit platforms - " ++ "use fseeko function for handling of large files"); ++#endif ++ ++ ++/* ftell, ftello. See the comments on fseek/fseeko. */ ++ ++#if 0 ++# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES ++# define _GL_FTELL_WARN /* Category 2, above. */ ++# undef ftell ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftell ++# define ftell rpl_ftell ++# endif ++_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); ++# else ++_GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); ++# endif ++_GL_CXXALIASWARN (ftell); ++#endif ++ ++#if 0 ++# if !0 && !defined _GL_NO_LARGE_FILES ++# define _GL_FTELL_WARN /* Category 3, above. */ ++# undef ftell ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftello ++# define ftello rpl_ftello ++# endif ++_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); ++# endif ++_GL_CXXALIASWARN (ftello); ++#elif defined GNULIB_POSIXCHECK ++# define _GL_FTELL_WARN /* Category 1, above. */ ++# undef ftell ++# undef ftello ++# if HAVE_RAW_DECL_FTELLO ++_GL_WARN_ON_USE (ftello, "ftello is unportable - " ++ "use gnulib module ftello for portability"); ++# endif ++#endif ++ ++#ifdef _GL_FTELL_WARN ++# undef _GL_FTELL_WARN ++/* Here, either ftell is undefined (but C89 guarantees that it is ++ declared), or it is defined as rpl_ftell (declared above). */ ++_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " ++ "on 32-bit platforms - " ++ "use ftello function for handling of large files"); ++#endif ++ ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fwrite ++# define fwrite rpl_fwrite ++# endif ++_GL_FUNCDECL_RPL (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream) ++ _GL_ARG_NONNULL ((1, 4))); ++_GL_CXXALIAS_RPL (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream)); ++ ++/* Work around bug 11959 when fortifying glibc 2.4 through 2.15 ++ , ++ which sometimes causes an unwanted diagnostic for fwrite calls. ++ This affects only function declaration attributes under certain ++ versions of gcc and clang, and is not needed for C++. */ ++# if (0 < __USE_FORTIFY_LEVEL \ ++ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ ++ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ ++ && !defined __cplusplus) ++# undef fwrite ++# undef fwrite_unlocked ++extern size_t __REDIRECT (rpl_fwrite, ++ (const void *__restrict, size_t, size_t, ++ FILE *__restrict), ++ fwrite); ++extern size_t __REDIRECT (rpl_fwrite_unlocked, ++ (const void *__restrict, size_t, size_t, ++ FILE *__restrict), ++ fwrite_unlocked); ++# define fwrite rpl_fwrite ++# define fwrite_unlocked rpl_fwrite_unlocked ++# endif ++# endif ++_GL_CXXALIASWARN (fwrite); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getc ++# define getc rpl_fgetc ++# endif ++_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (getc, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (getc); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getchar ++# define getchar rpl_getchar ++# endif ++_GL_FUNCDECL_RPL (getchar, int, (void)); ++_GL_CXXALIAS_RPL (getchar, int, (void)); ++# else ++_GL_CXXALIAS_SYS (getchar, int, (void)); ++# endif ++_GL_CXXALIASWARN (getchar); ++#endif ++ ++#if 0 ++/* Read input, up to (and including) the next occurrence of DELIMITER, from ++ STREAM, store it in *LINEPTR (and NUL-terminate it). ++ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE ++ bytes of space. It is realloc'd as necessary. ++ Return the number of bytes read and stored at *LINEPTR (not including the ++ NUL terminator), or -1 on error or EOF. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdelim ++# define getdelim rpl_getdelim ++# endif ++_GL_FUNCDECL_RPL (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 4))); ++_GL_CXXALIAS_RPL (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 4))); ++# endif ++_GL_CXXALIAS_SYS (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream)); ++# endif ++_GL_CXXALIASWARN (getdelim); ++#elif defined GNULIB_POSIXCHECK ++# undef getdelim ++# if HAVE_RAW_DECL_GETDELIM ++_GL_WARN_ON_USE (getdelim, "getdelim is unportable - " ++ "use gnulib module getdelim for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Read a line, up to (and including) the next newline, from STREAM, store it ++ in *LINEPTR (and NUL-terminate it). ++ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE ++ bytes of space. It is realloc'd as necessary. ++ Return the number of bytes read and stored at *LINEPTR (not including the ++ NUL terminator), or -1 on error or EOF. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getline ++# define getline rpl_getline ++# endif ++_GL_FUNCDECL_RPL (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++_GL_CXXALIAS_RPL (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (getline); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef getline ++# if HAVE_RAW_DECL_GETLINE ++_GL_WARN_ON_USE (getline, "getline is unportable - " ++ "use gnulib module getline for portability"); ++# endif ++#endif ++ ++/* It is very rare that the developer ever has full control of stdin, ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS && !defined __cplusplus ++_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ++#endif ++ ++#if 0 || 0 ++struct obstack; ++/* Grow an obstack with formatted output. Return the number of ++ bytes added to OBS. No trailing nul byte is added, and the ++ object should be closed with obstack_finish before use. Upon ++ memory allocation error, call obstack_alloc_failed_handler. Upon ++ other error, return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define obstack_printf rpl_obstack_printf ++# endif ++_GL_FUNCDECL_RPL (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (obstack_printf); ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define obstack_vprintf rpl_obstack_vprintf ++# endif ++_GL_FUNCDECL_RPL (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (obstack_vprintf); ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); ++_GL_CXXALIASWARN (pclose); ++#elif defined GNULIB_POSIXCHECK ++# undef pclose ++# if HAVE_RAW_DECL_PCLOSE ++_GL_WARN_ON_USE (pclose, "pclose is unportable - " ++ "use gnulib module pclose for more portability"); ++# endif ++#endif ++ ++#if 0 ++/* Print a message to standard error, describing the value of ERRNO, ++ (if STRING is not NULL and not empty) prefixed with STRING and ": ", ++ and terminated with a newline. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define perror rpl_perror ++# endif ++_GL_FUNCDECL_RPL (perror, void, (const char *string)); ++_GL_CXXALIAS_RPL (perror, void, (const char *string)); ++# else ++_GL_CXXALIAS_SYS (perror, void, (const char *string)); ++# endif ++_GL_CXXALIASWARN (perror); ++#elif defined GNULIB_POSIXCHECK ++# undef perror ++/* Assume perror is always declared. */ ++_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " ++ "use gnulib module perror for portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef popen ++# define popen rpl_popen ++# endif ++_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); ++# endif ++_GL_CXXALIASWARN (popen); ++#elif defined GNULIB_POSIXCHECK ++# undef popen ++# if HAVE_RAW_DECL_POPEN ++_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " ++ "use gnulib module popen or pipe for more portability"); ++# endif ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if defined __GNUC__ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++/* Don't break __attribute__((format(printf,M,N))). */ ++# define printf __printf__ ++# endif ++# if 0 || 0 ++_GL_FUNCDECL_RPL_1 (__printf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) ++ _GL_ARG_NONNULL ((1))); ++# else ++_GL_FUNCDECL_RPL_1 (__printf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); ++# else ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define printf rpl_printf ++# endif ++_GL_FUNCDECL_RPL (printf, int, ++ (const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); ++# endif ++# define GNULIB_overrides_printf 1 ++# else ++_GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (printf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_printf ++# undef printf ++# endif ++/* Assume printf is always declared. */ ++_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " ++ "use gnulib module printf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putc ++# define putc rpl_fputc ++# endif ++_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (putc); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putchar ++# define putchar rpl_putchar ++# endif ++_GL_FUNCDECL_RPL (putchar, int, (int c)); ++_GL_CXXALIAS_RPL (putchar, int, (int c)); ++# else ++_GL_CXXALIAS_SYS (putchar, int, (int c)); ++# endif ++_GL_CXXALIASWARN (putchar); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef puts ++# define puts rpl_puts ++# endif ++_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (puts, int, (const char *string)); ++# else ++_GL_CXXALIAS_SYS (puts, int, (const char *string)); ++# endif ++_GL_CXXALIASWARN (puts); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef remove ++# define remove rpl_remove ++# endif ++_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (remove, int, (const char *name)); ++# else ++_GL_CXXALIAS_SYS (remove, int, (const char *name)); ++# endif ++_GL_CXXALIASWARN (remove); ++#elif defined GNULIB_POSIXCHECK ++# undef remove ++/* Assume remove is always declared. */ ++_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " ++ "use gnulib module remove for more portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef rename ++# define rename rpl_rename ++# endif ++_GL_FUNCDECL_RPL (rename, int, ++ (const char *old_filename, const char *new_filename) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (rename, int, ++ (const char *old_filename, const char *new_filename)); ++# else ++_GL_CXXALIAS_SYS (rename, int, ++ (const char *old_filename, const char *new_filename)); ++# endif ++_GL_CXXALIASWARN (rename); ++#elif defined GNULIB_POSIXCHECK ++# undef rename ++/* Assume rename is always declared. */ ++_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " ++ "use gnulib module rename for more portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef renameat ++# define renameat rpl_renameat ++# endif ++_GL_FUNCDECL_RPL (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2)); ++# endif ++_GL_CXXALIASWARN (renameat); ++#elif defined GNULIB_POSIXCHECK ++# undef renameat ++# if HAVE_RAW_DECL_RENAMEAT ++_GL_WARN_ON_USE (renameat, "renameat is not portable - " ++ "use gnulib module renameat for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if defined __GNUC__ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef scanf ++/* Don't break __attribute__((format(scanf,M,N))). */ ++# define scanf __scanf__ ++# endif ++_GL_FUNCDECL_RPL_1 (__scanf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); ++# else ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef scanf ++# define scanf rpl_scanf ++# endif ++_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); ++# endif ++# else ++_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (scanf); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define snprintf rpl_snprintf ++# endif ++_GL_FUNCDECL_RPL (snprintf, int, ++ (char *str, size_t size, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) ++ _GL_ARG_NONNULL ((3))); ++_GL_CXXALIAS_RPL (snprintf, int, ++ (char *str, size_t size, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (snprintf, int, ++ (char *str, size_t size, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) ++ _GL_ARG_NONNULL ((3))); ++# endif ++_GL_CXXALIAS_SYS (snprintf, int, ++ (char *str, size_t size, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (snprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef snprintf ++# if HAVE_RAW_DECL_SNPRINTF ++_GL_WARN_ON_USE (snprintf, "snprintf is unportable - " ++ "use gnulib module snprintf for portability"); ++# endif ++#endif ++ ++/* Some people would argue that all sprintf uses should be warned about ++ (for example, OpenBSD issues a link warning for it), ++ since it can cause security holes due to buffer overruns. ++ However, we believe that sprintf can be used safely, and is more ++ efficient than snprintf in those safe cases; and as proof of our ++ belief, we use sprintf in several gnulib modules. So this header ++ intentionally avoids adding a warning to sprintf except when ++ GNULIB_POSIXCHECK is defined. */ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define sprintf rpl_sprintf ++# endif ++_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (sprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef sprintf ++/* Assume sprintf is always declared. */ ++_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " ++ "use gnulib module sprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define tmpfile rpl_tmpfile ++# endif ++_GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); ++_GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); ++# else ++_GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); ++# endif ++_GL_CXXALIASWARN (tmpfile); ++#elif defined GNULIB_POSIXCHECK ++# undef tmpfile ++# if HAVE_RAW_DECL_TMPFILE ++_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " ++ "use gnulib module tmpfile for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Write formatted output to a string dynamically allocated with malloc(). ++ If the memory allocation succeeds, store the address of the string in ++ *RESULT and return the number of resulting bytes, excluding the trailing ++ NUL. Upon memory allocation error, or some other error, return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define asprintf rpl_asprintf ++# endif ++_GL_FUNCDECL_RPL (asprintf, int, ++ (char **result, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (asprintf, int, ++ (char **result, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (asprintf, int, ++ (char **result, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (asprintf, int, ++ (char **result, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (asprintf); ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vasprintf rpl_vasprintf ++# endif ++_GL_FUNCDECL_RPL (vasprintf, int, ++ (char **result, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vasprintf, int, ++ (char **result, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (vasprintf, int, ++ (char **result, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (vasprintf, int, ++ (char **result, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vasprintf); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vdprintf rpl_vdprintf ++# endif ++_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((2))); ++# endif ++/* Need to cast, because on Solaris, the third parameter will likely be ++ __va_list args. */ ++_GL_CXXALIAS_SYS_CAST (vdprintf, int, ++ (int fd, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vdprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vdprintf ++# if HAVE_RAW_DECL_VDPRINTF ++_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " ++ "use gnulib module vdprintf for portability"); ++# endif ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vfprintf rpl_vfprintf ++# endif ++# define GNULIB_overrides_vfprintf 1 ++# if 0 ++_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# else ++_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the third parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vfprintf, int, ++ (FILE *fp, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vfprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_vfprintf ++# undef vfprintf ++# endif ++/* Assume vfprintf is always declared. */ ++_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " ++ "use gnulib module vfprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef vfscanf ++# define vfscanf rpl_vfscanf ++# endif ++_GL_FUNCDECL_RPL (vfscanf, int, ++ (FILE *stream, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vfscanf, int, ++ (FILE *stream, const char *format, va_list args)); ++# else ++_GL_CXXALIAS_SYS (vfscanf, int, ++ (FILE *stream, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vfscanf); ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vprintf rpl_vprintf ++# endif ++# define GNULIB_overrides_vprintf 1 ++# if 0 || 0 ++_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) ++ _GL_ARG_NONNULL ((1))); ++# else ++_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the second parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_vprintf ++# undef vprintf ++# endif ++/* Assume vprintf is always declared. */ ++_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " ++ "use gnulib module vprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef vscanf ++# define vscanf rpl_vscanf ++# endif ++_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); ++# else ++_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vscanf); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vsnprintf rpl_vsnprintf ++# endif ++_GL_FUNCDECL_RPL (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) ++ _GL_ARG_NONNULL ((3))); ++_GL_CXXALIAS_RPL (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) ++ _GL_ARG_NONNULL ((3))); ++# endif ++_GL_CXXALIAS_SYS (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vsnprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vsnprintf ++# if HAVE_RAW_DECL_VSNPRINTF ++_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " ++ "use gnulib module vsnprintf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vsprintf rpl_vsprintf ++# endif ++_GL_FUNCDECL_RPL (vsprintf, int, ++ (char *str, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vsprintf, int, ++ (char *str, const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the third parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vsprintf, int, ++ (char *str, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vsprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vsprintf ++/* Assume vsprintf is always declared. */ ++_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " ++ "use gnulib module vsprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#endif /* _GL_STDIO_H */ ++#endif /* _GL_STDIO_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdlib.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdlib.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/stdlib.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/stdlib.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1299 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 1995, 2001-2004, 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc ++/* Special invocation conventions inside some gnulib header files, ++ and inside some glibc header files, respectively. */ ++ ++#include MSVC_INCLUDE(stdlib.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_STDLIB_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(stdlib.h) ++ ++#ifndef _GL_STDLIB_H ++#define _GL_STDLIB_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* MirBSD 10 defines WEXITSTATUS in , not in . */ ++#if 0 && !defined WEXITSTATUS ++# include ++#endif ++ ++/* Solaris declares getloadavg() in . */ ++#if (0 || defined GNULIB_POSIXCHECK) && 0 ++# include ++#endif ++ ++/* Native Windows platforms declare mktemp() in . */ ++#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++#if 0 ++ ++/* OSF/1 5.1 declares 'struct random_data' in , which is included ++ from if _REENTRANT is defined. Include it whenever we need ++ 'struct random_data'. */ ++# if 1 ++# include ++# endif ++ ++# if !1 || 0 || !1 ++# include ++# endif ++ ++# if !1 ++/* Define 'struct random_data'. ++ But allow multiple gnulib generated replacements to coexist. */ ++# if !GNULIB_defined_struct_random_data ++struct random_data ++{ ++ int32_t *fptr; /* Front pointer. */ ++ int32_t *rptr; /* Rear pointer. */ ++ int32_t *state; /* Array of state values. */ ++ int rand_type; /* Type of random number generator. */ ++ int rand_deg; /* Degree of random number generator. */ ++ int rand_sep; /* Distance between front and rear. */ ++ int32_t *end_ptr; /* Pointer behind state table. */ ++}; ++# define GNULIB_defined_struct_random_data 1 ++# endif ++# endif ++#endif ++ ++#if (0 || 0 || 0 || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++/* On Mac OS X 10.3, only declares mkstemp. */ ++/* On Mac OS X 10.5, only declares mkstemps. */ ++/* On Cygwin 1.7.1, only declares getsubopt. */ ++/* But avoid namespace pollution on glibc systems and native Windows. */ ++# include ++#endif ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The definition of _Noreturn is copied here. */ ++#if !defined _Noreturn && __STDC_VERSION__ < 201112 ++# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ ++ || 0x5110 <= __SUNPRO_C) ++# define _Noreturn __attribute__ ((__noreturn__)) ++# elif 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn ++# endif ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Some systems do not define EXIT_*, despite otherwise supporting C89. */ ++#ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++#endif ++/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere ++ with proper operation of xargs. */ ++#ifndef EXIT_FAILURE ++# define EXIT_FAILURE 1 ++#elif EXIT_FAILURE != 1 ++# undef EXIT_FAILURE ++# define EXIT_FAILURE 1 ++#endif ++ ++ ++#if 0 ++/* Terminate the current process with the given return code, without running ++ the 'atexit' handlers. */ ++# if !1 ++_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); ++# endif ++_GL_CXXALIAS_SYS (_Exit, void, (int status)); ++_GL_CXXALIASWARN (_Exit); ++#elif defined GNULIB_POSIXCHECK ++# undef _Exit ++# if HAVE_RAW_DECL__EXIT ++_GL_WARN_ON_USE (_Exit, "_Exit is unportable - " ++ "use gnulib module _Exit for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Parse a signed decimal integer. ++ Returns the value of the integer. Errors are not detected. */ ++# if !1 ++_GL_FUNCDECL_SYS (atoll, long long, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (atoll, long long, (const char *string)); ++_GL_CXXALIASWARN (atoll); ++#elif defined GNULIB_POSIXCHECK ++# undef atoll ++# if HAVE_RAW_DECL_ATOLL ++_GL_WARN_ON_USE (atoll, "atoll is unportable - " ++ "use gnulib module atoll for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef calloc ++# define calloc rpl_calloc ++# endif ++_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); ++_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); ++# else ++_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); ++# endif ++_GL_CXXALIASWARN (calloc); ++#elif defined GNULIB_POSIXCHECK ++# undef calloc ++/* Assume calloc is always declared. */ ++_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " ++ "use gnulib module calloc-posix for portability"); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define canonicalize_file_name rpl_canonicalize_file_name ++# endif ++_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); ++# endif ++_GL_CXXALIASWARN (canonicalize_file_name); ++#elif defined GNULIB_POSIXCHECK ++# undef canonicalize_file_name ++# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME ++_GL_WARN_ON_USE (canonicalize_file_name, ++ "canonicalize_file_name is unportable - " ++ "use gnulib module canonicalize-lgpl for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store max(NELEM,3) load average numbers in LOADAVG[]. ++ The three numbers are the load average of the last 1 minute, the last 5 ++ minutes, and the last 15 minutes, respectively. ++ LOADAVG is an array of NELEM numbers. */ ++# if !1 ++_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); ++_GL_CXXALIASWARN (getloadavg); ++#elif defined GNULIB_POSIXCHECK ++# undef getloadavg ++# if HAVE_RAW_DECL_GETLOADAVG ++_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " ++ "use gnulib module getloadavg for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Assuming *OPTIONP is a comma separated list of elements of the form ++ "token" or "token=value", getsubopt parses the first of these elements. ++ If the first element refers to a "token" that is member of the given ++ NULL-terminated array of tokens: ++ - It replaces the comma with a NUL byte, updates *OPTIONP to point past ++ the first option and the comma, sets *VALUEP to the value of the ++ element (or NULL if it doesn't contain an "=" sign), ++ - It returns the index of the "token" in the given array of tokens. ++ Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. ++ For more details see the POSIX:2001 specification. ++ http://www.opengroup.org/susv3xsh/getsubopt.html */ ++# if !1 ++_GL_FUNCDECL_SYS (getsubopt, int, ++ (char **optionp, char *const *tokens, char **valuep) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (getsubopt, int, ++ (char **optionp, char *const *tokens, char **valuep)); ++_GL_CXXALIASWARN (getsubopt); ++#elif defined GNULIB_POSIXCHECK ++# undef getsubopt ++# if HAVE_RAW_DECL_GETSUBOPT ++_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " ++ "use gnulib module getsubopt for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Change the ownership and access permission of the slave side of the ++ pseudo-terminal whose master side is specified by FD. */ ++# if !1 ++_GL_FUNCDECL_SYS (grantpt, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (grantpt, int, (int fd)); ++_GL_CXXALIASWARN (grantpt); ++#elif defined GNULIB_POSIXCHECK ++# undef grantpt ++# if HAVE_RAW_DECL_GRANTPT ++_GL_WARN_ON_USE (grantpt, "grantpt is not portable - " ++ "use gnulib module grantpt for portability"); ++# endif ++#endif ++ ++/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not ++ rely on GNU or POSIX semantics for malloc and realloc (for example, ++ by never specifying a zero size), so it does not need malloc or ++ realloc to be redefined. */ ++#if 0 ++# if 0 ++# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ ++ || _GL_USE_STDLIB_ALLOC) ++# undef malloc ++# define malloc rpl_malloc ++# endif ++_GL_FUNCDECL_RPL (malloc, void *, (size_t size)); ++_GL_CXXALIAS_RPL (malloc, void *, (size_t size)); ++# else ++_GL_CXXALIAS_SYS (malloc, void *, (size_t size)); ++# endif ++_GL_CXXALIASWARN (malloc); ++#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC ++# undef malloc ++/* Assume malloc is always declared. */ ++_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " ++ "use gnulib module malloc-posix for portability"); ++#endif ++ ++/* Convert a multibyte character to a wide character. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbtowc ++# define mbtowc rpl_mbtowc ++# endif ++_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++# else ++_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++# endif ++_GL_CXXALIASWARN (mbtowc); ++#endif ++ ++#if 0 ++/* Create a unique temporary directory from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the directory name unique. ++ Returns TEMPLATE, or a null pointer if it cannot get a unique name. ++ The directory is created mode 700. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); ++_GL_CXXALIASWARN (mkdtemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkdtemp ++# if HAVE_RAW_DECL_MKDTEMP ++_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " ++ "use gnulib module mkdtemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ The file is then created, with the specified flags, ensuring it didn't exist ++ before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); ++_GL_CXXALIASWARN (mkostemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkostemp ++# if HAVE_RAW_DECL_MKOSTEMP ++_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " ++ "use gnulib module mkostemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE before a suffix of length ++ SUFFIXLEN must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ The file is then created, with the specified flags, ensuring it didn't exist ++ before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkostemps, int, ++ (char * /*template*/, int /*suffixlen*/, int /*flags*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkostemps, int, ++ (char * /*template*/, int /*suffixlen*/, int /*flags*/)); ++_GL_CXXALIASWARN (mkostemps); ++#elif defined GNULIB_POSIXCHECK ++# undef mkostemps ++# if HAVE_RAW_DECL_MKOSTEMPS ++_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " ++ "use gnulib module mkostemps for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The file is then created, ensuring it didn't exist before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mkstemp rpl_mkstemp ++# endif ++_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); ++# endif ++_GL_CXXALIASWARN (mkstemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkstemp ++# if HAVE_RAW_DECL_MKSTEMP ++_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " ++ "use gnulib module mkstemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE prior to a suffix of length ++ SUFFIXLEN must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The file is then created, ensuring it didn't exist before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); ++_GL_CXXALIASWARN (mkstemps); ++#elif defined GNULIB_POSIXCHECK ++# undef mkstemps ++# if HAVE_RAW_DECL_MKSTEMPS ++_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " ++ "use gnulib module mkstemps for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Return an FD open to the master side of a pseudo-terminal. Flags should ++ include O_RDWR, and may also include O_NOCTTY. */ ++# if !1 ++_GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); ++# endif ++_GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); ++_GL_CXXALIASWARN (posix_openpt); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_openpt ++# if HAVE_RAW_DECL_POSIX_OPENPT ++_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " ++ "use gnulib module posix_openpt for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Return the pathname of the pseudo-terminal slave associated with ++ the master FD is open on, or NULL on errors. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ptsname ++# define ptsname rpl_ptsname ++# endif ++_GL_FUNCDECL_RPL (ptsname, char *, (int fd)); ++_GL_CXXALIAS_RPL (ptsname, char *, (int fd)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ptsname, char *, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (ptsname, char *, (int fd)); ++# endif ++_GL_CXXALIASWARN (ptsname); ++#elif defined GNULIB_POSIXCHECK ++# undef ptsname ++# if HAVE_RAW_DECL_PTSNAME ++_GL_WARN_ON_USE (ptsname, "ptsname is not portable - " ++ "use gnulib module ptsname for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Set the pathname of the pseudo-terminal slave associated with ++ the master FD is open on and return 0, or set errno and return ++ non-zero on errors. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ptsname_r ++# define ptsname_r rpl_ptsname_r ++# endif ++_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); ++_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); ++# endif ++_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); ++# endif ++_GL_CXXALIASWARN (ptsname_r); ++#elif defined GNULIB_POSIXCHECK ++# undef ptsname_r ++# if HAVE_RAW_DECL_PTSNAME_R ++_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " ++ "use gnulib module ptsname_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putenv ++# define putenv rpl_putenv ++# endif ++_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (putenv, int, (char *string)); ++# else ++_GL_CXXALIAS_SYS (putenv, int, (char *string)); ++# endif ++_GL_CXXALIASWARN (putenv); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef qsort_r ++# define qsort_r rpl_qsort_r ++# endif ++_GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg) _GL_ARG_NONNULL ((1, 4))); ++_GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg)); ++# else ++_GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg)); ++# endif ++_GL_CXXALIASWARN (qsort_r); ++#endif ++ ++ ++#if 0 ++# if !1 ++# ifndef RAND_MAX ++# define RAND_MAX 2147483647 ++# endif ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (random, long, (void)); ++# endif ++_GL_CXXALIAS_SYS (random, long, (void)); ++_GL_CXXALIASWARN (random); ++#elif defined GNULIB_POSIXCHECK ++# undef random ++# if HAVE_RAW_DECL_RANDOM ++_GL_WARN_ON_USE (random, "random is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); ++# endif ++_GL_CXXALIAS_SYS (srandom, void, (unsigned int seed)); ++_GL_CXXALIASWARN (srandom); ++#elif defined GNULIB_POSIXCHECK ++# undef srandom ++# if HAVE_RAW_DECL_SRANDOM ++_GL_WARN_ON_USE (srandom, "srandom is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (initstate, char *, ++ (unsigned int seed, char *buf, size_t buf_size) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (initstate, char *, ++ (unsigned int seed, char *buf, size_t buf_size)); ++_GL_CXXALIASWARN (initstate); ++#elif defined GNULIB_POSIXCHECK ++# undef initstate ++# if HAVE_RAW_DECL_INITSTATE_R ++_GL_WARN_ON_USE (initstate, "initstate is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (setstate, char *, (char *arg_state)); ++_GL_CXXALIASWARN (setstate); ++#elif defined GNULIB_POSIXCHECK ++# undef setstate ++# if HAVE_RAW_DECL_SETSTATE_R ++_GL_WARN_ON_USE (setstate, "setstate is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef random_r ++# define random_r rpl_random_r ++# endif ++_GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); ++# endif ++_GL_CXXALIASWARN (random_r); ++#elif defined GNULIB_POSIXCHECK ++# undef random_r ++# if HAVE_RAW_DECL_RANDOM_R ++_GL_WARN_ON_USE (random_r, "random_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef srandom_r ++# define srandom_r rpl_srandom_r ++# endif ++_GL_FUNCDECL_RPL (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (srandom_r); ++#elif defined GNULIB_POSIXCHECK ++# undef srandom_r ++# if HAVE_RAW_DECL_SRANDOM_R ++_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef initstate_r ++# define initstate_r rpl_initstate_r ++# endif ++_GL_FUNCDECL_RPL (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (initstate_r); ++#elif defined GNULIB_POSIXCHECK ++# undef initstate_r ++# if HAVE_RAW_DECL_INITSTATE_R ++_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setstate_r ++# define setstate_r rpl_setstate_r ++# endif ++_GL_FUNCDECL_RPL (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (setstate_r); ++#elif defined GNULIB_POSIXCHECK ++# undef setstate_r ++# if HAVE_RAW_DECL_SETSTATE_R ++_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ ++ || _GL_USE_STDLIB_ALLOC) ++# undef realloc ++# define realloc rpl_realloc ++# endif ++_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); ++_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); ++# else ++_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); ++# endif ++_GL_CXXALIASWARN (realloc); ++#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC ++# undef realloc ++/* Assume realloc is always declared. */ ++_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " ++ "use gnulib module realloc-posix for portability"); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define realpath rpl_realpath ++# endif ++_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved)); ++# endif ++_GL_CXXALIASWARN (realpath); ++#elif defined GNULIB_POSIXCHECK ++# undef realpath ++# if HAVE_RAW_DECL_REALPATH ++_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " ++ "canonicalize or canonicalize-lgpl for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Test a user response to a question. ++ Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ ++# if !1 ++_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); ++_GL_CXXALIASWARN (rpmatch); ++#elif defined GNULIB_POSIXCHECK ++# undef rpmatch ++# if HAVE_RAW_DECL_RPMATCH ++_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " ++ "use gnulib module rpmatch for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Look up NAME in the environment, returning 0 in insecure situations. */ ++# if !1 ++_GL_FUNCDECL_SYS (secure_getenv, char *, ++ (char const *name) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); ++_GL_CXXALIASWARN (secure_getenv); ++#elif defined GNULIB_POSIXCHECK ++# undef secure_getenv ++# if HAVE_RAW_DECL_SECURE_GETENV ++_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " ++ "use gnulib module secure_getenv for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Set NAME to VALUE in the environment. ++ If REPLACE is nonzero, overwrite an existing value. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setenv ++# define setenv rpl_setenv ++# endif ++_GL_FUNCDECL_RPL (setenv, int, ++ (const char *name, const char *value, int replace) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (setenv, int, ++ (const char *name, const char *value, int replace)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (setenv, int, ++ (const char *name, const char *value, int replace) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (setenv, int, ++ (const char *name, const char *value, int replace)); ++# endif ++# if !(0 && !0) ++_GL_CXXALIASWARN (setenv); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef setenv ++# if HAVE_RAW_DECL_SETENV ++_GL_WARN_ON_USE (setenv, "setenv is unportable - " ++ "use gnulib module setenv for portability"); ++# endif ++#endif ++ ++#if 0 ++ /* Parse a double from STRING, updating ENDP if appropriate. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strtod rpl_strtod ++# endif ++_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp)); ++# endif ++_GL_CXXALIASWARN (strtod); ++#elif defined GNULIB_POSIXCHECK ++# undef strtod ++# if HAVE_RAW_DECL_STRTOD ++_GL_WARN_ON_USE (strtod, "strtod is unportable - " ++ "use gnulib module strtod for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Parse a signed integer whose textual representation starts at STRING. ++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, ++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix ++ "0x"). ++ If ENDPTR is not NULL, the address of the first byte after the integer is ++ stored in *ENDPTR. ++ Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set ++ to ERANGE. */ ++# if !1 ++_GL_FUNCDECL_SYS (strtoll, long long, ++ (const char *string, char **endptr, int base) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtoll, long long, ++ (const char *string, char **endptr, int base)); ++_GL_CXXALIASWARN (strtoll); ++#elif defined GNULIB_POSIXCHECK ++# undef strtoll ++# if HAVE_RAW_DECL_STRTOLL ++_GL_WARN_ON_USE (strtoll, "strtoll is unportable - " ++ "use gnulib module strtoll for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Parse an unsigned integer whose textual representation starts at STRING. ++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, ++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix ++ "0x"). ++ If ENDPTR is not NULL, the address of the first byte after the integer is ++ stored in *ENDPTR. ++ Upon overflow, the return value is ULLONG_MAX, and errno is set to ++ ERANGE. */ ++# if !1 ++_GL_FUNCDECL_SYS (strtoull, unsigned long long, ++ (const char *string, char **endptr, int base) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtoull, unsigned long long, ++ (const char *string, char **endptr, int base)); ++_GL_CXXALIASWARN (strtoull); ++#elif defined GNULIB_POSIXCHECK ++# undef strtoull ++# if HAVE_RAW_DECL_STRTOULL ++_GL_WARN_ON_USE (strtoull, "strtoull is unportable - " ++ "use gnulib module strtoull for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Unlock the slave side of the pseudo-terminal whose master side is specified ++ by FD, so that it can be opened. */ ++# if !1 ++_GL_FUNCDECL_SYS (unlockpt, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (unlockpt, int, (int fd)); ++_GL_CXXALIASWARN (unlockpt); ++#elif defined GNULIB_POSIXCHECK ++# undef unlockpt ++# if HAVE_RAW_DECL_UNLOCKPT ++_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " ++ "use gnulib module unlockpt for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Remove the variable NAME from the environment. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unsetenv ++# define unsetenv rpl_unsetenv ++# endif ++_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); ++# endif ++# if !(0 && !1) ++_GL_CXXALIASWARN (unsetenv); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef unsetenv ++# if HAVE_RAW_DECL_UNSETENV ++_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " ++ "use gnulib module unsetenv for portability"); ++# endif ++#endif ++ ++/* Convert a wide character to a multibyte character. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wctomb ++# define wctomb rpl_wctomb ++# endif ++_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); ++_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); ++# else ++_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); ++# endif ++_GL_CXXALIASWARN (wctomb); ++#endif ++ ++ ++#endif /* _GL_STDLIB_H */ ++#endif /* _GL_STDLIB_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/string.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/string.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/string.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/string.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1358 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 1995-1996, 2001-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined _GL_ALREADY_INCLUDING_STRING_H ++/* Special invocation convention: ++ - On OS X/NetBSD we have a sequence of nested includes ++ -> -> "string.h" ++ In this situation system _chk variants due to -D_FORTIFY_SOURCE ++ might be used after any replacements defined here. */ ++ ++#include MSVC_INCLUDE(string.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_STRING_H ++ ++#define _GL_ALREADY_INCLUDING_STRING_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(string.h) ++ ++#undef _GL_ALREADY_INCLUDING_STRING_H ++ ++#ifndef _GL_STRING_H ++#define _GL_STRING_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* MirBSD defines mbslen as a macro. */ ++#if 1 && defined __MirBSD__ ++# include ++#endif ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* NetBSD 5.0 declares strsignal in , not in . */ ++/* But in any case avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Find the index of the least-significant set bit. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (ffsl, int, (long int i)); ++# endif ++_GL_CXXALIAS_SYS (ffsl, int, (long int i)); ++_GL_CXXALIASWARN (ffsl); ++#elif defined GNULIB_POSIXCHECK ++# undef ffsl ++# if HAVE_RAW_DECL_FFSL ++_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); ++# endif ++#endif ++ ++ ++/* Find the index of the least-significant set bit. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (ffsll, int, (long long int i)); ++# endif ++_GL_CXXALIAS_SYS (ffsll, int, (long long int i)); ++_GL_CXXALIASWARN (ffsll); ++#elif defined GNULIB_POSIXCHECK ++# undef ffsll ++# if HAVE_RAW_DECL_FFSLL ++_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); ++# endif ++#endif ++ ++ ++/* Return the first instance of C within N bytes of S, or NULL. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define memchr rpl_memchr ++# endif ++_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C" { const void * std::memchr (const void *, int, size_t); } ++ extern "C++" { void * std::memchr (void *, int, size_t); } */ ++_GL_CXXALIAS_SYS_CAST2 (memchr, ++ void *, (void const *__s, int __c, size_t __n), ++ void const *, (void const *__s, int __c, size_t __n)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); ++_GL_CXXALIASWARN1 (memchr, void const *, ++ (void const *__s, int __c, size_t __n)); ++# else ++_GL_CXXALIASWARN (memchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef memchr ++/* Assume memchr is always declared. */ ++_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " ++ "use gnulib module memchr for portability" ); ++#endif ++ ++/* Return the first occurrence of NEEDLE in HAYSTACK. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define memmem rpl_memmem ++# endif ++_GL_FUNCDECL_RPL (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 3))); ++# endif ++_GL_CXXALIAS_SYS (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len)); ++# endif ++_GL_CXXALIASWARN (memmem); ++#elif defined GNULIB_POSIXCHECK ++# undef memmem ++# if HAVE_RAW_DECL_MEMMEM ++_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " ++ "use gnulib module memmem-simple for portability, " ++ "and module memmem for speed" ); ++# endif ++#endif ++ ++/* Copy N bytes of SRC to DEST, return pointer to bytes after the ++ last written byte. */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (mempcpy, void *, ++ (void *restrict __dest, void const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (mempcpy, void *, ++ (void *restrict __dest, void const *restrict __src, ++ size_t __n)); ++_GL_CXXALIASWARN (mempcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef mempcpy ++# if HAVE_RAW_DECL_MEMPCPY ++_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " ++ "use gnulib module mempcpy for portability"); ++# endif ++#endif ++ ++/* Search backwards through a block for a byte (specified as an int). */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const void * std::memrchr (const void *, int, size_t); } ++ extern "C++" { void * std::memrchr (void *, int, size_t); } */ ++_GL_CXXALIAS_SYS_CAST2 (memrchr, ++ void *, (void const *, int, size_t), ++ void const *, (void const *, int, size_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); ++_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); ++# else ++_GL_CXXALIASWARN (memrchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef memrchr ++# if HAVE_RAW_DECL_MEMRCHR ++_GL_WARN_ON_USE (memrchr, "memrchr is unportable - " ++ "use gnulib module memrchr for portability"); ++# endif ++#endif ++ ++/* Find the first occurrence of C in S. More efficient than ++ memchr(S,C,N), at the expense of undefined behavior if C does not ++ occur within N bytes. */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const void * std::rawmemchr (const void *, int); } ++ extern "C++" { void * std::rawmemchr (void *, int); } */ ++_GL_CXXALIAS_SYS_CAST2 (rawmemchr, ++ void *, (void const *__s, int __c_in), ++ void const *, (void const *__s, int __c_in)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); ++_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); ++# else ++_GL_CXXALIASWARN (rawmemchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef rawmemchr ++# if HAVE_RAW_DECL_RAWMEMCHR ++_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " ++ "use gnulib module rawmemchr for portability"); ++# endif ++#endif ++ ++/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (stpcpy, char *, ++ (char *restrict __dst, char const *restrict __src) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (stpcpy, char *, ++ (char *restrict __dst, char const *restrict __src)); ++_GL_CXXALIASWARN (stpcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef stpcpy ++# if HAVE_RAW_DECL_STPCPY ++_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " ++ "use gnulib module stpcpy for portability"); ++# endif ++#endif ++ ++/* Copy no more than N bytes of SRC to DST, returning a pointer past the ++ last non-NUL byte written into DST. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef stpncpy ++# define stpncpy rpl_stpncpy ++# endif ++_GL_FUNCDECL_RPL (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n)); ++# endif ++_GL_CXXALIASWARN (stpncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef stpncpy ++# if HAVE_RAW_DECL_STPNCPY ++_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " ++ "use gnulib module stpncpy for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strchr() does not work with multibyte strings if the locale encoding is ++ GB18030 and the character to be searched is a digit. */ ++# undef strchr ++/* Assume strchr is always declared. */ ++_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " ++ "in some multibyte locales - " ++ "use mbschr if you care about internationalization"); ++#endif ++ ++/* Find the first occurrence of C in S or the final NUL byte. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strchrnul rpl_strchrnul ++# endif ++_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strchrnul, char *, ++ (const char *str, int ch)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * std::strchrnul (const char *, int); } ++ extern "C++" { char * std::strchrnul (char *, int); } */ ++_GL_CXXALIAS_SYS_CAST2 (strchrnul, ++ char *, (char const *__s, int __c_in), ++ char const *, (char const *__s, int __c_in)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); ++_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); ++# else ++_GL_CXXALIASWARN (strchrnul); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strchrnul ++# if HAVE_RAW_DECL_STRCHRNUL ++_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " ++ "use gnulib module strchrnul for portability"); ++# endif ++#endif ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strdup ++# define strdup rpl_strdup ++# endif ++_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); ++# else ++# if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup ++ /* strdup exists as a function and as a macro. Get rid of the macro. */ ++# undef strdup ++# endif ++# if !(1 || defined strdup) ++_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); ++# endif ++_GL_CXXALIASWARN (strdup); ++#elif defined GNULIB_POSIXCHECK ++# undef strdup ++# if HAVE_RAW_DECL_STRDUP ++_GL_WARN_ON_USE (strdup, "strdup is unportable - " ++ "use gnulib module strdup for portability"); ++# endif ++#endif ++ ++/* Append no more than N characters from SRC onto DEST. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strncat ++# define strncat rpl_strncat ++# endif ++_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); ++# else ++_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); ++# endif ++_GL_CXXALIASWARN (strncat); ++#elif defined GNULIB_POSIXCHECK ++# undef strncat ++# if HAVE_RAW_DECL_STRNCAT ++_GL_WARN_ON_USE (strncat, "strncat is unportable - " ++ "use gnulib module strncat for portability"); ++# endif ++#endif ++ ++/* Return a newly allocated copy of at most N bytes of STRING. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strndup ++# define strndup rpl_strndup ++# endif ++_GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); ++# endif ++_GL_CXXALIASWARN (strndup); ++#elif defined GNULIB_POSIXCHECK ++# undef strndup ++# if HAVE_RAW_DECL_STRNDUP ++_GL_WARN_ON_USE (strndup, "strndup is unportable - " ++ "use gnulib module strndup for portability"); ++# endif ++#endif ++ ++/* Find the length (number of bytes) of STRING, but scan at most ++ MAXLEN bytes. If no '\0' terminator is found in that many bytes, ++ return MAXLEN. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strnlen ++# define strnlen rpl_strnlen ++# endif ++_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); ++# endif ++_GL_CXXALIASWARN (strnlen); ++#elif defined GNULIB_POSIXCHECK ++# undef strnlen ++# if HAVE_RAW_DECL_STRNLEN ++_GL_WARN_ON_USE (strnlen, "strnlen is unportable - " ++ "use gnulib module strnlen for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strcspn() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it does not work with multibyte strings if the ++ locale encoding is GB18030 and one of the characters to be searched is a ++ digit. */ ++# undef strcspn ++/* Assume strcspn is always declared. */ ++_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbscspn if you care about internationalization"); ++#endif ++ ++/* Find the first occurrence in S of any character in ACCEPT. */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C" { const char * strpbrk (const char *, const char *); } ++ extern "C++" { char * strpbrk (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strpbrk, ++ char *, (char const *__s, char const *__accept), ++ const char *, (char const *__s, char const *__accept)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); ++_GL_CXXALIASWARN1 (strpbrk, char const *, ++ (char const *__s, char const *__accept)); ++# else ++_GL_CXXALIASWARN (strpbrk); ++# endif ++# if defined GNULIB_POSIXCHECK ++/* strpbrk() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it does not work with multibyte strings if the ++ locale encoding is GB18030 and one of the characters to be searched is a ++ digit. */ ++# undef strpbrk ++_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbspbrk if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strpbrk ++# if HAVE_RAW_DECL_STRPBRK ++_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " ++ "use gnulib module strpbrk for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strspn() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it cannot work with multibyte strings. */ ++# undef strspn ++/* Assume strspn is always declared. */ ++_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbsspn if you care about internationalization"); ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strrchr() does not work with multibyte strings if the locale encoding is ++ GB18030 and the character to be searched is a digit. */ ++# undef strrchr ++/* Assume strrchr is always declared. */ ++_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " ++ "in some multibyte locales - " ++ "use mbsrchr if you care about internationalization"); ++#endif ++ ++/* Search the next delimiter (char listed in DELIM) starting at *STRINGP. ++ If one is found, overwrite it with a NUL, and advance *STRINGP ++ to point to the next char after it. Otherwise, set *STRINGP to NULL. ++ If *STRINGP was already NULL, nothing happens. ++ Return the old value of *STRINGP. ++ ++ This is a variant of strtok() that is multithread-safe and supports ++ empty fields. ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ Caveat: It doesn't work with multibyte strings unless all of the delimiter ++ characters are ASCII characters < 0x30. ++ ++ See also strtok_r(). */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (strsep, char *, ++ (char **restrict __stringp, char const *restrict __delim) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (strsep, char *, ++ (char **restrict __stringp, char const *restrict __delim)); ++_GL_CXXALIASWARN (strsep); ++# if defined GNULIB_POSIXCHECK ++# undef strsep ++_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbssep if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strsep ++# if HAVE_RAW_DECL_STRSEP ++_GL_WARN_ON_USE (strsep, "strsep is unportable - " ++ "use gnulib module strsep for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strstr rpl_strstr ++# endif ++_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); ++# else ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * strstr (const char *, const char *); } ++ extern "C++" { char * strstr (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strstr, ++ char *, (const char *haystack, const char *needle), ++ const char *, (const char *haystack, const char *needle)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); ++_GL_CXXALIASWARN1 (strstr, const char *, ++ (const char *haystack, const char *needle)); ++# else ++_GL_CXXALIASWARN (strstr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++/* strstr() does not work with multibyte strings if the locale encoding is ++ different from UTF-8: ++ POSIX says that it operates on "strings", and "string" in POSIX is defined ++ as a sequence of bytes, not of characters. */ ++# undef strstr ++/* Assume strstr is always declared. */ ++_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " ++ "work correctly on character strings in most " ++ "multibyte locales - " ++ "use mbsstr if you care about internationalization, " ++ "or use strstr if you care about speed"); ++#endif ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive ++ comparison. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strcasestr rpl_strcasestr ++# endif ++_GL_FUNCDECL_RPL (strcasestr, char *, ++ (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strcasestr, char *, ++ (const char *haystack, const char *needle)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strcasestr, char *, ++ (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * strcasestr (const char *, const char *); } ++ extern "C++" { char * strcasestr (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strcasestr, ++ char *, (const char *haystack, const char *needle), ++ const char *, (const char *haystack, const char *needle)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); ++_GL_CXXALIASWARN1 (strcasestr, const char *, ++ (const char *haystack, const char *needle)); ++# else ++_GL_CXXALIASWARN (strcasestr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++/* strcasestr() does not work with multibyte strings: ++ It is a glibc extension, and glibc implements it only for unibyte ++ locales. */ ++# undef strcasestr ++# if HAVE_RAW_DECL_STRCASESTR ++_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " ++ "strings in multibyte locales - " ++ "use mbscasestr if you care about " ++ "internationalization, or use c-strcasestr if you want " ++ "a locale independent function"); ++# endif ++#endif ++ ++/* Parse S into tokens separated by characters in DELIM. ++ If S is NULL, the saved pointer in SAVE_PTR is used as ++ the next starting point. For example: ++ char s[] = "-abc-=-def"; ++ char *sp; ++ x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" ++ x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL ++ x = strtok_r(NULL, "=", &sp); // x = NULL ++ // s = "abc\0-def\0" ++ ++ This is a variant of strtok() that is multithread-safe. ++ ++ For the POSIX documentation for this function, see: ++ http://www.opengroup.org/susv3xsh/strtok.html ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ Caveat: It doesn't work with multibyte strings unless all of the delimiter ++ characters are ASCII characters < 0x30. ++ ++ See also strsep(). */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strtok_r ++# define strtok_r rpl_strtok_r ++# endif ++_GL_FUNCDECL_RPL (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr)); ++# else ++# if 0 || defined GNULIB_POSIXCHECK ++# undef strtok_r ++# endif ++# if ! 1 ++_GL_FUNCDECL_SYS (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr)); ++# endif ++_GL_CXXALIASWARN (strtok_r); ++# if defined GNULIB_POSIXCHECK ++_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " ++ "strings in multibyte locales - " ++ "use mbstok_r if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strtok_r ++# if HAVE_RAW_DECL_STRTOK_R ++_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " ++ "use gnulib module strtok_r for portability"); ++# endif ++#endif ++ ++ ++/* The following functions are not specified by POSIX. They are gnulib ++ extensions. */ ++ ++#if 1 ++/* Return the number of multibyte characters in the character string STRING. ++ This considers multibyte characters, unlike strlen, which counts bytes. */ ++# ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ ++# undef mbslen ++# endif ++# if 0 /* AIX, OSF/1, MirBSD define mbslen already in libc. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbslen rpl_mbslen ++# endif ++_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); ++# else ++_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); ++# endif ++_GL_CXXALIASWARN (mbslen); ++#endif ++ ++#if 0 ++/* Return the number of multibyte characters in the character string starting ++ at STRING and ending at STRING + LEN. */ ++_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1)); ++#endif ++ ++#if 0 ++/* Locate the first single-byte character C in the character string STRING, ++ and return a pointer to it. Return NULL if C is not found in STRING. ++ Unlike strchr(), this function works correctly in multibyte locales with ++ encodings such as GB18030. */ ++# if defined __hpux ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbschr rpl_mbschr /* avoid collision with HP-UX function */ ++# endif ++_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); ++# else ++_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); ++# endif ++_GL_CXXALIASWARN (mbschr); ++#endif ++ ++#if 0 ++/* Locate the last single-byte character C in the character string STRING, ++ and return a pointer to it. Return NULL if C is not found in STRING. ++ Unlike strrchr(), this function works correctly in multibyte locales with ++ encodings such as GB18030. */ ++# if defined __hpux || defined __INTERIX ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbsrchr rpl_mbsrchr /* avoid collision with system function */ ++# endif ++_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); ++# else ++_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); ++# endif ++_GL_CXXALIASWARN (mbsrchr); ++#endif ++ ++#if 1 ++/* Find the first occurrence of the character string NEEDLE in the character ++ string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. ++ Unlike strstr(), this function works correctly in multibyte locales with ++ encodings different from UTF-8. */ ++_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the character strings S1 and S2, ignoring case, returning less than, ++ equal to or greater than zero if S1 is lexicographically less than, equal to ++ or greater than S2. ++ Note: This function may, in multibyte locales, return 0 for strings of ++ different lengths! ++ Unlike strcasecmp(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the initial segment of the character string S1 consisting of at most ++ N characters with the initial segment of the character string S2 consisting ++ of at most N characters, ignoring case, returning less than, equal to or ++ greater than zero if the initial segment of S1 is lexicographically less ++ than, equal to or greater than the initial segment of S2. ++ Note: This function may, in multibyte locales, return 0 for initial segments ++ of different lengths! ++ Unlike strncasecmp(), this function works correctly in multibyte locales. ++ But beware that N is not a byte count but a character count! */ ++_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the initial segment of the character string STRING consisting of ++ at most mbslen (PREFIX) characters with the character string PREFIX, ++ ignoring case. If the two match, return a pointer to the first byte ++ after this prefix in STRING. Otherwise, return NULL. ++ Note: This function may, in multibyte locales, return non-NULL if STRING ++ is of smaller length than PREFIX! ++ Unlike strncasecmp(), this function works correctly in multibyte ++ locales. */ ++_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence of the character string NEEDLE in the character ++ string HAYSTACK, using case-insensitive comparison. ++ Note: This function may, in multibyte locales, return success even if ++ strlen (haystack) < strlen (needle) ! ++ Unlike strcasestr(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ in the character string ACCEPT. Return the number of bytes from the ++ beginning of the string to this occurrence, or to the end of the string ++ if none exists. ++ Unlike strcspn(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ in the character string ACCEPT. Return the pointer to it, or NULL if none ++ exists. ++ Unlike strpbrk(), this function works correctly in multibyte locales. */ ++# if defined __hpux ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ ++# endif ++_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); ++# else ++_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); ++# endif ++_GL_CXXALIASWARN (mbspbrk); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ not in the character string REJECT. Return the number of bytes from the ++ beginning of the string to this occurrence, or to the end of the string ++ if none exists. ++ Unlike strspn(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Search the next delimiter (multibyte character listed in the character ++ string DELIM) starting at the character string *STRINGP. ++ If one is found, overwrite it with a NUL, and advance *STRINGP to point ++ to the next multibyte character after it. Otherwise, set *STRINGP to NULL. ++ If *STRINGP was already NULL, nothing happens. ++ Return the old value of *STRINGP. ++ ++ This is a variant of mbstok_r() that supports empty fields. ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ ++ See also mbstok_r(). */ ++_GL_EXTERN_C char * mbssep (char **stringp, const char *delim) ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Parse the character string STRING into tokens separated by characters in ++ the character string DELIM. ++ If STRING is NULL, the saved pointer in SAVE_PTR is used as ++ the next starting point. For example: ++ char s[] = "-abc-=-def"; ++ char *sp; ++ x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" ++ x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL ++ x = mbstok_r(NULL, "=", &sp); // x = NULL ++ // s = "abc\0-def\0" ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ ++ See also mbssep(). */ ++_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) ++ _GL_ARG_NONNULL ((2, 3)); ++#endif ++ ++/* Map any int, typically from errno, into an error message. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strerror ++# define strerror rpl_strerror ++# endif ++_GL_FUNCDECL_RPL (strerror, char *, (int)); ++_GL_CXXALIAS_RPL (strerror, char *, (int)); ++# else ++_GL_CXXALIAS_SYS (strerror, char *, (int)); ++# endif ++_GL_CXXALIASWARN (strerror); ++#elif defined GNULIB_POSIXCHECK ++# undef strerror ++/* Assume strerror is always declared. */ ++_GL_WARN_ON_USE (strerror, "strerror is unportable - " ++ "use gnulib module strerror to guarantee non-NULL result"); ++#endif ++ ++/* Map any int, typically from errno, into an error message. Multithread-safe. ++ Uses the POSIX declaration, not the glibc declaration. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strerror_r ++# define strerror_r rpl_strerror_r ++# endif ++_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (strerror_r); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strerror_r ++# if HAVE_RAW_DECL_STRERROR_R ++_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " ++ "use gnulib module strerror_r-posix for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strsignal rpl_strsignal ++# endif ++_GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); ++_GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); ++# endif ++/* Need to cast, because on Cygwin 1.5.x systems, the return type is ++ 'const char *'. */ ++_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); ++# endif ++_GL_CXXALIASWARN (strsignal); ++#elif defined GNULIB_POSIXCHECK ++# undef strsignal ++# if HAVE_RAW_DECL_STRSIGNAL ++_GL_WARN_ON_USE (strsignal, "strsignal is unportable - " ++ "use gnulib module strsignal for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); ++_GL_CXXALIASWARN (strverscmp); ++#elif defined GNULIB_POSIXCHECK ++# undef strverscmp ++# if HAVE_RAW_DECL_STRVERSCMP ++_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " ++ "use gnulib module strverscmp for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_STRING_H */ ++#endif /* _GL_STRING_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/sys/stat.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/sys/stat.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/sys/stat.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/sys/stat.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1044 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/stat header file. ++ Copyright (C) 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ ++ ++/* This file is supposed to be used on platforms where is ++ incomplete. It is intended to provide definitions and prototypes ++ needed by an application. Start with what the system provides. */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_sys_stat_h ++/* Special invocation convention. */ ++ ++#include MSVC_INCLUDE(sys/stat.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_SYS_STAT_H ++ ++/* Get nlink_t. ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++ ++/* Get struct timespec. */ ++#include ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(sys/stat.h) ++ ++#ifndef _GL_SYS_STAT_H ++#define _GL_SYS_STAT_H ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Before doing "#define mkdir rpl_mkdir" below, we need to include all ++ headers that may declare mkdir(). Native Windows platforms declare mkdir ++ in and/or , not in . */ ++#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++# include /* mingw32, mingw64 */ ++# include /* mingw64, MSVC 9 */ ++#endif ++ ++/* Native Windows platforms declare umask() in . */ ++#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++/* Large File Support on native Windows. */ ++#if 1 ++# define stat _stati64 ++#endif ++ ++#ifndef S_IFIFO ++# ifdef _S_IFIFO ++# define S_IFIFO _S_IFIFO ++# endif ++#endif ++ ++#ifndef S_IFMT ++# define S_IFMT 0170000 ++#endif ++ ++#if STAT_MACROS_BROKEN ++# undef S_ISBLK ++# undef S_ISCHR ++# undef S_ISDIR ++# undef S_ISFIFO ++# undef S_ISLNK ++# undef S_ISNAM ++# undef S_ISMPB ++# undef S_ISMPC ++# undef S_ISNWK ++# undef S_ISREG ++# undef S_ISSOCK ++#endif ++ ++#ifndef S_ISBLK ++# ifdef S_IFBLK ++# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) ++# else ++# define S_ISBLK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISCHR ++# ifdef S_IFCHR ++# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) ++# else ++# define S_ISCHR(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISDIR ++# ifdef S_IFDIR ++# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) ++# else ++# define S_ISDIR(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISDOOR /* Solaris 2.5 and up */ ++# define S_ISDOOR(m) 0 ++#endif ++ ++#ifndef S_ISFIFO ++# ifdef S_IFIFO ++# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) ++# else ++# define S_ISFIFO(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISLNK ++# ifdef S_IFLNK ++# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) ++# else ++# define S_ISLNK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISMPB /* V7 */ ++# ifdef S_IFMPB ++# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) ++# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) ++# else ++# define S_ISMPB(m) 0 ++# define S_ISMPC(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISMPX /* AIX */ ++# define S_ISMPX(m) 0 ++#endif ++ ++#ifndef S_ISNAM /* Xenix */ ++# ifdef S_IFNAM ++# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) ++# else ++# define S_ISNAM(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISNWK /* HP/UX */ ++# ifdef S_IFNWK ++# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) ++# else ++# define S_ISNWK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISPORT /* Solaris 10 and up */ ++# define S_ISPORT(m) 0 ++#endif ++ ++#ifndef S_ISREG ++# ifdef S_IFREG ++# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) ++# else ++# define S_ISREG(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISSOCK ++# ifdef S_IFSOCK ++# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) ++# else ++# define S_ISSOCK(m) 0 ++# endif ++#endif ++ ++ ++#ifndef S_TYPEISMQ ++# define S_TYPEISMQ(p) 0 ++#endif ++ ++#ifndef S_TYPEISTMO ++# define S_TYPEISTMO(p) 0 ++#endif ++ ++ ++#ifndef S_TYPEISSEM ++# ifdef S_INSEM ++# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) ++# else ++# define S_TYPEISSEM(p) 0 ++# endif ++#endif ++ ++#ifndef S_TYPEISSHM ++# ifdef S_INSHD ++# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) ++# else ++# define S_TYPEISSHM(p) 0 ++# endif ++#endif ++ ++/* high performance ("contiguous data") */ ++#ifndef S_ISCTG ++# define S_ISCTG(p) 0 ++#endif ++ ++/* Cray DMF (data migration facility): off line, with data */ ++#ifndef S_ISOFD ++# define S_ISOFD(p) 0 ++#endif ++ ++/* Cray DMF (data migration facility): off line, with no data */ ++#ifndef S_ISOFL ++# define S_ISOFL(p) 0 ++#endif ++ ++/* 4.4BSD whiteout */ ++#ifndef S_ISWHT ++# define S_ISWHT(m) 0 ++#endif ++ ++/* If any of the following are undefined, ++ define them to their de facto standard values. */ ++#if !S_ISUID ++# define S_ISUID 04000 ++#endif ++#if !S_ISGID ++# define S_ISGID 02000 ++#endif ++ ++/* S_ISVTX is a common extension to POSIX. */ ++#ifndef S_ISVTX ++# define S_ISVTX 01000 ++#endif ++ ++#if !S_IRUSR && S_IREAD ++# define S_IRUSR S_IREAD ++#endif ++#if !S_IRUSR ++# define S_IRUSR 00400 ++#endif ++#if !S_IRGRP ++# define S_IRGRP (S_IRUSR >> 3) ++#endif ++#if !S_IROTH ++# define S_IROTH (S_IRUSR >> 6) ++#endif ++ ++#if !S_IWUSR && S_IWRITE ++# define S_IWUSR S_IWRITE ++#endif ++#if !S_IWUSR ++# define S_IWUSR 00200 ++#endif ++#if !S_IWGRP ++# define S_IWGRP (S_IWUSR >> 3) ++#endif ++#if !S_IWOTH ++# define S_IWOTH (S_IWUSR >> 6) ++#endif ++ ++#if !S_IXUSR && S_IEXEC ++# define S_IXUSR S_IEXEC ++#endif ++#if !S_IXUSR ++# define S_IXUSR 00100 ++#endif ++#if !S_IXGRP ++# define S_IXGRP (S_IXUSR >> 3) ++#endif ++#if !S_IXOTH ++# define S_IXOTH (S_IXUSR >> 6) ++#endif ++ ++#if !S_IRWXU ++# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) ++#endif ++#if !S_IRWXG ++# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) ++#endif ++#if !S_IRWXO ++# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) ++#endif ++ ++/* S_IXUGO is a common extension to POSIX. */ ++#if !S_IXUGO ++# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) ++#endif ++ ++#ifndef S_IRWXUGO ++# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) ++#endif ++ ++/* Macros for futimens and utimensat. */ ++#ifndef UTIME_NOW ++# define UTIME_NOW (-1) ++# define UTIME_OMIT (-2) ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (fchmodat, int, ++ (int fd, char const *file, mode_t mode, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (fchmodat, int, ++ (int fd, char const *file, mode_t mode, int flag)); ++_GL_CXXALIASWARN (fchmodat); ++#elif defined GNULIB_POSIXCHECK ++# undef fchmodat ++# if HAVE_RAW_DECL_FCHMODAT ++_GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fstat ++# define fstat rpl_fstat ++# endif ++_GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); ++# else ++_GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); ++# endif ++_GL_CXXALIASWARN (fstat); ++#elif 1 ++/* Above, we define stat to _stati64. */ ++# define fstat _fstati64 ++#elif defined GNULIB_POSIXCHECK ++# undef fstat ++# if HAVE_RAW_DECL_FSTAT ++_GL_WARN_ON_USE (fstat, "fstat has portability problems - " ++ "use gnulib module fstat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fstatat ++# define fstatat rpl_fstatat ++# endif ++_GL_FUNCDECL_RPL (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags)); ++# endif ++_GL_CXXALIASWARN (fstatat); ++#elif defined GNULIB_POSIXCHECK ++# undef fstatat ++# if HAVE_RAW_DECL_FSTATAT ++_GL_WARN_ON_USE (fstatat, "fstatat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens ++ implementation relies on futimesat, which on Solaris 10 makes an invocation ++ to futimens that is meant to invoke the libc's futimens(), not gnulib's ++ futimens(). */ ++# if 0 || (!1 && defined __sun) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef futimens ++# define futimens rpl_futimens ++# endif ++_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); ++_GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); ++# endif ++_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); ++# endif ++# if 1 ++_GL_CXXALIASWARN (futimens); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef futimens ++# if HAVE_RAW_DECL_FUTIMENS ++_GL_WARN_ON_USE (futimens, "futimens is not portable - " ++ "use gnulib module futimens for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME ++ denotes a symbolic link. */ ++# if !1 ++/* The lchmod replacement follows symbolic links. Callers should take ++ this into account; lchmod should be applied only to arguments that ++ are known to not be symbolic links. On hosts that lack lchmod, ++ this can lead to race conditions between the check and the ++ invocation of lchmod, but we know of no workarounds that are ++ reliable in general. You might try requesting support for lchmod ++ from your operating system supplier. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lchmod chmod ++# endif ++/* Need to cast, because on mingw, the second parameter of chmod is ++ int mode. */ ++_GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int, ++ (const char *filename, mode_t mode)); ++# else ++# if 0 /* assume already declared */ ++_GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (lchmod); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef lchmod ++# if HAVE_RAW_DECL_LCHMOD ++_GL_WARN_ON_USE (lchmod, "lchmod is unportable - " ++ "use gnulib module lchmod for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if ! 0 ++/* mingw does not support symlinks, therefore it does not have lstat. But ++ without links, stat does just fine. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lstat stat ++# endif ++_GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf)); ++# elif 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef lstat ++# define lstat rpl_lstat ++# endif ++_GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf)); ++# else ++_GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf)); ++# endif ++# if 0 ++_GL_CXXALIASWARN (lstat); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef lstat ++# if HAVE_RAW_DECL_LSTAT ++_GL_WARN_ON_USE (lstat, "lstat is unportable - " ++ "use gnulib module lstat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mkdir ++# define mkdir rpl_mkdir ++# endif ++_GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); ++#else ++/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. ++ Additionally, it declares _mkdir (and depending on compile flags, an ++ alias mkdir), only in the nonstandard includes and , ++ which are included above. */ ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++# if !GNULIB_defined_rpl_mkdir ++static int ++rpl_mkdir (char const *name, mode_t mode) ++{ ++ return _mkdir (name); ++} ++# define GNULIB_defined_rpl_mkdir 1 ++# endif ++ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mkdir rpl_mkdir ++# endif ++_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); ++# else ++_GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); ++# endif ++#endif ++_GL_CXXALIASWARN (mkdir); ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); ++_GL_CXXALIASWARN (mkdirat); ++#elif defined GNULIB_POSIXCHECK ++# undef mkdirat ++# if HAVE_RAW_DECL_MKDIRAT ++_GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mkfifo ++# define mkfifo rpl_mkfifo ++# endif ++_GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); ++# endif ++_GL_CXXALIASWARN (mkfifo); ++#elif defined GNULIB_POSIXCHECK ++# undef mkfifo ++# if HAVE_RAW_DECL_MKFIFO ++_GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " ++ "use gnulib module mkfifo for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); ++_GL_CXXALIASWARN (mkfifoat); ++#elif defined GNULIB_POSIXCHECK ++# undef mkfifoat ++# if HAVE_RAW_DECL_MKFIFOAT ++_GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " ++ "use gnulib module mkfifoat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mknod ++# define mknod rpl_mknod ++# endif ++_GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ ++_GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); ++# endif ++_GL_CXXALIASWARN (mknod); ++#elif defined GNULIB_POSIXCHECK ++# undef mknod ++# if HAVE_RAW_DECL_MKNOD ++_GL_WARN_ON_USE (mknod, "mknod is not portable - " ++ "use gnulib module mknod for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mknodat, int, ++ (int fd, char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mknodat, int, ++ (int fd, char const *file, mode_t mode, dev_t dev)); ++_GL_CXXALIASWARN (mknodat); ++#elif defined GNULIB_POSIXCHECK ++# undef mknodat ++# if HAVE_RAW_DECL_MKNODAT ++_GL_WARN_ON_USE (mknodat, "mknodat is not portable - " ++ "use gnulib module mkfifoat for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if (_MSC_VER < 1900) ++/* We can't use the object-like #define stat rpl_stat, because of ++ struct stat. This means that rpl_stat will not be used if the user ++ does (stat)(a,b). Oh well. */ ++# if defined _AIX && defined stat && defined _LARGE_FILES ++ /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, ++ so we have to replace stat64() instead of stat(). */ ++# undef stat64 ++# define stat64(name, st) rpl_stat (name, st) ++# elif 1 ++ /* Above, we define stat to _stati64. */ ++# if defined __MINGW32__ && defined _stati64 ++# ifndef _USE_32BIT_TIME_T ++ /* The system headers define _stati64 to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# elif defined _MSC_VER && defined _stati64 ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define _stati64 to _stat32i64. */ ++# undef _stat32i64 ++# define _stat32i64(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define _stati64 to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# else ++# undef _stati64 ++# define _stati64(name, st) rpl_stat (name, st) ++# endif ++# elif defined __MINGW32__ && defined stat ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define stat to _stat32i64. */ ++# undef _stat32i64 ++# define _stat32i64(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define stat to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# elif defined _MSC_VER && defined stat ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define stat to _stat32. */ ++# undef _stat32 ++# define _stat32(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define stat to _stat64i32. */ ++# undef _stat64i32 ++# define _stat64i32(name, st) rpl_stat (name, st) ++# endif ++# else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ ++# undef stat ++# define stat(name, st) rpl_stat (name, st) ++# endif /* !_LARGE_FILES */ ++_GL_EXTERN_C int stat (const char *name, struct stat *buf) ++ _GL_ARG_NONNULL ((1, 2)); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef stat ++# if HAVE_RAW_DECL_STAT ++_GL_WARN_ON_USE (stat, "stat is unportable - " ++ "use gnulib module stat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat ++ implementation relies on futimesat, which on Solaris 10 makes an invocation ++ to utimensat that is meant to invoke the libc's utimensat(), not gnulib's ++ utimensat(). */ ++# if 0 || (!1 && defined __sun) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef utimensat ++# define utimensat rpl_utimensat ++# endif ++_GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (utimensat); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef utimensat ++# if HAVE_RAW_DECL_UTIMENSAT ++_GL_WARN_ON_USE (utimensat, "utimensat is not portable - " ++ "use gnulib module utimensat for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_SYS_STAT_H */ ++#endif /* _GL_SYS_STAT_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/sys/time.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/sys/time.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/sys/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/sys/time.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,525 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/time.h. ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Paul Eggert. */ ++ ++#ifndef _GL_SYS_TIME_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* On Cygwin and on many BSDish systems, includes itself ++ recursively via . ++ Simply delegate to the system's header in this case; it is a no-op. ++ Without this extra ifdef, the C++ gettimeofday declaration below ++ would be a forward declaration in gnulib's nested . */ ++#if defined _CYGWIN_SYS_TIME_H || defined _SYS_TIME_H || defined _SYS_TIME_H_ ++# include ++#else ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_SYS_TIME_H ++#define _GL_SYS_TIME_H ++ ++#if ! 0 ++# include ++#endif ++ ++/* On native Windows with MSVC, get the 'struct timeval' type. ++ Also, on native Windows with a 64-bit time_t, where we are overriding the ++ 'struct timeval' type, get all declarations of system functions whose ++ signature contains 'struct timeval'. */ ++#if (defined _MSC_VER || 1) && 1 && !defined _GL_INCLUDING_WINSOCK2_H ++# define _GL_INCLUDING_WINSOCK2_H ++# include ++# undef _GL_INCLUDING_WINSOCK2_H ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#if !1 || 1 ++ ++# if 1 ++# define timeval rpl_timeval ++# endif ++ ++# if !GNULIB_defined_struct_timeval ++struct timeval ++{ ++ time_t tv_sec; ++ long int tv_usec; ++}; ++# define GNULIB_defined_struct_timeval 1 ++# endif ++ ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gettimeofday ++# define gettimeofday rpl_gettimeofday ++# endif ++_GL_FUNCDECL_RPL (gettimeofday, int, ++ (struct timeval *restrict, void *restrict) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gettimeofday, int, ++ (struct timeval *restrict, void *restrict)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (gettimeofday, int, ++ (struct timeval *restrict, void *restrict) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on glibc systems, by default, the second argument is ++ struct timezone *. */ ++_GL_CXXALIAS_SYS_CAST (gettimeofday, int, ++ (struct timeval *restrict, void *restrict)); ++# endif ++_GL_CXXALIASWARN (gettimeofday); ++#elif defined GNULIB_POSIXCHECK ++# undef gettimeofday ++# if HAVE_RAW_DECL_GETTIMEOFDAY ++_GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - " ++ "use gnulib module gettimeofday for portability"); ++# endif ++#endif ++ ++/* Hide some function declarations from . */ ++ ++#if defined _MSC_VER && 1 ++# if !defined _GL_UNISTD_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef close ++# define close close_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (close, ++ "close() used without including "); ++# endif ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gethostname ++# define gethostname gethostname_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (gethostname, ++ "gethostname() used without including "); ++# endif ++# endif ++# if !defined _GL_SYS_SOCKET_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef socket ++# define socket socket_used_without_including_sys_socket_h ++# undef connect ++# define connect connect_used_without_including_sys_socket_h ++# undef accept ++# define accept accept_used_without_including_sys_socket_h ++# undef bind ++# define bind bind_used_without_including_sys_socket_h ++# undef getpeername ++# define getpeername getpeername_used_without_including_sys_socket_h ++# undef getsockname ++# define getsockname getsockname_used_without_including_sys_socket_h ++# undef getsockopt ++# define getsockopt getsockopt_used_without_including_sys_socket_h ++# undef listen ++# define listen listen_used_without_including_sys_socket_h ++# undef recv ++# define recv recv_used_without_including_sys_socket_h ++# undef send ++# define send send_used_without_including_sys_socket_h ++# undef recvfrom ++# define recvfrom recvfrom_used_without_including_sys_socket_h ++# undef sendto ++# define sendto sendto_used_without_including_sys_socket_h ++# undef setsockopt ++# define setsockopt setsockopt_used_without_including_sys_socket_h ++# undef shutdown ++# define shutdown shutdown_used_without_including_sys_socket_h ++# else ++ _GL_WARN_ON_USE (socket, ++ "socket() used without including "); ++ _GL_WARN_ON_USE (connect, ++ "connect() used without including "); ++ _GL_WARN_ON_USE (accept, ++ "accept() used without including "); ++ _GL_WARN_ON_USE (bind, ++ "bind() used without including "); ++ _GL_WARN_ON_USE (getpeername, ++ "getpeername() used without including "); ++ _GL_WARN_ON_USE (getsockname, ++ "getsockname() used without including "); ++ _GL_WARN_ON_USE (getsockopt, ++ "getsockopt() used without including "); ++ _GL_WARN_ON_USE (listen, ++ "listen() used without including "); ++ _GL_WARN_ON_USE (recv, ++ "recv() used without including "); ++ _GL_WARN_ON_USE (send, ++ "send() used without including "); ++ _GL_WARN_ON_USE (recvfrom, ++ "recvfrom() used without including "); ++ _GL_WARN_ON_USE (sendto, ++ "sendto() used without including "); ++ _GL_WARN_ON_USE (setsockopt, ++ "setsockopt() used without including "); ++ _GL_WARN_ON_USE (shutdown, ++ "shutdown() used without including "); ++# endif ++# endif ++# if !defined _GL_SYS_SELECT_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef select ++# define select select_used_without_including_sys_select_h ++# else ++ _GL_WARN_ON_USE (select, ++ "select() used without including "); ++# endif ++# endif ++#endif ++ ++#endif /* _GL_SYS_TIME_H */ ++#endif /* _CYGWIN_SYS_TIME_H */ ++#endif /* _GL_SYS_TIME_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/sys/types.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/sys/types.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/sys/types.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/sys/types.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,54 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/types.h. ++ ++ Copyright (C) 2011-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifndef _GL_SYS_TYPES_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++# define _GL_INCLUDING_SYS_TYPES_H ++#include MSVC_INCLUDE(sys/types.h) ++# undef _GL_INCLUDING_SYS_TYPES_H ++ ++#ifndef _GL_SYS_TYPES_H ++#define _GL_SYS_TYPES_H ++ ++/* Override off_t if Large File Support is requested on native Windows. */ ++#if 1 ++/* Same as int64_t in . */ ++# if defined _MSC_VER ++# define off_t __int64 ++# else ++# define off_t long long int ++# endif ++/* Indicator, for gnulib internal purposes. */ ++# define _GL_WINDOWS_64_BIT_OFF_T 1 ++#endif ++ ++/* MSVC 9 defines size_t in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++#endif /* _GL_SYS_TYPES_H */ ++#endif /* _GL_SYS_TYPES_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/time.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/time.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/time.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,609 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A more-standard . ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* Don't get in the way of glibc when it includes time.h merely to ++ declare a few standard symbols, rather than to declare all the ++ symbols. (However, skip this for MinGW as it treats __need_time_t ++ incompatibly.) Also, Solaris 8 eventually includes itself ++ recursively; if that is happening, just include the system ++ without adding our own declarations. */ ++#if (((defined __need_time_t || defined __need_clock_t \ ++ || defined __need_timespec) \ ++ && !defined __MINGW32__) \ ++ || defined _GL_TIME_H) ++ ++# include MSVC_INCLUDE(time.h) ++ ++#else ++ ++# define _GL_TIME_H ++ ++# include MSVC_INCLUDE(time.h) ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++# include ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). ++ Or they define it with the wrong member names or define it in ++ (e.g., FreeBSD circa 1997). Stock Mingw prior to 3.0 does not define it, ++ but the pthreads-win32 library defines it in . */ ++# if (_MSC_VER < 1900) ++# if 0 ++# include ++# elif 0 ++# include ++# elif 0 ++# include ++# else ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# if !GNULIB_defined_struct_timespec ++# undef timespec ++# define timespec rpl_timespec ++struct timespec ++{ ++ time_t tv_sec; ++ long int tv_nsec; ++}; ++# define GNULIB_defined_struct_timespec 1 ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++ ++# endif ++# endif ++ ++# if !GNULIB_defined_struct_time_t_must_be_integral ++/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires ++ time_t to be an integer type, even though C99 permits floating ++ point. We don't know of any implementation that uses floating ++ point, and it is much easier to write code that doesn't have to ++ worry about that corner case, so we force the issue. */ ++struct __time_t_must_be_integral { ++ unsigned int __floating_time_t_unsupported : (time_t) 1; ++}; ++# define GNULIB_defined_struct_time_t_must_be_integral 1 ++# endif ++ ++/* Sleep for at least RQTP seconds unless interrupted, If interrupted, ++ return -1 and store the remaining time into RMTP. See ++ . */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define nanosleep rpl_nanosleep ++# endif ++_GL_FUNCDECL_RPL (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp)); ++# endif ++_GL_CXXALIASWARN (nanosleep); ++# endif ++ ++/* Return the 'time_t' representation of TP and normalize TP. */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mktime rpl_mktime ++# endif ++_GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); ++# else ++_GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); ++# endif ++_GL_CXXALIASWARN (mktime); ++# endif ++ ++/* Convert TIMER to RESULT, assuming local time and UTC respectively. See ++ and ++ . */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localtime_r ++# define localtime_r rpl_localtime_r ++# endif ++_GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (localtime_r); ++# endif ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gmtime_r ++# define gmtime_r rpl_gmtime_r ++# endif ++_GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (gmtime_r); ++# endif ++# endif ++ ++/* Convert TIMER to RESULT, assuming local time and UTC respectively. See ++ and ++ . */ ++# if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localtime ++# define localtime rpl_localtime ++# endif ++_GL_FUNCDECL_RPL (localtime, struct tm *, (time_t const *__timer) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (localtime, struct tm *, (time_t const *__timer)); ++# else ++_GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer)); ++# endif ++_GL_CXXALIASWARN (localtime); ++# endif ++ ++# if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gmtime ++# define gmtime rpl_gmtime ++# endif ++_GL_FUNCDECL_RPL (gmtime, struct tm *, (time_t const *__timer) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gmtime, struct tm *, (time_t const *__timer)); ++# else ++_GL_CXXALIAS_SYS (gmtime, struct tm *, (time_t const *__timer)); ++# endif ++_GL_CXXALIASWARN (gmtime); ++# endif ++ ++/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store ++ the resulting broken-down time into TM. See ++ . */ ++# if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, ++ char const *restrict __format, ++ struct tm *restrict __tm) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, ++ char const *restrict __format, ++ struct tm *restrict __tm)); ++_GL_CXXALIASWARN (strptime); ++# endif ++ ++# if defined _GNU_SOURCE && 0 && ! 0 ++typedef struct tm_zone *timezone_t; ++_GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name)); ++_GL_CXXALIAS_SYS (tzalloc, timezone_t, (char const *__name)); ++_GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz)); ++_GL_CXXALIAS_SYS (tzfree, void, (timezone_t __tz)); ++_GL_FUNCDECL_SYS (localtime_rz, struct tm *, ++ (timezone_t __tz, time_t const *restrict __timer, ++ struct tm *restrict __result) _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_SYS (localtime_rz, struct tm *, ++ (timezone_t __tz, time_t const *restrict __timer, ++ struct tm *restrict __result)); ++_GL_FUNCDECL_SYS (mktime_z, time_t, ++ (timezone_t __tz, struct tm *restrict __result) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_SYS (mktime_z, time_t, ++ (timezone_t __tz, struct tm *restrict __result)); ++# endif ++ ++/* Convert TM to a time_t value, assuming UTC. */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef timegm ++# define timegm rpl_timegm ++# endif ++_GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); ++# endif ++_GL_CXXALIASWARN (timegm); ++# endif ++ ++/* Encourage applications to avoid unsafe functions that can overrun ++ buffers when given outlandish struct tm values. Portable ++ applications should use strftime (or even sprintf) instead. */ ++# if defined GNULIB_POSIXCHECK ++# undef asctime ++_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef asctime_r ++_GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef ctime ++_GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef ctime_r ++_GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/unistd.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/unistd.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/unistd.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/unistd.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1902 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Substitute for and wrapper around . ++ Copyright (C) 2003-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_UNISTD_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifdef _GL_INCLUDING_UNISTD_H ++/* Special invocation convention: ++ - On Mac OS X 10.3.9 we have a sequence of nested includes ++ -> -> -> ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. */ ++ ++#include ++ ++#else ++/* Normal invocation convention. */ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# define _GL_INCLUDING_UNISTD_H ++# include ++# undef _GL_INCLUDING_UNISTD_H ++#endif ++ ++/* Get all possible declarations of gethostname(). */ ++#if 0 && 1 \ ++ && !defined _GL_INCLUDING_WINSOCK2_H ++# define _GL_INCLUDING_WINSOCK2_H ++# include ++# undef _GL_INCLUDING_WINSOCK2_H ++#endif ++ ++#if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H ++#define _GL_UNISTD_H ++ ++/* NetBSD 5.0 mis-defines NULL. Also get size_t. */ ++#include ++ ++/* mingw doesn't define the SEEK_* or *_FILENO macros in . */ ++/* Cygwin 1.7.1 declares symlinkat in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ ++ || ((0 || defined GNULIB_POSIXCHECK) \ ++ && defined __CYGWIN__)) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* Cygwin 1.7.1 declares unlinkat in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* mingw fails to declare _exit in . */ ++/* mingw, MSVC, BeOS, Haiku declare environ in , not in ++ . */ ++/* Solaris declares getcwd not only in but also in . */ ++/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is ++ included here. */ ++/* But avoid namespace pollution on glibc systems. */ ++#if !defined __GLIBC__ && !defined __osf__ ++# define __need_system_stdlib_h ++# include ++# undef __need_system_stdlib_h ++#endif ++ ++/* Native Windows platforms declare chdir, getcwd, rmdir in ++ and/or , not in . ++ They also declare access(), chmod(), close(), dup(), dup2(), isatty(), ++ lseek(), read(), unlink(), write() in . */ ++#if ((0 || 0 || 0 \ ++ || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) ++# include /* mingw32, mingw64 */ ++# include /* mingw64, MSVC 9 */ ++#elif (0 || 0 || 0 || 0 \ ++ || 0 || 0 || 0 || 0 \ ++ || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++/* AIX and OSF/1 5.1 declare getdomainname in , not in . ++ NonStop Kernel declares gethostname in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if ((0 && (defined _AIX || defined __osf__)) \ ++ || (0 && defined __TANDEM)) \ ++ && !defined __GLIBC__ ++# include ++#endif ++ ++/* MSVC defines off_t in . ++ May also define off_t to a 64-bit type on native Windows. */ ++#if !0 || 1 ++/* Get off_t. */ ++# include ++#endif ++ ++#if (0 || 0 \ ++ || 1 || 0 \ ++ || 0 || 0 || defined GNULIB_POSIXCHECK) ++/* Get ssize_t. */ ++# include ++#endif ++ ++/* Get getopt(), optarg, optind, opterr, optopt. ++ But avoid namespace pollution on glibc systems. */ ++/* Also, don't include inside libgettextpo, because we use ++ the getopt module only in gettext-tools/gnulib-lib/, not in ++ gettext-tools/libgettextpo/, but there is only a single ++ GNULIB_UNISTD_H_GETOPT variable for both. */ ++#if 01 && !defined GTPO_CONFIG_H && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT ++# define __need_getopt ++# include ++#endif ++ ++#ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++#endif ++_GL_INLINE_HEADER_BEGIN ++#ifndef _GL_UNISTD_INLINE ++# define _GL_UNISTD_INLINE _GL_INLINE ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Hide some function declarations from . */ ++ ++#if 0 && 1 ++# if !defined _GL_SYS_SOCKET_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef socket ++# define socket socket_used_without_including_sys_socket_h ++# undef connect ++# define connect connect_used_without_including_sys_socket_h ++# undef accept ++# define accept accept_used_without_including_sys_socket_h ++# undef bind ++# define bind bind_used_without_including_sys_socket_h ++# undef getpeername ++# define getpeername getpeername_used_without_including_sys_socket_h ++# undef getsockname ++# define getsockname getsockname_used_without_including_sys_socket_h ++# undef getsockopt ++# define getsockopt getsockopt_used_without_including_sys_socket_h ++# undef listen ++# define listen listen_used_without_including_sys_socket_h ++# undef recv ++# define recv recv_used_without_including_sys_socket_h ++# undef send ++# define send send_used_without_including_sys_socket_h ++# undef recvfrom ++# define recvfrom recvfrom_used_without_including_sys_socket_h ++# undef sendto ++# define sendto sendto_used_without_including_sys_socket_h ++# undef setsockopt ++# define setsockopt setsockopt_used_without_including_sys_socket_h ++# undef shutdown ++# define shutdown shutdown_used_without_including_sys_socket_h ++# else ++ _GL_WARN_ON_USE (socket, ++ "socket() used without including "); ++ _GL_WARN_ON_USE (connect, ++ "connect() used without including "); ++ _GL_WARN_ON_USE (accept, ++ "accept() used without including "); ++ _GL_WARN_ON_USE (bind, ++ "bind() used without including "); ++ _GL_WARN_ON_USE (getpeername, ++ "getpeername() used without including "); ++ _GL_WARN_ON_USE (getsockname, ++ "getsockname() used without including "); ++ _GL_WARN_ON_USE (getsockopt, ++ "getsockopt() used without including "); ++ _GL_WARN_ON_USE (listen, ++ "listen() used without including "); ++ _GL_WARN_ON_USE (recv, ++ "recv() used without including "); ++ _GL_WARN_ON_USE (send, ++ "send() used without including "); ++ _GL_WARN_ON_USE (recvfrom, ++ "recvfrom() used without including "); ++ _GL_WARN_ON_USE (sendto, ++ "sendto() used without including "); ++ _GL_WARN_ON_USE (setsockopt, ++ "setsockopt() used without including "); ++ _GL_WARN_ON_USE (shutdown, ++ "shutdown() used without including "); ++# endif ++# endif ++# if !defined _GL_SYS_SELECT_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef select ++# define select select_used_without_including_sys_select_h ++# else ++ _GL_WARN_ON_USE (select, ++ "select() used without including "); ++# endif ++# endif ++#endif ++ ++ ++/* OS/2 EMX lacks these macros. */ ++#ifndef STDIN_FILENO ++# define STDIN_FILENO 0 ++#endif ++#ifndef STDOUT_FILENO ++# define STDOUT_FILENO 1 ++#endif ++#ifndef STDERR_FILENO ++# define STDERR_FILENO 2 ++#endif ++ ++/* Ensure *_OK macros exist. */ ++#ifndef F_OK ++# define F_OK 0 ++# define X_OK 1 ++# define W_OK 2 ++# define R_OK 4 ++#endif ++ ++ ++/* Declare overridden functions. */ ++ ++ ++#if defined GNULIB_POSIXCHECK ++/* The access() function is a security risk. */ ++_GL_WARN_ON_USE (access, "the access function is a security risk - " ++ "use the gnulib module faccessat instead"); ++#endif ++ ++ ++#if 0 ++_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIASWARN (chdir); ++#elif defined GNULIB_POSIXCHECK ++# undef chdir ++# if HAVE_RAW_DECL_CHDIR ++_GL_WARN_ON_USE (chown, "chdir is not always in - " ++ "use gnulib module chdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE ++ to GID (if GID is not -1). Follow symbolic links. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dup2 rpl_dup2 ++# endif ++_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); ++_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); ++# endif ++_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); ++# endif ++_GL_CXXALIASWARN (dup2); ++#elif defined GNULIB_POSIXCHECK ++# undef dup2 ++# if HAVE_RAW_DECL_DUP2 ++_GL_WARN_ON_USE (dup2, "dup2 is unportable - " ++ "use gnulib module dup2 for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the ++ specified flags. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ Close NEWFD first if it is open. ++ Return newfd if successful, otherwise -1 and errno set. ++ See the Linux man page at ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dup3 rpl_dup3 ++# endif ++_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); ++_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); ++# else ++_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); ++_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); ++# endif ++_GL_CXXALIASWARN (dup3); ++#elif defined GNULIB_POSIXCHECK ++# undef dup3 ++# if HAVE_RAW_DECL_DUP3 ++_GL_WARN_ON_USE (dup3, "dup3 is unportable - " ++ "use gnulib module dup3 for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if !1 ++/* Set of environment variables and values. An array of strings of the form ++ "VARIABLE=VALUE", terminated with a NULL. */ ++# if defined __APPLE__ && defined __MACH__ ++# include ++# if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR ++# define _GL_USE_CRT_EXTERNS ++# endif ++# endif ++# ifdef _GL_USE_CRT_EXTERNS ++# include ++# define environ (*_NSGetEnviron ()) ++# else ++# ifdef __cplusplus ++extern "C" { ++# endif ++extern char **environ; ++# ifdef __cplusplus ++} ++# endif ++# endif ++# endif ++#elif defined GNULIB_POSIXCHECK ++# if HAVE_RAW_DECL_ENVIRON ++_GL_UNISTD_INLINE char *** ++rpl_environ (void) ++{ ++ return &environ; ++} ++_GL_WARN_ON_USE (rpl_environ, "environ is unportable - " ++ "use gnulib module environ for portability"); ++# undef environ ++# define environ (*rpl_environ ()) ++# endif ++#endif ++ ++ ++#if 0 ++/* Like access(), except that it uses the effective user id and group id of ++ the current process. */ ++# if !1 ++_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); ++_GL_CXXALIASWARN (euidaccess); ++# if defined GNULIB_POSIXCHECK ++/* Like access(), this function is a security risk. */ ++_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " ++ "use the gnulib module faccessat instead"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef euidaccess ++# if HAVE_RAW_DECL_EUIDACCESS ++_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " ++ "use gnulib module euidaccess for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (faccessat, int, ++ (int fd, char const *file, int mode, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (faccessat, int, ++ (int fd, char const *file, int mode, int flag)); ++_GL_CXXALIASWARN (faccessat); ++#elif defined GNULIB_POSIXCHECK ++# undef faccessat ++# if HAVE_RAW_DECL_FACCESSAT ++_GL_WARN_ON_USE (faccessat, "faccessat is not portable - " ++ "use gnulib module faccessat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the process' current working directory to the directory on which ++ the given file descriptor is open. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if ! 1 ++_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); ++ ++/* Gnulib internal hooks needed to maintain the fchdir metadata. */ ++_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) ++ _GL_ARG_NONNULL ((2)); ++_GL_EXTERN_C void _gl_unregister_fd (int fd); ++_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); ++_GL_EXTERN_C const char *_gl_directory_name (int fd); ++ ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); ++# endif ++# endif ++_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); ++_GL_CXXALIASWARN (fchdir); ++#elif defined GNULIB_POSIXCHECK ++# undef fchdir ++# if HAVE_RAW_DECL_FCHDIR ++_GL_WARN_ON_USE (fchdir, "fchdir is unportable - " ++ "use gnulib module fchdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fchownat ++# define fchownat rpl_fchownat ++# endif ++_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag)); ++# endif ++_GL_CXXALIASWARN (fchownat); ++#elif defined GNULIB_POSIXCHECK ++# undef fchownat ++# if HAVE_RAW_DECL_FCHOWNAT ++_GL_WARN_ON_USE (fchownat, "fchownat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Synchronize changes to a file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if !1 || !1 ++_GL_FUNCDECL_SYS (fdatasync, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (fdatasync, int, (int fd)); ++_GL_CXXALIASWARN (fdatasync); ++#elif defined GNULIB_POSIXCHECK ++# undef fdatasync ++# if HAVE_RAW_DECL_FDATASYNC ++_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " ++ "use gnulib module fdatasync for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Synchronize changes, including metadata, to a file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if !1 ++_GL_FUNCDECL_SYS (fsync, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (fsync, int, (int fd)); ++_GL_CXXALIASWARN (fsync); ++#elif defined GNULIB_POSIXCHECK ++# undef fsync ++# if HAVE_RAW_DECL_FSYNC ++_GL_WARN_ON_USE (fsync, "fsync is unportable - " ++ "use gnulib module fsync for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the size of the file to which FD is opened to become equal to LENGTH. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftruncate ++# define ftruncate rpl_ftruncate ++# endif ++_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); ++_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); ++# endif ++_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); ++# endif ++_GL_CXXALIASWARN (ftruncate); ++#elif defined GNULIB_POSIXCHECK ++# undef ftruncate ++# if HAVE_RAW_DECL_FTRUNCATE ++_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " ++ "use gnulib module ftruncate for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Get the name of the current working directory, and put it in SIZE bytes ++ of BUF. ++ Return BUF if successful, or NULL if the directory couldn't be determined ++ or SIZE was too small. ++ See the POSIX:2008 specification ++ . ++ Additionally, the gnulib module 'getcwd' guarantees the following GNU ++ extension: If BUF is NULL, an array is allocated with 'malloc'; the array ++ is SIZE bytes long, unless SIZE == 0, in which case it is as big as ++ necessary. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getcwd rpl_getcwd ++# endif ++_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); ++_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); ++# else ++/* Need to cast, because on mingw, the second parameter is ++ int size. */ ++_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); ++# endif ++_GL_CXXALIASWARN (getcwd); ++#elif defined GNULIB_POSIXCHECK ++# undef getcwd ++# if HAVE_RAW_DECL_GETCWD ++_GL_WARN_ON_USE (getcwd, "getcwd is unportable - " ++ "use gnulib module getcwd for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the NIS domain name of the machine. ++ WARNING! The NIS domain name is unrelated to the fully qualified host name ++ of the machine. It is also unrelated to email addresses. ++ WARNING! The NIS domain name is usually the empty string or "(none)" when ++ not using NIS. ++ ++ Put up to LEN bytes of the NIS domain name into NAME. ++ Null terminate it if the name is shorter than LEN. ++ If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. ++ Return 0 if successful, otherwise set errno and return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdomainname ++# define getdomainname rpl_getdomainname ++# endif ++_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); ++# endif ++_GL_CXXALIASWARN (getdomainname); ++#elif defined GNULIB_POSIXCHECK ++# undef getdomainname ++# if HAVE_RAW_DECL_GETDOMAINNAME ++_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " ++ "use gnulib module getdomainname for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the maximum number of file descriptors in the current process. ++ In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdtablesize ++# define getdtablesize rpl_getdtablesize ++# endif ++_GL_FUNCDECL_RPL (getdtablesize, int, (void)); ++_GL_CXXALIAS_RPL (getdtablesize, int, (void)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getdtablesize, int, (void)); ++# endif ++_GL_CXXALIAS_SYS (getdtablesize, int, (void)); ++# endif ++_GL_CXXALIASWARN (getdtablesize); ++#elif defined GNULIB_POSIXCHECK ++# undef getdtablesize ++# if HAVE_RAW_DECL_GETDTABLESIZE ++_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " ++ "use gnulib module getdtablesize for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the supplemental groups that the current process belongs to. ++ It is unspecified whether the effective group id is in the list. ++ If N is 0, return the group count; otherwise, N describes how many ++ entries are available in GROUPS. Return -1 and set errno if N is ++ not 0 and not large enough. Fails with ENOSYS on some systems. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getgroups ++# define getgroups rpl_getgroups ++# endif ++_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); ++_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); ++# endif ++_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); ++# endif ++_GL_CXXALIASWARN (getgroups); ++#elif defined GNULIB_POSIXCHECK ++# undef getgroups ++# if HAVE_RAW_DECL_GETGROUPS ++_GL_WARN_ON_USE (getgroups, "getgroups is unportable - " ++ "use gnulib module getgroups for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the standard host name of the machine. ++ WARNING! The host name may or may not be fully qualified. ++ ++ Put up to LEN bytes of the host name into NAME. ++ Null terminate it if the name is shorter than LEN. ++ If the host name is longer than LEN, set errno = EINVAL and return -1. ++ Return 0 if successful, otherwise set errno and return -1. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gethostname ++# define gethostname rpl_gethostname ++# endif ++_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second ++ parameter is ++ int len. */ ++_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); ++# endif ++_GL_CXXALIASWARN (gethostname); ++#elif 1 ++# undef gethostname ++# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname ++#elif defined GNULIB_POSIXCHECK ++# undef gethostname ++# if HAVE_RAW_DECL_GETHOSTNAME ++_GL_WARN_ON_USE (gethostname, "gethostname is unportable - " ++ "use gnulib module gethostname for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Returns the user's login name, or NULL if it cannot be found. Upon error, ++ returns NULL with errno set. ++ ++ See . ++ ++ Most programs don't need to use this function, because the information is ++ available through environment variables: ++ ${LOGNAME-$USER} on Unix platforms, ++ $USERNAME on native Windows platforms. ++ */ ++# if !1 ++_GL_FUNCDECL_SYS (getlogin, char *, (void)); ++# endif ++_GL_CXXALIAS_SYS (getlogin, char *, (void)); ++_GL_CXXALIASWARN (getlogin); ++#elif defined GNULIB_POSIXCHECK ++# undef getlogin ++# if HAVE_RAW_DECL_GETLOGIN ++_GL_WARN_ON_USE (getlogin, "getlogin is unportable - " ++ "use gnulib module getlogin for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Copies the user's login name to NAME. ++ The array pointed to by NAME has room for SIZE bytes. ++ ++ Returns 0 if successful. Upon error, an error number is returned, or -1 in ++ the case that the login name cannot be found but no specific error is ++ provided (this case is hopefully rare but is left open by the POSIX spec). ++ ++ See . ++ ++ Most programs don't need to use this function, because the information is ++ available through environment variables: ++ ${LOGNAME-$USER} on Unix platforms, ++ $USERNAME on native Windows platforms. ++ */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getlogin_r rpl_getlogin_r ++# endif ++_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 10 systems, the second argument is ++ int size. */ ++_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); ++# endif ++_GL_CXXALIASWARN (getlogin_r); ++#elif defined GNULIB_POSIXCHECK ++# undef getlogin_r ++# if HAVE_RAW_DECL_GETLOGIN_R ++_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " ++ "use gnulib module getlogin_r for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getpagesize rpl_getpagesize ++# endif ++_GL_FUNCDECL_RPL (getpagesize, int, (void)); ++_GL_CXXALIAS_RPL (getpagesize, int, (void)); ++# else ++# if !1 ++# if !defined getpagesize ++/* This is for POSIX systems. */ ++# if !defined _gl_getpagesize && defined _SC_PAGESIZE ++# if ! (defined __VMS && __VMS_VER < 70000000) ++# define _gl_getpagesize() sysconf (_SC_PAGESIZE) ++# endif ++# endif ++/* This is for older VMS. */ ++# if !defined _gl_getpagesize && defined __VMS ++# ifdef __ALPHA ++# define _gl_getpagesize() 8192 ++# else ++# define _gl_getpagesize() 512 ++# endif ++# endif ++/* This is for BeOS. */ ++# if !defined _gl_getpagesize && 0 ++# include ++# if defined B_PAGE_SIZE ++# define _gl_getpagesize() B_PAGE_SIZE ++# endif ++# endif ++/* This is for AmigaOS4.0. */ ++# if !defined _gl_getpagesize && defined __amigaos4__ ++# define _gl_getpagesize() 2048 ++# endif ++/* This is for older Unix systems. */ ++# if !defined _gl_getpagesize && 0 ++# include ++# ifdef EXEC_PAGESIZE ++# define _gl_getpagesize() EXEC_PAGESIZE ++# else ++# ifdef NBPG ++# ifndef CLSIZE ++# define CLSIZE 1 ++# endif ++# define _gl_getpagesize() (NBPG * CLSIZE) ++# else ++# ifdef NBPC ++# define _gl_getpagesize() NBPC ++# endif ++# endif ++# endif ++# endif ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getpagesize() _gl_getpagesize () ++# else ++# if !GNULIB_defined_getpagesize_function ++_GL_UNISTD_INLINE int ++getpagesize () ++{ ++ return _gl_getpagesize (); ++} ++# define GNULIB_defined_getpagesize_function 1 ++# endif ++# endif ++# endif ++# endif ++/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ ++_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (getpagesize); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef getpagesize ++# if HAVE_RAW_DECL_GETPAGESIZE ++_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " ++ "use gnulib module getpagesize for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the next valid login shell on the system, or NULL when the end of ++ the list has been reached. */ ++# if !1 ++_GL_FUNCDECL_SYS (getusershell, char *, (void)); ++# endif ++_GL_CXXALIAS_SYS (getusershell, char *, (void)); ++_GL_CXXALIASWARN (getusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef getusershell ++# if HAVE_RAW_DECL_GETUSERSHELL ++_GL_WARN_ON_USE (getusershell, "getusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Rewind to pointer that is advanced at each getusershell() call. */ ++# if !1 ++_GL_FUNCDECL_SYS (setusershell, void, (void)); ++# endif ++_GL_CXXALIAS_SYS (setusershell, void, (void)); ++_GL_CXXALIASWARN (setusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef setusershell ++# if HAVE_RAW_DECL_SETUSERSHELL ++_GL_WARN_ON_USE (setusershell, "setusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Free the pointer that is advanced at each getusershell() call and ++ associated resources. */ ++# if !1 ++_GL_FUNCDECL_SYS (endusershell, void, (void)); ++# endif ++_GL_CXXALIAS_SYS (endusershell, void, (void)); ++_GL_CXXALIASWARN (endusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef endusershell ++# if HAVE_RAW_DECL_ENDUSERSHELL ++_GL_WARN_ON_USE (endusershell, "endusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Determine whether group id is in calling user's group list. */ ++# if !1 ++_GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); ++# endif ++_GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); ++_GL_CXXALIASWARN (group_member); ++#elif defined GNULIB_POSIXCHECK ++# undef group_member ++# if HAVE_RAW_DECL_GROUP_MEMBER ++_GL_WARN_ON_USE (group_member, "group_member is unportable - " ++ "use gnulib module group-member for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef isatty ++# define isatty rpl_isatty ++# endif ++_GL_FUNCDECL_RPL (isatty, int, (int fd)); ++_GL_CXXALIAS_RPL (isatty, int, (int fd)); ++# else ++_GL_CXXALIAS_SYS (isatty, int, (int fd)); ++# endif ++_GL_CXXALIASWARN (isatty); ++#elif defined GNULIB_POSIXCHECK ++# undef isatty ++# if HAVE_RAW_DECL_ISATTY ++_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " ++ "use gnulib module isatty for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE ++ to GID (if GID is not -1). Do not follow symbolic links. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef lchown ++# define lchown rpl_lchown ++# endif ++_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); ++# endif ++_GL_CXXALIASWARN (lchown); ++#elif defined GNULIB_POSIXCHECK ++# undef lchown ++# if HAVE_RAW_DECL_LCHOWN ++_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " ++ "use gnulib module lchown for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a new hard link for an existing file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define link rpl_link ++# endif ++_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); ++# endif ++_GL_CXXALIASWARN (link); ++#elif defined GNULIB_POSIXCHECK ++# undef link ++# if HAVE_RAW_DECL_LINK ++_GL_WARN_ON_USE (link, "link is unportable - " ++ "use gnulib module link for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a new hard link for an existing file, relative to two ++ directories. FLAG controls whether symlinks are followed. ++ Return 0 if successful, otherwise -1 and errno set. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef linkat ++# define linkat rpl_linkat ++# endif ++_GL_FUNCDECL_RPL (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag)); ++# endif ++_GL_CXXALIASWARN (linkat); ++#elif defined GNULIB_POSIXCHECK ++# undef linkat ++# if HAVE_RAW_DECL_LINKAT ++_GL_WARN_ON_USE (linkat, "linkat is unportable - " ++ "use gnulib module linkat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. ++ Return the new offset if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lseek rpl_lseek ++# endif ++_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); ++_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); ++# else ++_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); ++# endif ++_GL_CXXALIASWARN (lseek); ++#elif defined GNULIB_POSIXCHECK ++# undef lseek ++# if HAVE_RAW_DECL_LSEEK ++_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " ++ "systems - use gnulib module lseek for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a pipe, defaulting to O_BINARY mode. ++ Store the read-end as fd[0] and the write-end as fd[1]. ++ Return 0 upon success, or -1 with errno set upon failure. */ ++# if !1 ++_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (pipe, int, (int fd[2])); ++_GL_CXXALIASWARN (pipe); ++#elif defined GNULIB_POSIXCHECK ++# undef pipe ++# if HAVE_RAW_DECL_PIPE ++_GL_WARN_ON_USE (pipe, "pipe is unportable - " ++ "use gnulib module pipe-posix for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a pipe, applying the given flags when opening the read-end of the ++ pipe and the write-end of the pipe. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ Store the read-end as fd[0] and the write-end as fd[1]. ++ Return 0 upon success, or -1 with errno set upon failure. ++ See also the Linux man page at ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define pipe2 rpl_pipe2 ++# endif ++_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); ++# else ++_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); ++# endif ++_GL_CXXALIASWARN (pipe2); ++#elif defined GNULIB_POSIXCHECK ++# undef pipe2 ++# if HAVE_RAW_DECL_PIPE2 ++_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " ++ "use gnulib module pipe2 for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. ++ Return the number of bytes placed into BUF if successful, otherwise ++ set errno and return -1. 0 indicates EOF. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pread ++# define pread rpl_pread ++# endif ++_GL_FUNCDECL_RPL (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset)); ++# endif ++_GL_CXXALIASWARN (pread); ++#elif defined GNULIB_POSIXCHECK ++# undef pread ++# if HAVE_RAW_DECL_PREAD ++_GL_WARN_ON_USE (pread, "pread is unportable - " ++ "use gnulib module pread for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. ++ Return the number of bytes written if successful, otherwise ++ set errno and return -1. 0 indicates nothing written. See the ++ POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pwrite ++# define pwrite rpl_pwrite ++# endif ++_GL_FUNCDECL_RPL (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset)); ++# endif ++_GL_CXXALIASWARN (pwrite); ++#elif defined GNULIB_POSIXCHECK ++# undef pwrite ++# if HAVE_RAW_DECL_PWRITE ++_GL_WARN_ON_USE (pwrite, "pwrite is unportable - " ++ "use gnulib module pwrite for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Read up to COUNT bytes from file descriptor FD into the buffer starting ++ at BUF. See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef read ++# define read rpl_read ++# endif ++_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); ++# else ++/* Need to cast, because on mingw, the third parameter is ++ unsigned int count ++ and the return type is 'int'. */ ++_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); ++# endif ++_GL_CXXALIASWARN (read); ++#endif ++ ++ ++#if 1 ++/* Read the contents of the symbolic link FILE and place the first BUFSIZE ++ bytes of it into BUF. Return the number of bytes placed into BUF if ++ successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define readlink rpl_readlink ++# endif ++_GL_FUNCDECL_RPL (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize)); ++# endif ++_GL_CXXALIASWARN (readlink); ++#elif defined GNULIB_POSIXCHECK ++# undef readlink ++# if HAVE_RAW_DECL_READLINK ++_GL_WARN_ON_USE (readlink, "readlink is unportable - " ++ "use gnulib module readlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define readlinkat rpl_readlinkat ++# endif ++_GL_FUNCDECL_RPL (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len)); ++# endif ++_GL_CXXALIASWARN (readlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef readlinkat ++# if HAVE_RAW_DECL_READLINKAT ++_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " ++ "use gnulib module readlinkat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Remove the directory DIR. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define rmdir rpl_rmdir ++# endif ++_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (rmdir, int, (char const *name)); ++# else ++_GL_CXXALIAS_SYS (rmdir, int, (char const *name)); ++# endif ++_GL_CXXALIASWARN (rmdir); ++#elif defined GNULIB_POSIXCHECK ++# undef rmdir ++# if HAVE_RAW_DECL_RMDIR ++_GL_WARN_ON_USE (rmdir, "rmdir is unportable - " ++ "use gnulib module rmdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Set the host name of the machine. ++ The host name may or may not be fully qualified. ++ ++ Put LEN bytes of NAME into the host name. ++ Return 0 if successful, otherwise, set errno and return -1. ++ ++ Platforms with no ability to set the hostname return -1 and set ++ errno = ENOSYS. */ ++# if !1 || !1 ++_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 ++ and FreeBSD 6.4 the second parameter is int. On Solaris 11 ++ 2011-10, the first parameter is not const. */ ++_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); ++_GL_CXXALIASWARN (sethostname); ++#elif defined GNULIB_POSIXCHECK ++# undef sethostname ++# if HAVE_RAW_DECL_SETHOSTNAME ++_GL_WARN_ON_USE (sethostname, "sethostname is unportable - " ++ "use gnulib module sethostname for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Pause the execution of the current thread for N seconds. ++ Returns the number of seconds left to sleep. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef sleep ++# define sleep rpl_sleep ++# endif ++_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); ++_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); ++# endif ++_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); ++# endif ++_GL_CXXALIASWARN (sleep); ++#elif defined GNULIB_POSIXCHECK ++# undef sleep ++# if HAVE_RAW_DECL_SLEEP ++_GL_WARN_ON_USE (sleep, "sleep is unportable - " ++ "use gnulib module sleep for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef symlink ++# define symlink rpl_symlink ++# endif ++_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); ++# endif ++_GL_CXXALIASWARN (symlink); ++#elif defined GNULIB_POSIXCHECK ++# undef symlink ++# if HAVE_RAW_DECL_SYMLINK ++_GL_WARN_ON_USE (symlink, "symlink is not portable - " ++ "use gnulib module symlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef symlinkat ++# define symlinkat rpl_symlinkat ++# endif ++_GL_FUNCDECL_RPL (symlinkat, int, ++ (char const *contents, int fd, char const *file) ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (symlinkat, int, ++ (char const *contents, int fd, char const *file)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (symlinkat, int, ++ (char const *contents, int fd, char const *file) ++ _GL_ARG_NONNULL ((1, 3))); ++# endif ++_GL_CXXALIAS_SYS (symlinkat, int, ++ (char const *contents, int fd, char const *file)); ++# endif ++_GL_CXXALIASWARN (symlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef symlinkat ++# if HAVE_RAW_DECL_SYMLINKAT ++_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " ++ "use gnulib module symlinkat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Store at most BUFLEN characters of the pathname of the terminal FD is ++ open on in BUF. Return 0 on success, otherwise an error number. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ttyname_r ++# define ttyname_r rpl_ttyname_r ++# endif ++_GL_FUNCDECL_RPL (ttyname_r, int, ++ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (ttyname_r, int, ++ (int fd, char *buf, size_t buflen)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ttyname_r, int, ++ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (ttyname_r, int, ++ (int fd, char *buf, size_t buflen)); ++# endif ++_GL_CXXALIASWARN (ttyname_r); ++#elif defined GNULIB_POSIXCHECK ++# undef ttyname_r ++# if HAVE_RAW_DECL_TTYNAME_R ++_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " ++ "use gnulib module ttyname_r for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unlink ++# define unlink rpl_unlink ++# endif ++_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (unlink, int, (char const *file)); ++# else ++_GL_CXXALIAS_SYS (unlink, int, (char const *file)); ++# endif ++_GL_CXXALIASWARN (unlink); ++#elif defined GNULIB_POSIXCHECK ++# undef unlink ++# if HAVE_RAW_DECL_UNLINK ++_GL_WARN_ON_USE (unlink, "unlink is not portable - " ++ "use gnulib module unlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unlinkat ++# define unlinkat rpl_unlinkat ++# endif ++_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); ++# endif ++_GL_CXXALIASWARN (unlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef unlinkat ++# if HAVE_RAW_DECL_UNLINKAT ++_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Pause the execution of the current thread for N microseconds. ++ Returns 0 on completion, or -1 on range error. ++ See the POSIX:2001 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef usleep ++# define usleep rpl_usleep ++# endif ++_GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); ++_GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); ++# endif ++_GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); ++# endif ++_GL_CXXALIASWARN (usleep); ++#elif defined GNULIB_POSIXCHECK ++# undef usleep ++# if HAVE_RAW_DECL_USLEEP ++_GL_WARN_ON_USE (usleep, "usleep is unportable - " ++ "use gnulib module usleep for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Write up to COUNT bytes starting at BUF to file descriptor FD. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef write ++# define write rpl_write ++# endif ++_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); ++# else ++/* Need to cast, because on mingw, the third parameter is ++ unsigned int count ++ and the return type is 'int'. */ ++_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); ++# endif ++_GL_CXXALIASWARN (write); ++#endif ++ ++_GL_INLINE_HEADER_END ++ ++#endif /* _GL_UNISTD_H */ ++#endif /* _GL_INCLUDING_UNISTD_H */ ++#endif /* _GL_UNISTD_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/unistr.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/unistr.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/unistr.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/unistr.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,751 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Elementary Unicode string functions. ++ Copyright (C) 2001-2002, 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNISTR_H ++#define _UNISTR_H ++ ++#include "unitypes.h" ++ ++/* Get common macros for C. */ ++#include "unused-parameter.h" ++ ++/* Get bool. */ ++#include ++ ++/* Get size_t. */ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Conventions: ++ ++ All functions prefixed with u8_ operate on UTF-8 encoded strings. ++ Their unit is an uint8_t (1 byte). ++ ++ All functions prefixed with u16_ operate on UTF-16 encoded strings. ++ Their unit is an uint16_t (a 2-byte word). ++ ++ All functions prefixed with u32_ operate on UCS-4 encoded strings. ++ Their unit is an uint32_t (a 4-byte word). ++ ++ All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly ++ n units. ++ ++ All arguments starting with "str" and the arguments of functions starting ++ with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string ++ which terminates at the first NUL unit. This termination unit is ++ considered part of the string for all memory allocation purposes, but ++ is not considered part of the string for all other logical purposes. ++ ++ Functions returning a string result take a (resultbuf, lengthp) argument ++ pair. If resultbuf is not NULL and the result fits into *lengthp units, ++ it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly ++ allocated string is returned. In both cases, *lengthp is set to the ++ length (number of units) of the returned string. In case of error, ++ NULL is returned and errno is set. */ ++ ++ ++/* Elementary string checks. */ ++ ++/* Check whether an UTF-8 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint8_t * ++ u8_check (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Check whether an UTF-16 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint16_t * ++ u16_check (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Check whether an UCS-4 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint32_t * ++ u32_check (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++ ++/* Elementary string conversions. */ ++ ++/* Convert an UTF-8 string to an UTF-16 string. */ ++extern uint16_t * ++ u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-8 string to an UCS-4 string. */ ++extern uint32_t * ++ u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-16 string to an UTF-8 string. */ ++extern uint8_t * ++ u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-16 string to an UCS-4 string. */ ++extern uint32_t * ++ u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UCS-4 string to an UTF-8 string. */ ++extern uint8_t * ++ u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UCS-4 string to an UTF-16 string. */ ++extern uint16_t * ++ u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf, ++ size_t *lengthp); ++ ++ ++/* Elementary string functions. */ ++ ++/* Return the length (number of units) of the first character in S, which is ++ no longer than N. Return 0 if it is the NUL character. Return -1 upon ++ failure. */ ++/* Similar to mblen(), except that s must not be NULL. */ ++extern int ++ u8_mblen (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_mblen (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_mblen (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, ++ and an appropriate number of units is returned. ++ The number of available units, N, must be > 0. */ ++/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0, ++ and the NUL character is not treated specially. */ ++/* The variants with _safe suffix are safe, even if the library is compiled ++ without --enable-safety. */ ++ ++#if GNULIB_UNISTR_U8_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n); ++# else ++extern int ++ u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n); ++static inline int ++u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u8_mbtouc_unsafe_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n); ++# else ++extern int ++ u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n); ++static inline int ++u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n) ++{ ++ uint16_t c = *s; ++ ++ if (c < 0xd800 || c >= 0xe000) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u16_mbtouc_unsafe_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n); ++# else ++static inline int ++u32_mbtouc_unsafe (ucs4_t *puc, ++ const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) ++{ ++ uint32_t c = *s; ++ ++# if CONFIG_UNICODE_SAFETY ++ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) ++# endif ++ *puc = c; ++# if CONFIG_UNICODE_SAFETY ++ else ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++# endif ++ return 1; ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U8_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n); ++# else ++extern int ++ u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n); ++static inline int ++u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u8_mbtouc_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n); ++# else ++extern int ++ u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n); ++static inline int ++u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n) ++{ ++ uint16_t c = *s; ++ ++ if (c < 0xd800 || c >= 0xe000) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u16_mbtouc_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n); ++# else ++static inline int ++u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) ++{ ++ uint32_t c = *s; ++ ++ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) ++ *puc = c; ++ else ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++} ++# endif ++#endif ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, ++ and -1 is returned for an invalid sequence of units, -2 is returned for an ++ incomplete sequence of units. ++ The number of available units, N, must be > 0. */ ++/* Similar to u*_mbtouc(), except that the return value gives more details ++ about the failure, similar to mbrtowc(). */ ++ ++#if GNULIB_UNISTR_U8_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n); ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n); ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n); ++#endif ++ ++/* Put the multibyte character represented by UC in S, returning its ++ length. Return -1 upon failure, -2 if the number of available units, N, ++ is too small. The latter case cannot occur if N >= 6/2/1, respectively. */ ++/* Similar to wctomb(), except that s must not be NULL, and the argument n ++ must be specified. */ ++ ++#if GNULIB_UNISTR_U8_UCTOMB || HAVE_LIBUNISTRING ++/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */ ++extern int ++ u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n); ++# if !HAVE_INLINE ++extern int ++ u8_uctomb (uint8_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u8_uctomb (uint8_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0x80 && n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ else ++ return u8_uctomb_aux (s, uc, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_UCTOMB || HAVE_LIBUNISTRING ++/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */ ++extern int ++ u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n); ++# if !HAVE_INLINE ++extern int ++ u16_uctomb (uint16_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u16_uctomb (uint16_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0xd800 && n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ else ++ return u16_uctomb_aux (s, uc, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_UCTOMB || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_uctomb (uint32_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u32_uctomb (uint32_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000)) ++ { ++ if (n > 0) ++ { ++ *s = uc; ++ return 1; ++ } ++ else ++ return -2; ++ } ++ else ++ return -1; ++} ++# endif ++#endif ++ ++/* Copy N units from SRC to DEST. */ ++/* Similar to memcpy(). */ ++extern uint8_t * ++ u8_cpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_cpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_cpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Copy N units from SRC to DEST, guaranteeing correct behavior for ++ overlapping memory areas. */ ++/* Similar to memmove(). */ ++extern uint8_t * ++ u8_move (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_move (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_move (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Set the first N characters of S to UC. UC should be a character that ++ occupies only 1 unit. */ ++/* Similar to memset(). */ ++extern uint8_t * ++ u8_set (uint8_t *s, ucs4_t uc, size_t n); ++extern uint16_t * ++ u16_set (uint16_t *s, ucs4_t uc, size_t n); ++extern uint32_t * ++ u32_set (uint32_t *s, ucs4_t uc, size_t n); ++ ++/* Compare S1 and S2, each of length N. */ ++/* Similar to memcmp(). */ ++extern int ++ u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Compare S1 and S2. */ ++/* Similar to the gnulib function memcmp2(). */ ++extern int ++ u8_cmp2 (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_cmp2 (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_cmp2 (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Search the string at S for UC. */ ++/* Similar to memchr(). */ ++extern uint8_t * ++ u8_chr (const uint8_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_chr (const uint16_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_chr (const uint32_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Count the number of Unicode characters in the N units from S. */ ++/* Similar to mbsnlen(). */ ++extern size_t ++ u8_mbsnlen (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_mbsnlen (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_mbsnlen (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Elementary string functions with memory allocation. */ ++ ++/* Make a freshly allocated copy of S, of length N. */ ++extern uint8_t * ++ u8_cpy_alloc (const uint8_t *s, size_t n); ++extern uint16_t * ++ u16_cpy_alloc (const uint16_t *s, size_t n); ++extern uint32_t * ++ u32_cpy_alloc (const uint32_t *s, size_t n); ++ ++/* Elementary string functions on NUL terminated strings. */ ++ ++/* Return the length (number of units) of the first character in S. ++ Return 0 if it is the NUL character. Return -1 upon failure. */ ++extern int ++ u8_strmblen (const uint8_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strmblen (const uint16_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strmblen (const uint32_t *s) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Return 0 if it is the NUL ++ character. Return -1 upon failure. */ ++extern int ++ u8_strmbtouc (ucs4_t *puc, const uint8_t *s); ++extern int ++ u16_strmbtouc (ucs4_t *puc, const uint16_t *s); ++extern int ++ u32_strmbtouc (ucs4_t *puc, const uint32_t *s); ++ ++/* Forward iteration step. Advances the pointer past the next character, ++ or returns NULL if the end of the string has been reached. Puts the ++ character's 'ucs4_t' representation in *PUC. */ ++extern const uint8_t * ++ u8_next (ucs4_t *puc, const uint8_t *s); ++extern const uint16_t * ++ u16_next (ucs4_t *puc, const uint16_t *s); ++extern const uint32_t * ++ u32_next (ucs4_t *puc, const uint32_t *s); ++ ++/* Backward iteration step. Advances the pointer to point to the previous ++ character, or returns NULL if the beginning of the string had been reached. ++ Puts the character's 'ucs4_t' representation in *PUC. */ ++extern const uint8_t * ++ u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start); ++extern const uint16_t * ++ u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start); ++extern const uint32_t * ++ u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start); ++ ++/* Return the number of units in S. */ ++/* Similar to strlen(), wcslen(). */ ++extern size_t ++ u8_strlen (const uint8_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strlen (const uint16_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strlen (const uint32_t *s) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the number of units in S, but at most MAXLEN. */ ++/* Similar to strnlen(), wcsnlen(). */ ++extern size_t ++ u8_strnlen (const uint8_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strnlen (const uint16_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strnlen (const uint32_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Copy SRC to DEST. */ ++/* Similar to strcpy(), wcscpy(). */ ++extern uint8_t * ++ u8_strcpy (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_strcpy (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_strcpy (uint32_t *dest, const uint32_t *src); ++ ++/* Copy SRC to DEST, returning the address of the terminating NUL in DEST. */ ++/* Similar to stpcpy(). */ ++extern uint8_t * ++ u8_stpcpy (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_stpcpy (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_stpcpy (uint32_t *dest, const uint32_t *src); ++ ++/* Copy no more than N units of SRC to DEST. */ ++/* Similar to strncpy(), wcsncpy(). */ ++extern uint8_t * ++ u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Copy no more than N units of SRC to DEST. Return a pointer past the last ++ non-NUL unit written into DEST. */ ++/* Similar to stpncpy(). */ ++extern uint8_t * ++ u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Append SRC onto DEST. */ ++/* Similar to strcat(), wcscat(). */ ++extern uint8_t * ++ u8_strcat (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_strcat (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_strcat (uint32_t *dest, const uint32_t *src); ++ ++/* Append no more than N units of SRC onto DEST. */ ++/* Similar to strncat(), wcsncat(). */ ++extern uint8_t * ++ u8_strncat (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_strncat (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_strncat (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Compare S1 and S2. */ ++/* Similar to strcmp(), wcscmp(). */ ++#ifdef __sun ++/* Avoid a collision with the u8_strcmp() function in Solaris 11 libc. */ ++extern int ++ u8_strcmp_gnu (const uint8_t *s1, const uint8_t *s2) ++ _UC_ATTRIBUTE_PURE; ++# define u8_strcmp u8_strcmp_gnu ++#else ++extern int ++ u8_strcmp (const uint8_t *s1, const uint8_t *s2) ++ _UC_ATTRIBUTE_PURE; ++#endif ++extern int ++ u16_strcmp (const uint16_t *s1, const uint16_t *s2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strcmp (const uint32_t *s1, const uint32_t *s2) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Compare S1 and S2 using the collation rules of the current locale. ++ Return -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2. ++ Upon failure, set errno and return any value. */ ++/* Similar to strcoll(), wcscoll(). */ ++extern int ++ u8_strcoll (const uint8_t *s1, const uint8_t *s2); ++extern int ++ u16_strcoll (const uint16_t *s1, const uint16_t *s2); ++extern int ++ u32_strcoll (const uint32_t *s1, const uint32_t *s2); ++ ++/* Compare no more than N units of S1 and S2. */ ++/* Similar to strncmp(), wcsncmp(). */ ++extern int ++ u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++/* Similar to strdup(), wcsdup(). */ ++extern uint8_t * ++ u8_strdup (const uint8_t *s); ++extern uint16_t * ++ u16_strdup (const uint16_t *s); ++extern uint32_t * ++ u32_strdup (const uint32_t *s); ++ ++/* Find the first occurrence of UC in STR. */ ++/* Similar to strchr(), wcschr(). */ ++extern uint8_t * ++ u8_strchr (const uint8_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strchr (const uint16_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strchr (const uint32_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the last occurrence of UC in STR. */ ++/* Similar to strrchr(), wcsrchr(). */ ++extern uint8_t * ++ u8_strrchr (const uint8_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strrchr (const uint16_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strrchr (const uint32_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length of the initial segment of STR which consists entirely ++ of Unicode characters not in REJECT. */ ++/* Similar to strcspn(), wcscspn(). */ ++extern size_t ++ u8_strcspn (const uint8_t *str, const uint8_t *reject) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strcspn (const uint16_t *str, const uint16_t *reject) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strcspn (const uint32_t *str, const uint32_t *reject) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length of the initial segment of STR which consists entirely ++ of Unicode characters in ACCEPT. */ ++/* Similar to strspn(), wcsspn(). */ ++extern size_t ++ u8_strspn (const uint8_t *str, const uint8_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strspn (const uint16_t *str, const uint16_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strspn (const uint32_t *str, const uint32_t *accept) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the first occurrence in STR of any character in ACCEPT. */ ++/* Similar to strpbrk(), wcspbrk(). */ ++extern uint8_t * ++ u8_strpbrk (const uint8_t *str, const uint8_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strpbrk (const uint16_t *str, const uint16_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strpbrk (const uint32_t *str, const uint32_t *accept) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK. */ ++/* Similar to strstr(), wcsstr(). */ ++extern uint8_t * ++ u8_strstr (const uint8_t *haystack, const uint8_t *needle) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strstr (const uint16_t *haystack, const uint16_t *needle) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strstr (const uint32_t *haystack, const uint32_t *needle) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether STR starts with PREFIX. */ ++extern bool ++ u8_startswith (const uint8_t *str, const uint8_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u16_startswith (const uint16_t *str, const uint16_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u32_startswith (const uint32_t *str, const uint32_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether STR ends with SUFFIX. */ ++extern bool ++ u8_endswith (const uint8_t *str, const uint8_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u16_endswith (const uint16_t *str, const uint16_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u32_endswith (const uint32_t *str, const uint32_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Divide STR into tokens separated by characters in DELIM. ++ This interface is actually more similar to wcstok than to strtok. */ ++/* Similar to strtok_r(), wcstok(). */ ++extern uint8_t * ++ u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr); ++extern uint16_t * ++ u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr); ++extern uint32_t * ++ u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNISTR_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/unitypes.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/unitypes.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/unitypes.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/unitypes.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,47 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Elementary types and macros for the GNU UniString library. ++ Copyright (C) 2002, 2005-2006, 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNITYPES_H ++#define _UNITYPES_H ++ ++/* Get uint8_t, uint16_t, uint32_t. */ ++#include ++ ++/* Type representing a Unicode character. */ ++typedef uint32_t ucs4_t; ++ ++/* Attribute of a function whose result depends only on the arguments ++ (not pointers!) and which has no side effects. */ ++#ifndef _UC_ATTRIBUTE_CONST ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ++# define _UC_ATTRIBUTE_CONST __attribute__ ((__const__)) ++# else ++# define _UC_ATTRIBUTE_CONST ++# endif ++#endif ++ ++/* Attribute of a function whose result depends only on the arguments ++ (possibly pointers) and global memory, and which has no side effects. */ ++#ifndef _UC_ATTRIBUTE_PURE ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _UC_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++# else ++# define _UC_ATTRIBUTE_PURE ++# endif ++#endif ++ ++#endif /* _UNITYPES_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/uniwidth.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/uniwidth.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/uniwidth.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/uniwidth.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,73 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Display width functions. ++ Copyright (C) 2001-2002, 2005, 2007, 2009-2016 Free Software Foundation, ++ Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNIWIDTH_H ++#define _UNIWIDTH_H ++ ++#include "unitypes.h" ++ ++/* Get size_t. */ ++#include ++ ++/* Get locale_charset() declaration. */ ++#include "localcharset.h" ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Display width. */ ++ ++/* These functions are locale dependent. The encoding argument identifies ++ the encoding (e.g. "ISO-8859-2" for Polish). */ ++ ++/* Determine number of column positions required for UC. */ ++extern int ++ uc_width (ucs4_t uc, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Determine number of column positions required for first N units ++ (or fewer if S ends before this) in S. */ ++extern int ++ u8_width (const uint8_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_width (const uint16_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_width (const uint32_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Determine number of column positions required for S. */ ++extern int ++ u8_strwidth (const uint8_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strwidth (const uint16_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strwidth (const uint32_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNIWIDTH_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/wchar.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/wchar.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/wchar.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/wchar.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1350 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for ISO C99 , for platforms that have issues. ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake. */ ++ ++/* ++ * ISO C 99 for platforms that have issues. ++ * ++ * ++ * For now, this just ensures proper prerequisite inclusion order and ++ * the declaration of wcwidth(). ++ */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if (((defined __need_mbstate_t || defined __need_wint_t) \ ++ && !defined __MINGW32__ && !defined __KLIBC__) \ ++ || (defined __hpux \ ++ && ((defined _INTTYPES_INCLUDED && !defined strtoimax) \ ++ || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) \ ++ || defined _GL_ALREADY_INCLUDING_WCHAR_H) ++/* Special invocation convention: ++ - Inside glibc and uClibc header files, but not MinGW. ++ - On HP-UX 11.00 we have a sequence of nested includes ++ -> -> , and the latter includes , ++ once indirectly -> -> -> ++ and once directly. In both situations 'wint_t' is not yet defined, ++ therefore we cannot provide the function overrides; instead include only ++ the system's . ++ - On IRIX 6.5, similarly, we have an include -> , and ++ the latter includes . But here, we have no way to detect whether ++ is completely included or is still being included. */ ++ ++#include MSVC_INCLUDE(wchar.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_WCHAR_H ++ ++#define _GL_ALREADY_INCLUDING_WCHAR_H ++ ++#if 0 ++# include /* for __GLIBC__ */ ++#endif ++ ++/* Tru64 with Desktop Toolkit C has a bug: must be included before ++ . ++ BSD/OS 4.0.1 has a bug: , and must be ++ included before . ++ In some builds of uClibc, is nonexistent and wchar_t is defined ++ by . ++ But avoid namespace pollution on glibc systems. */ ++#if !(defined __GLIBC__ && !defined __UCLIBC__) ++# include ++#endif ++#ifndef __GLIBC__ ++# include ++# include ++#endif ++ ++/* Include the original if it exists. ++ Some builds of uClibc lack it. */ ++/* The include_next requires a split double-inclusion guard. */ ++#if 1 ++# include MSVC_INCLUDE(wchar.h) ++#endif ++ ++#undef _GL_ALREADY_INCLUDING_WCHAR_H ++ ++#ifndef _GL_WCHAR_H ++#define _GL_WCHAR_H ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Define wint_t and WEOF. (Also done in wctype.in.h.) */ ++#if !1 && !defined wint_t ++# define wint_t int ++# ifndef WEOF ++# define WEOF -1 ++# endif ++#else ++/* MSVC defines wint_t as 'unsigned short' in . ++ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be ++ "unchanged by default argument promotions". Override it. */ ++# if defined _MSC_VER ++# if !GNULIB_defined_wint_t ++# include ++typedef unsigned int rpl_wint_t; ++# undef wint_t ++# define wint_t rpl_wint_t ++# define GNULIB_defined_wint_t 1 ++# endif ++# endif ++# ifndef WEOF ++# define WEOF ((wint_t) -1) ++# endif ++#endif ++ ++ ++/* Override mbstate_t if it is too small. ++ On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for ++ implementing mbrtowc for encodings like UTF-8. */ ++#if !(0 && 1) || 1 ++# if !GNULIB_defined_mbstate_t ++typedef int rpl_mbstate_t; ++# undef mbstate_t ++# define mbstate_t rpl_mbstate_t ++# define GNULIB_defined_mbstate_t 1 ++# endif ++#endif ++ ++ ++/* Convert a single-byte character to a wide character. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef btowc ++# define btowc rpl_btowc ++# endif ++_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (btowc, wint_t, (int c)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (btowc, wint_t, (int c)); ++# endif ++_GL_CXXALIASWARN (btowc); ++#elif defined GNULIB_POSIXCHECK ++# undef btowc ++# if HAVE_RAW_DECL_BTOWC ++_GL_WARN_ON_USE (btowc, "btowc is unportable - " ++ "use gnulib module btowc for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide character to a single-byte character. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wctob ++# define wctob rpl_wctob ++# endif ++_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wctob, int, (wint_t wc)); ++# else ++# if !defined wctob && !1 ++/* wctob is provided by gnulib, or wctob exists but is not declared. */ ++_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wctob, int, (wint_t wc)); ++# endif ++_GL_CXXALIASWARN (wctob); ++#elif defined GNULIB_POSIXCHECK ++# undef wctob ++# if HAVE_RAW_DECL_WCTOB ++_GL_WARN_ON_USE (wctob, "wctob is unportable - " ++ "use gnulib module wctob for portability"); ++# endif ++#endif ++ ++ ++/* Test whether *PS is in the initial state. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsinit ++# define mbsinit rpl_mbsinit ++# endif ++_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsinit); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsinit ++# if HAVE_RAW_DECL_MBSINIT ++_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - " ++ "use gnulib module mbsinit for portability"); ++# endif ++#endif ++ ++ ++/* Convert a multibyte character to a wide character. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbrtowc ++# define mbrtowc rpl_mbrtowc ++# endif ++_GL_FUNCDECL_RPL (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbrtowc); ++#elif defined GNULIB_POSIXCHECK ++# undef mbrtowc ++# if HAVE_RAW_DECL_MBRTOWC ++_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - " ++ "use gnulib module mbrtowc for portability"); ++# endif ++#endif ++ ++ ++/* Recognize a multibyte character. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbrlen ++# define mbrlen rpl_mbrlen ++# endif ++_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbrlen); ++#elif defined GNULIB_POSIXCHECK ++# undef mbrlen ++# if HAVE_RAW_DECL_MBRLEN ++_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - " ++ "use gnulib module mbrlen for portability"); ++# endif ++#endif ++ ++ ++/* Convert a string to a wide string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsrtowcs ++# define mbsrtowcs rpl_mbsrtowcs ++# endif ++_GL_FUNCDECL_RPL (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsrtowcs); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsrtowcs ++# if HAVE_RAW_DECL_MBSRTOWCS ++_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - " ++ "use gnulib module mbsrtowcs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a string to a wide string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsnrtowcs ++# define mbsnrtowcs rpl_mbsnrtowcs ++# endif ++_GL_FUNCDECL_RPL (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsnrtowcs); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsnrtowcs ++# if HAVE_RAW_DECL_MBSNRTOWCS ++_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - " ++ "use gnulib module mbsnrtowcs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide character to a multibyte character. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcrtomb ++# define wcrtomb rpl_wcrtomb ++# endif ++_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcrtomb); ++#elif defined GNULIB_POSIXCHECK ++# undef wcrtomb ++# if HAVE_RAW_DECL_WCRTOMB ++_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - " ++ "use gnulib module wcrtomb for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide string to a string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcsrtombs ++# define wcsrtombs rpl_wcsrtombs ++# endif ++_GL_FUNCDECL_RPL (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcsrtombs); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsrtombs ++# if HAVE_RAW_DECL_WCSRTOMBS ++_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - " ++ "use gnulib module wcsrtombs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide string to a string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcsnrtombs ++# define wcsnrtombs rpl_wcsnrtombs ++# endif ++_GL_FUNCDECL_RPL (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcsnrtombs); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsnrtombs ++# if HAVE_RAW_DECL_WCSNRTOMBS ++_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - " ++ "use gnulib module wcsnrtombs for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of screen columns needed for WC. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcwidth ++# define wcwidth rpl_wcwidth ++# endif ++_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); ++# else ++# if !0 ++/* wcwidth exists but is not declared. */ ++_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); ++# elif defined __KLIBC__ ++/* On OS/2 kLIBC, wcwidth is a macro that expands to the name of a ++ static inline function. The implementation of wcwidth in wcwidth.c ++ causes a "conflicting types" error. */ ++# undef wcwidth ++# endif ++_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t)); ++# endif ++_GL_CXXALIASWARN (wcwidth); ++#elif defined GNULIB_POSIXCHECK ++# undef wcwidth ++# if HAVE_RAW_DECL_WCWIDTH ++_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - " ++ "use gnulib module wcwidth for portability"); ++# endif ++#endif ++ ++ ++/* Search N wide characters of S for C. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t); ++ wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wmemchr, ++ wchar_t *, (const wchar_t *, wchar_t, size_t), ++ const wchar_t *, (const wchar_t *, wchar_t, size_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++_GL_CXXALIASWARN1 (wmemchr, const wchar_t *, ++ (const wchar_t *s, wchar_t c, size_t n)); ++# else ++_GL_CXXALIASWARN (wmemchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wmemchr ++# if HAVE_RAW_DECL_WMEMCHR ++_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - " ++ "use gnulib module wmemchr for portability"); ++# endif ++#endif ++ ++ ++/* Compare N wide characters of S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemcmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wmemcmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wmemcmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemcmp ++# if HAVE_RAW_DECL_WMEMCMP ++_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - " ++ "use gnulib module wmemcmp for portability"); ++# endif ++#endif ++ ++ ++/* Copy N wide characters of SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemcpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemcpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wmemcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemcpy ++# if HAVE_RAW_DECL_WMEMCPY ++_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - " ++ "use gnulib module wmemcpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for ++ overlapping memory areas. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemmove, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemmove, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wmemmove); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemmove ++# if HAVE_RAW_DECL_WMEMMOVE ++_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - " ++ "use gnulib module wmemmove for portability"); ++# endif ++#endif ++ ++ ++/* Set N wide characters of S to C. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++_GL_CXXALIASWARN (wmemset); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemset ++# if HAVE_RAW_DECL_WMEMSET ++_GL_WARN_ON_USE (wmemset, "wmemset is unportable - " ++ "use gnulib module wmemset for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of wide characters in S. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s)); ++_GL_CXXALIASWARN (wcslen); ++#elif defined GNULIB_POSIXCHECK ++# undef wcslen ++# if HAVE_RAW_DECL_WCSLEN ++_GL_WARN_ON_USE (wcslen, "wcslen is unportable - " ++ "use gnulib module wcslen for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of wide characters in S, but at most MAXLEN. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)); ++_GL_CXXALIASWARN (wcsnlen); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsnlen ++# if HAVE_RAW_DECL_WCSNLEN ++_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - " ++ "use gnulib module wcsnlen for portability"); ++# endif ++#endif ++ ++ ++/* Copy SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcscpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscpy ++# if HAVE_RAW_DECL_WCSCPY ++_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - " ++ "use gnulib module wcscpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcpcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcpcpy ++# if HAVE_RAW_DECL_WCPCPY ++_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - " ++ "use gnulib module wcpcpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy no more than N wide characters of SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcsncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncpy ++# if HAVE_RAW_DECL_WCSNCPY ++_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - " ++ "use gnulib module wcsncpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy no more than N characters of SRC to DEST, returning the address of ++ the last character written into DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcpncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcpncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcpncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcpncpy ++# if HAVE_RAW_DECL_WCPNCPY ++_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - " ++ "use gnulib module wcpncpy for portability"); ++# endif ++#endif ++ ++ ++/* Append SRC onto DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcscat); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscat ++# if HAVE_RAW_DECL_WCSCAT ++_GL_WARN_ON_USE (wcscat, "wcscat is unportable - " ++ "use gnulib module wcscat for portability"); ++# endif ++#endif ++ ++ ++/* Append no more than N wide characters of SRC onto DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncat, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsncat, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcsncat); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncat ++# if HAVE_RAW_DECL_WCSNCAT ++_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - " ++ "use gnulib module wcsncat for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscmp ++# if HAVE_RAW_DECL_WCSCMP ++_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - " ++ "use gnulib module wcscmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare no more than N wide characters of S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsncmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsncmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncmp ++# if HAVE_RAW_DECL_WCSNCMP ++_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - " ++ "use gnulib module wcsncmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2, ignoring case. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscasecmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscasecmp ++# if HAVE_RAW_DECL_WCSCASECMP ++_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - " ++ "use gnulib module wcscasecmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare no more than N chars of S1 and S2, ignoring case. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncasecmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsncasecmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsncasecmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncasecmp ++# if HAVE_RAW_DECL_WCSNCASECMP ++_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - " ++ "use gnulib module wcsncasecmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE ++ category of the current locale. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); ++# endif ++_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscoll); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscoll ++# if HAVE_RAW_DECL_WCSCOLL ++_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - " ++ "use gnulib module wcscoll for portability"); ++# endif ++#endif ++ ++ ++/* Transform S2 into array pointed to by S1 such that if wcscmp is applied ++ to two transformed strings the result is the as applying 'wcscoll' to the ++ original strings. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsxfrm); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsxfrm ++# if HAVE_RAW_DECL_WCSXFRM ++_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - " ++ "use gnulib module wcsxfrm for portability"); ++# endif ++#endif ++ ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s)); ++# endif ++_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s)); ++_GL_CXXALIASWARN (wcsdup); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsdup ++# if HAVE_RAW_DECL_WCSDUP ++_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - " ++ "use gnulib module wcsdup for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence of WC in WCS. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcschr (const wchar_t *, wchar_t); ++ wchar_t * std::wcschr (wchar_t *, wchar_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcschr, ++ wchar_t *, (const wchar_t *, wchar_t), ++ const wchar_t *, (const wchar_t *, wchar_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc)); ++_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); ++# else ++_GL_CXXALIASWARN (wcschr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcschr ++# if HAVE_RAW_DECL_WCSCHR ++_GL_WARN_ON_USE (wcschr, "wcschr is unportable - " ++ "use gnulib module wcschr for portability"); ++# endif ++#endif ++ ++ ++/* Find the last occurrence of WC in WCS. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcsrchr (const wchar_t *, wchar_t); ++ wchar_t * std::wcsrchr (wchar_t *, wchar_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcsrchr, ++ wchar_t *, (const wchar_t *, wchar_t), ++ const wchar_t *, (const wchar_t *, wchar_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc)); ++_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); ++# else ++_GL_CXXALIASWARN (wcsrchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcsrchr ++# if HAVE_RAW_DECL_WCSRCHR ++_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - " ++ "use gnulib module wcsrchr for portability"); ++# endif ++#endif ++ ++ ++/* Return the length of the initial segmet of WCS which consists entirely ++ of wide characters not in REJECT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)); ++_GL_CXXALIASWARN (wcscspn); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscspn ++# if HAVE_RAW_DECL_WCSCSPN ++_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - " ++ "use gnulib module wcscspn for portability"); ++# endif ++#endif ++ ++ ++/* Return the length of the initial segmet of WCS which consists entirely ++ of wide characters in ACCEPT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)); ++_GL_CXXALIASWARN (wcsspn); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsspn ++# if HAVE_RAW_DECL_WCSSPN ++_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - " ++ "use gnulib module wcsspn for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence in WCS of any character in ACCEPT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcspbrk, wchar_t *, ++ (const wchar_t *wcs, const wchar_t *accept) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *); ++ wchar_t * std::wcspbrk (wchar_t *, const wchar_t *); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcspbrk, ++ wchar_t *, (const wchar_t *, const wchar_t *), ++ const wchar_t *, (const wchar_t *, const wchar_t *)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcspbrk, wchar_t *, ++ (wchar_t *wcs, const wchar_t *accept)); ++_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *, ++ (const wchar_t *wcs, const wchar_t *accept)); ++# else ++_GL_CXXALIASWARN (wcspbrk); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcspbrk ++# if HAVE_RAW_DECL_WCSPBRK ++_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - " ++ "use gnulib module wcspbrk for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsstr, wchar_t *, ++ (const wchar_t *haystack, const wchar_t *needle) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *); ++ wchar_t * std::wcsstr (wchar_t *, const wchar_t *); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcsstr, ++ wchar_t *, (const wchar_t *, const wchar_t *), ++ const wchar_t *, (const wchar_t *, const wchar_t *)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcsstr, wchar_t *, ++ (wchar_t *haystack, const wchar_t *needle)); ++_GL_CXXALIASWARN1 (wcsstr, const wchar_t *, ++ (const wchar_t *haystack, const wchar_t *needle)); ++# else ++_GL_CXXALIASWARN (wcsstr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcsstr ++# if HAVE_RAW_DECL_WCSSTR ++_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - " ++ "use gnulib module wcsstr for portability"); ++# endif ++#endif ++ ++ ++/* Divide WCS into tokens separated by characters in DELIM. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcstok, wchar_t *, ++ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); ++# endif ++_GL_CXXALIAS_SYS (wcstok, wchar_t *, ++ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); ++_GL_CXXALIASWARN (wcstok); ++#elif defined GNULIB_POSIXCHECK ++# undef wcstok ++# if HAVE_RAW_DECL_WCSTOK ++_GL_WARN_ON_USE (wcstok, "wcstok is unportable - " ++ "use gnulib module wcstok for portability"); ++# endif ++#endif ++ ++ ++/* Determine number of column positions required for first N wide ++ characters (or fewer if S ends before this) in S. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcswidth ++# define wcswidth rpl_wcswidth ++# endif ++_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n) ++ _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n)); ++# endif ++_GL_CXXALIASWARN (wcswidth); ++#elif defined GNULIB_POSIXCHECK ++# undef wcswidth ++# if HAVE_RAW_DECL_WCSWIDTH ++_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - " ++ "use gnulib module wcswidth for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_WCHAR_H */ ++#endif /* _GL_WCHAR_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/wctype.h gettext-0.19/gettext-runtime/gnulib-lib/msvc/wctype.h +--- gettext-0.19-unpatched/gettext-runtime/gnulib-lib/msvc/wctype.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/gnulib-lib/msvc/wctype.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,816 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for ISO C99 , for platforms that lack it. ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Bruno Haible and Paul Eggert. */ ++ ++/* ++ * ISO C 99 for platforms that lack it. ++ * ++ * ++ * iswctype, towctrans, towlower, towupper, wctrans, wctype, ++ * wctrans_t, and wctype_t are not yet implemented. ++ */ ++ ++#ifndef _GL_WCTYPE_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if 1 ++/* Solaris 2.5 has a bug: must be included before . ++ Tru64 with Desktop Toolkit C has a bug: must be included before ++ . ++ BSD/OS 4.0.1 has a bug: , and must be ++ included before . */ ++# include ++# include ++# include ++# include ++#endif ++ ++/* mingw has declarations of towupper and towlower in as ++ well . Include in advance to avoid rpl_ prefix ++ being added to the declarations. */ ++#ifdef __MINGW32__ ++# include ++#endif ++ ++/* Include the original if it exists. ++ BeOS 5 has the functions but no . */ ++/* The include_next requires a split double-inclusion guard. */ ++#if 1 ++# include MSVC_INCLUDE(wctype.h) ++#endif ++ ++#ifndef _GL_WCTYPE_H ++#define _GL_WCTYPE_H ++ ++#ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++#endif ++_GL_INLINE_HEADER_BEGIN ++#ifndef _GL_WCTYPE_INLINE ++# define _GL_WCTYPE_INLINE _GL_INLINE ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Solaris 2.6 includes which includes which ++ #defines a number of identifiers in the application namespace. Revert ++ these #defines. */ ++#ifdef __sun ++# undef multibyte ++# undef eucw1 ++# undef eucw2 ++# undef eucw3 ++# undef scrw1 ++# undef scrw2 ++# undef scrw3 ++#endif ++ ++/* Define wint_t and WEOF. (Also done in wchar.in.h.) */ ++#if !1 && !defined wint_t ++# define wint_t int ++# ifndef WEOF ++# define WEOF -1 ++# endif ++#else ++/* MSVC defines wint_t as 'unsigned short' in . ++ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be ++ "unchanged by default argument promotions". Override it. */ ++# if defined _MSC_VER ++# if !GNULIB_defined_wint_t ++# include ++typedef unsigned int rpl_wint_t; ++# undef wint_t ++# define wint_t rpl_wint_t ++# define GNULIB_defined_wint_t 1 ++# endif ++# endif ++# ifndef WEOF ++# define WEOF ((wint_t) -1) ++# endif ++#endif ++ ++ ++#if !GNULIB_defined_wctype_functions ++ ++/* FreeBSD 4.4 to 4.11 has but lacks the functions. ++ Linux libc5 has and the functions but they are broken. ++ Assume all 11 functions (all isw* except iswblank) are implemented the ++ same way, or not at all. */ ++# if ! 1 || 0 ++ ++/* IRIX 5.3 has macros but no functions, its isw* macros refer to an ++ undefined variable _ctmp_ and to macros like _P, and they ++ refer to system functions like _iswctype that are not in the ++ standard C library. Rather than try to get ancient buggy ++ implementations like this to work, just disable them. */ ++# undef iswalnum ++# undef iswalpha ++# undef iswblank ++# undef iswcntrl ++# undef iswdigit ++# undef iswgraph ++# undef iswlower ++# undef iswprint ++# undef iswpunct ++# undef iswspace ++# undef iswupper ++# undef iswxdigit ++# undef towlower ++# undef towupper ++ ++/* Linux libc5 has and the functions but they are broken. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iswalnum rpl_iswalnum ++# define iswalpha rpl_iswalpha ++# define iswblank rpl_iswblank ++# define iswcntrl rpl_iswcntrl ++# define iswdigit rpl_iswdigit ++# define iswgraph rpl_iswgraph ++# define iswlower rpl_iswlower ++# define iswprint rpl_iswprint ++# define iswpunct rpl_iswpunct ++# define iswspace rpl_iswspace ++# define iswupper rpl_iswupper ++# define iswxdigit rpl_iswxdigit ++# endif ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towlower rpl_towlower ++# define towupper rpl_towupper ++# endif ++# endif ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswalnum ++# else ++iswalnum ++# endif ++ (wint_t wc) ++{ ++ return ((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswalpha ++# else ++iswalpha ++# endif ++ (wint_t wc) ++{ ++ return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswblank ++# else ++iswblank ++# endif ++ (wint_t wc) ++{ ++ return wc == ' ' || wc == '\t'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswcntrl ++# else ++iswcntrl ++# endif ++ (wint_t wc) ++{ ++ return (wc & ~0x1f) == 0 || wc == 0x7f; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswdigit ++# else ++iswdigit ++# endif ++ (wint_t wc) ++{ ++ return wc >= '0' && wc <= '9'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswgraph ++# else ++iswgraph ++# endif ++ (wint_t wc) ++{ ++ return wc >= '!' && wc <= '~'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswlower ++# else ++iswlower ++# endif ++ (wint_t wc) ++{ ++ return wc >= 'a' && wc <= 'z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswprint ++# else ++iswprint ++# endif ++ (wint_t wc) ++{ ++ return wc >= ' ' && wc <= '~'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswpunct ++# else ++iswpunct ++# endif ++ (wint_t wc) ++{ ++ return (wc >= '!' && wc <= '~' ++ && !((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'))); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswspace ++# else ++iswspace ++# endif ++ (wint_t wc) ++{ ++ return (wc == ' ' || wc == '\t' ++ || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r'); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswupper ++# else ++iswupper ++# endif ++ (wint_t wc) ++{ ++ return wc >= 'A' && wc <= 'Z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswxdigit ++# else ++iswxdigit ++# endif ++ (wint_t wc) ++{ ++ return ((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F')); ++} ++ ++_GL_WCTYPE_INLINE wint_t ++# if 0 ++rpl_towlower ++# else ++towlower ++# endif ++ (wint_t wc) ++{ ++ return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc); ++} ++ ++_GL_WCTYPE_INLINE wint_t ++# if 0 ++rpl_towupper ++# else ++towupper ++# endif ++ (wint_t wc) ++{ ++ return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc); ++} ++ ++# elif (_MSC_VER < 1800) ++/* Only the iswblank function is missing. */ ++ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iswblank rpl_iswblank ++# endif ++_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc)); ++# else ++_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc)); ++# endif ++ ++# endif ++ ++# if defined __MINGW32__ ++ ++/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t. ++ The functions towlower and towupper are implemented in the MSVCRT library ++ to take a wchar_t argument and return a wchar_t result. mingw declares ++ these functions to take a wint_t argument and return a wint_t result. ++ This means that: ++ 1. When the user passes an argument outside the range 0x0000..0xFFFF, the ++ function will look only at the lower 16 bits. This is allowed according ++ to POSIX. ++ 2. The return value is returned in the lower 16 bits of the result register. ++ The upper 16 bits are random: whatever happened to be in that part of the ++ result register. We need to fix this by adding a zero-extend from ++ wchar_t to wint_t after the call. */ ++ ++_GL_WCTYPE_INLINE wint_t ++rpl_towlower (wint_t wc) ++{ ++ return (wint_t) (wchar_t) towlower (wc); ++} ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towlower rpl_towlower ++# endif ++ ++_GL_WCTYPE_INLINE wint_t ++rpl_towupper (wint_t wc) ++{ ++ return (wint_t) (wchar_t) towupper (wc); ++} ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towupper rpl_towupper ++# endif ++ ++# endif /* __MINGW32__ */ ++ ++# define GNULIB_defined_wctype_functions 1 ++#endif ++ ++#if 0 ++_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswlower, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswprint, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswspace, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswupper, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc)); ++#else ++_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswlower, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswprint, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswspace, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc)); ++#endif ++_GL_CXXALIASWARN (iswalnum); ++_GL_CXXALIASWARN (iswalpha); ++_GL_CXXALIASWARN (iswcntrl); ++_GL_CXXALIASWARN (iswdigit); ++_GL_CXXALIASWARN (iswgraph); ++_GL_CXXALIASWARN (iswlower); ++_GL_CXXALIASWARN (iswprint); ++_GL_CXXALIASWARN (iswpunct); ++_GL_CXXALIASWARN (iswspace); ++_GL_CXXALIASWARN (iswupper); ++_GL_CXXALIASWARN (iswxdigit); ++ ++#if 1 ++# if 0 || 0 ++_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc)); ++# else ++_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc)); ++# endif ++_GL_CXXALIASWARN (iswblank); ++#endif ++ ++#if !1 ++# if !GNULIB_defined_wctype_t ++typedef void * wctype_t; ++# define GNULIB_defined_wctype_t 1 ++# endif ++#endif ++ ++/* Get a descriptor for a wide character property. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name)); ++# endif ++_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name)); ++_GL_CXXALIASWARN (wctype); ++#elif defined GNULIB_POSIXCHECK ++# undef wctype ++# if HAVE_RAW_DECL_WCTYPE ++_GL_WARN_ON_USE (wctype, "wctype is unportable - " ++ "use gnulib module wctype for portability"); ++# endif ++#endif ++ ++/* Test whether a wide character has a given property. ++ The argument WC must be either a wchar_t value or WEOF. ++ The argument DESC must have been returned by the wctype() function. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc)); ++# endif ++_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc)); ++_GL_CXXALIASWARN (iswctype); ++#elif defined GNULIB_POSIXCHECK ++# undef iswctype ++# if HAVE_RAW_DECL_ISWCTYPE ++_GL_WARN_ON_USE (iswctype, "iswctype is unportable - " ++ "use gnulib module iswctype for portability"); ++# endif ++#endif ++ ++#if 0 || defined __MINGW32__ ++_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc)); ++_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc)); ++#else ++_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc)); ++_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc)); ++#endif ++_GL_CXXALIASWARN (towlower); ++_GL_CXXALIASWARN (towupper); ++ ++#if !1 ++# if !GNULIB_defined_wctrans_t ++typedef void * wctrans_t; ++# define GNULIB_defined_wctrans_t 1 ++# endif ++#endif ++ ++/* Get a descriptor for a wide character case conversion. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name)); ++# endif ++_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name)); ++_GL_CXXALIASWARN (wctrans); ++#elif defined GNULIB_POSIXCHECK ++# undef wctrans ++# if HAVE_RAW_DECL_WCTRANS ++_GL_WARN_ON_USE (wctrans, "wctrans is unportable - " ++ "use gnulib module wctrans for portability"); ++# endif ++#endif ++ ++/* Perform a given case conversion on a wide character. ++ The argument WC must be either a wchar_t value or WEOF. ++ The argument DESC must have been returned by the wctrans() function. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); ++# endif ++_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); ++_GL_CXXALIASWARN (towctrans); ++#elif defined GNULIB_POSIXCHECK ++# undef towctrans ++# if HAVE_RAW_DECL_TOWCTRANS ++_GL_WARN_ON_USE (towctrans, "towctrans is unportable - " ++ "use gnulib module towctrans for portability"); ++# endif ++#endif ++ ++_GL_INLINE_HEADER_END ++ ++#endif /* _GL_WCTYPE_H */ ++#endif /* _GL_WCTYPE_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/intl/msvc/libgnuintl.h gettext-0.19/gettext-runtime/intl/msvc/libgnuintl.h +--- gettext-0.19-unpatched/gettext-runtime/intl/msvc/libgnuintl.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/intl/msvc/libgnuintl.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,472 @@ ++/* Message catalogs for internationalization. ++ Copyright (C) 1995-1997, 2000-2016 Free Software Foundation, Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with this program. If not, see . */ ++ ++#ifndef _LIBINTL_H ++#define _LIBINTL_H 1 ++ ++#if 0 && BUILDING_LIBINTL ++#define LIBINTL_DLL_EXPORTED __attribute__((__visibility__("default"))) ++#elif _MSC_VER && BUILDING_LIBINTL ++#define LIBINTL_DLL_EXPORTED __declspec(dllexport) ++#else ++#define LIBINTL_DLL_EXPORTED __declspec(dllimport) ++#endif ++ ++#include ++#if (defined __APPLE__ && defined __MACH__) && 0 ++# include ++#endif ++ ++/* The LC_MESSAGES locale category is the category used by the functions ++ gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. ++ On systems that don't define it, use an arbitrary value instead. ++ On Solaris, defines __LOCALE_H (or _LOCALE_H in Solaris 2.5) ++ then includes (i.e. this file!) and then only defines ++ LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES ++ in this case. */ ++#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun)) ++# define LC_MESSAGES 1729 ++#endif ++ ++/* We define an additional symbol to signal that we use the GNU ++ implementation of gettext. */ ++#define __USE_GNU_GETTEXT 1 ++ ++/* Provide information about the supported file formats. Returns the ++ maximum minor revision number supported for a given major revision. */ ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ ++ ((major) == 0 || (major) == 1 ? 1 : -1) ++ ++/* Resolve a platform specific conflict on DJGPP. GNU gettext takes ++ precedence over _conio_gettext. */ ++#ifdef __DJGPP__ ++# undef gettext ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Version number: (major<<16) + (minor<<8) + subminor */ ++#define LIBINTL_VERSION 0x001308 ++extern LIBINTL_DLL_EXPORTED int libintl_version; ++ ++ ++/* We redirect the functions to those prefixed with "libintl_". This is ++ necessary, because some systems define gettext/textdomain/... in the C ++ library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). ++ If we used the unprefixed names, there would be cases where the ++ definition in the C library would override the one in the libintl.so ++ shared library. Recall that on ELF systems, the symbols are looked ++ up in the following order: ++ 1. in the executable, ++ 2. in the shared libraries specified on the link command line, in order, ++ 3. in the dependencies of the shared libraries specified on the link ++ command line, ++ 4. in the dlopen()ed shared libraries, in the order in which they were ++ dlopen()ed. ++ The definition in the C library would override the one in libintl.so if ++ either ++ * -lc is given on the link command line and -lintl isn't, or ++ * -lc is given on the link command line before -lintl, or ++ * libintl.so is a dependency of a dlopen()ed shared library but not ++ linked to the executable at link time. ++ Since Solaris gettext() behaves differently than GNU gettext(), this ++ would be unacceptable. ++ ++ The redirection happens by default through macros in C, so that &gettext ++ is independent of the compilation unit, but through inline functions in ++ C++, in order not to interfere with the name mangling of class fields or ++ class methods called 'gettext'. */ ++ ++/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. ++ If he doesn't, we choose the method. A third possible method is ++ _INTL_REDIRECT_ASM, supported only by GCC. */ ++#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) ++# if defined __GNUC__ && __GNUC__ >= 2 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus) ++# define _INTL_REDIRECT_ASM ++# else ++# ifdef __cplusplus ++# define _INTL_REDIRECT_INLINE ++# else ++# define _INTL_REDIRECT_MACROS ++# endif ++# endif ++#endif ++/* Auxiliary macros. */ ++#ifdef _INTL_REDIRECT_ASM ++# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) ++# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring ++# define _INTL_STRINGIFY(prefix) #prefix ++#else ++# define _INTL_ASM(cname) ++#endif ++ ++/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return ++ its n-th argument literally. This enables GCC to warn for example about ++ printf (gettext ("foo %y")). */ ++#if defined __GNUC__ && __GNUC__ >= 3 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1 && defined __cplusplus) ++# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n))) ++#else ++# define _INTL_MAY_RETURN_STRING_ARG(n) ++#endif ++ ++/* Look up MSGID in the current default message catalog for the current ++ LC_MESSAGES locale. If not found, returns MSGID itself (the default ++ text). */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_gettext (const char *__msgid) ++ _INTL_MAY_RETURN_STRING_ARG (1); ++static inline char *gettext (const char *__msgid) ++{ ++ return libintl_gettext (__msgid); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define gettext libintl_gettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *gettext (const char *__msgid) ++ _INTL_ASM (libintl_gettext) ++ _INTL_MAY_RETURN_STRING_ARG (1); ++#endif ++ ++/* Look up MSGID in the DOMAINNAME message catalog for the current ++ LC_MESSAGES locale. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dgettext (const char *__domainname, const char *__msgid) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++static inline char *dgettext (const char *__domainname, const char *__msgid) ++{ ++ return libintl_dgettext (__domainname, __msgid); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dgettext libintl_dgettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dgettext (const char *__domainname, const char *__msgid) ++ _INTL_ASM (libintl_dgettext) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++#endif ++ ++/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY ++ locale. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dcgettext (const char *__domainname, const char *__msgid, ++ int __category) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++static inline char *dcgettext (const char *__domainname, const char *__msgid, ++ int __category) ++{ ++ return libintl_dcgettext (__domainname, __msgid, __category); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dcgettext libintl_dcgettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dcgettext (const char *__domainname, const char *__msgid, ++ int __category) ++ _INTL_ASM (libintl_dcgettext) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++#endif ++ ++ ++/* Similar to 'gettext' but select the plural form corresponding to the ++ number N. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_ngettext (const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++ _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); ++static inline char *ngettext (const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++{ ++ return libintl_ngettext (__msgid1, __msgid2, __n); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define ngettext libintl_ngettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *ngettext (const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++ _INTL_ASM (libintl_ngettext) ++ _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); ++#endif ++ ++/* Similar to 'dgettext' but select the plural form corresponding to the ++ number N. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dngettext (const char *__domainname, const char *__msgid1, ++ const char *__msgid2, unsigned long int __n) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++static inline char *dngettext (const char *__domainname, const char *__msgid1, ++ const char *__msgid2, unsigned long int __n) ++{ ++ return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dngettext libintl_dngettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++ _INTL_ASM (libintl_dngettext) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++#endif ++ ++/* Similar to 'dcgettext' but select the plural form corresponding to the ++ number N. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dcngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n, int __category) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++static inline char *dcngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n, int __category) ++{ ++ return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dcngettext libintl_dcngettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dcngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n, int __category) ++ _INTL_ASM (libintl_dcngettext) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++#endif ++ ++ ++ ++/* Set the current default message catalog to DOMAINNAME. ++ If DOMAINNAME is null, return the current default. ++ If DOMAINNAME is "", reset to the default of "messages". */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_textdomain (const char *__domainname); ++static inline char *textdomain (const char *__domainname) ++{ ++ return libintl_textdomain (__domainname); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define textdomain libintl_textdomain ++#endif ++extern LIBINTL_DLL_EXPORTED char *textdomain (const char *__domainname) ++ _INTL_ASM (libintl_textdomain); ++#endif ++ ++/* Specify that the DOMAINNAME message catalog will be found ++ in DIRNAME rather than in the system locale data base. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_bindtextdomain (const char *__domainname, ++ const char *__dirname); ++static inline char *bindtextdomain (const char *__domainname, ++ const char *__dirname) ++{ ++ return libintl_bindtextdomain (__domainname, __dirname); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define bindtextdomain libintl_bindtextdomain ++#endif ++extern LIBINTL_DLL_EXPORTED char *bindtextdomain (const char *__domainname, const char *__dirname) ++ _INTL_ASM (libintl_bindtextdomain); ++#endif ++ ++/* Specify the character encoding in which the messages from the ++ DOMAINNAME message catalog will be returned. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_bind_textdomain_codeset (const char *__domainname, ++ const char *__codeset); ++static inline char *bind_textdomain_codeset (const char *__domainname, ++ const char *__codeset) ++{ ++ return libintl_bind_textdomain_codeset (__domainname, __codeset); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define bind_textdomain_codeset libintl_bind_textdomain_codeset ++#endif ++extern LIBINTL_DLL_EXPORTED char *bind_textdomain_codeset (const char *__domainname, ++ const char *__codeset) ++ _INTL_ASM (libintl_bind_textdomain_codeset); ++#endif ++ ++ ++ ++/* Support for format strings with positions in *printf(), following the ++ POSIX/XSI specification. ++ Note: These replacements for the *printf() functions are visible only ++ in source files that #include or #include "gettext.h". ++ Packages that use *printf() in source files that don't refer to _() ++ or gettext() but for which the format string could be the return value ++ of _() or gettext() need to add this #include. Oh well. */ ++ ++#if !0 ++ ++#include ++#include ++ ++/* Get va_list. */ ++#if (defined __STDC__ && __STDC__) || defined __cplusplus || defined _MSC_VER ++# include ++#else ++# include ++#endif ++ ++#if !(defined fprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef fprintf ++#define fprintf libintl_fprintf ++extern LIBINTL_DLL_EXPORTED int fprintf (FILE *, const char *, ...); ++#endif ++#if !(defined vfprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vfprintf ++#define vfprintf libintl_vfprintf ++extern LIBINTL_DLL_EXPORTED int vfprintf (FILE *, const char *, va_list); ++#endif ++ ++#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef printf ++#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ ++/* Don't break __attribute__((format(printf,M,N))). ++ This redefinition is only possible because the libc in NetBSD, Cygwin, ++ mingw does not have a function __printf__. ++ Alternatively, we could have done this redirection only when compiling with ++ __GNUC__, together with a symbol redirection: ++ extern LIBINTL_DLL_EXPORTED int printf (const char *, ...) ++ __asm__ (#__USER_LABEL_PREFIX__ "libintl_printf"); ++ But doing it now would introduce a binary incompatibility with already ++ distributed versions of libintl on these systems. */ ++# define libintl_printf __printf__ ++#endif ++#define printf libintl_printf ++extern LIBINTL_DLL_EXPORTED int printf (const char *, ...); ++#endif ++#if !(defined vprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vprintf ++#define vprintf libintl_vprintf ++extern LIBINTL_DLL_EXPORTED int vprintf (const char *, va_list); ++#endif ++ ++#if !(defined sprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef sprintf ++#define sprintf libintl_sprintf ++extern LIBINTL_DLL_EXPORTED int sprintf (char *, const char *, ...); ++#endif ++#if !(defined vsprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vsprintf ++#define vsprintf libintl_vsprintf ++extern LIBINTL_DLL_EXPORTED int vsprintf (char *, const char *, va_list); ++#endif ++ ++#if 0 ++ ++#if !(defined snprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef snprintf ++#define snprintf libintl_snprintf ++extern LIBINTL_DLL_EXPORTED int snprintf (char *, size_t, const char *, ...); ++#endif ++#if !(defined vsnprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vsnprintf ++#define vsnprintf libintl_vsnprintf ++extern LIBINTL_DLL_EXPORTED int vsnprintf (char *, size_t, const char *, va_list); ++#endif ++ ++#endif ++ ++#if 0 ++ ++#if !(defined asprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef asprintf ++#define asprintf libintl_asprintf ++extern LIBINTL_DLL_EXPORTED int asprintf (char **, const char *, ...); ++#endif ++#if !(defined vasprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vasprintf ++#define vasprintf libintl_vasprintf ++extern LIBINTL_DLL_EXPORTED int vasprintf (char **, const char *, va_list); ++#endif ++ ++#endif ++ ++#if 0 ++ ++#undef fwprintf ++#define fwprintf libintl_fwprintf ++extern LIBINTL_DLL_EXPORTED int fwprintf (FILE *, const wchar_t *, ...); ++#undef vfwprintf ++#define vfwprintf libintl_vfwprintf ++extern LIBINTL_DLL_EXPORTED int vfwprintf (FILE *, const wchar_t *, va_list); ++ ++#undef wprintf ++#define wprintf libintl_wprintf ++extern LIBINTL_DLL_EXPORTED int wprintf (const wchar_t *, ...); ++#undef vwprintf ++#define vwprintf libintl_vwprintf ++extern LIBINTL_DLL_EXPORTED int vwprintf (const wchar_t *, va_list); ++ ++#undef swprintf ++#define swprintf libintl_swprintf ++extern LIBINTL_DLL_EXPORTED int swprintf (wchar_t *, size_t, const wchar_t *, ...); ++#undef vswprintf ++#define vswprintf libintl_vswprintf ++extern LIBINTL_DLL_EXPORTED int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); ++ ++#endif ++ ++#endif ++ ++ ++/* Support for the locale chosen by the user. */ ++#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ ++ ++#ifndef GNULIB_defined_setlocale /* don't override gnulib */ ++#undef setlocale ++#define setlocale libintl_setlocale ++extern LIBINTL_DLL_EXPORTED char *setlocale (int, const char *); ++#endif ++ ++#if 0 ++ ++#undef newlocale ++#define newlocale libintl_newlocale ++extern LIBINTL_DLL_EXPORTED locale_t newlocale (int, const char *, locale_t); ++ ++#endif ++ ++#endif ++ ++ ++/* Support for relocatable packages. */ ++ ++/* Sets the original and the current installation prefix of the package. ++ Relocation simply replaces a pathname starting with the original prefix ++ by the corresponding pathname with the current prefix instead. Both ++ prefixes should be directory names without trailing slash (i.e. use "" ++ instead of "/"). */ ++#define libintl_set_relocation_prefix libintl_set_relocation_prefix ++extern LIBINTL_DLL_EXPORTED void ++ libintl_set_relocation_prefix (const char *orig_prefix, ++ const char *curr_prefix); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* libintl.h */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/intl/msvc/libintl.h gettext-0.19/gettext-runtime/intl/msvc/libintl.h +--- gettext-0.19-unpatched/gettext-runtime/intl/msvc/libintl.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/intl/msvc/libintl.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,472 @@ ++/* Message catalogs for internationalization. ++ Copyright (C) 1995-1997, 2000-2016 Free Software Foundation, Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with this program. If not, see . */ ++ ++#ifndef _LIBINTL_H ++#define _LIBINTL_H 1 ++ ++#if 0 && BUILDING_LIBINTL ++#define LIBINTL_DLL_EXPORTED __attribute__((__visibility__("default"))) ++#elif _MSC_VER && BUILDING_LIBINTL ++#define LIBINTL_DLL_EXPORTED __declspec(dllexport) ++#else ++#define LIBINTL_DLL_EXPORTED __declspec(dllimport) ++#endif ++ ++#include ++#if (defined __APPLE__ && defined __MACH__) && 0 ++# include ++#endif ++ ++/* The LC_MESSAGES locale category is the category used by the functions ++ gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. ++ On systems that don't define it, use an arbitrary value instead. ++ On Solaris, defines __LOCALE_H (or _LOCALE_H in Solaris 2.5) ++ then includes (i.e. this file!) and then only defines ++ LC_MESSAGES. To avoid a redefinition warning, don't define LC_MESSAGES ++ in this case. */ ++#if !defined LC_MESSAGES && !(defined __LOCALE_H || (defined _LOCALE_H && defined __sun)) ++# define LC_MESSAGES 1729 ++#endif ++ ++/* We define an additional symbol to signal that we use the GNU ++ implementation of gettext. */ ++#define __USE_GNU_GETTEXT 1 ++ ++/* Provide information about the supported file formats. Returns the ++ maximum minor revision number supported for a given major revision. */ ++#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ ++ ((major) == 0 || (major) == 1 ? 1 : -1) ++ ++/* Resolve a platform specific conflict on DJGPP. GNU gettext takes ++ precedence over _conio_gettext. */ ++#ifdef __DJGPP__ ++# undef gettext ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Version number: (major<<16) + (minor<<8) + subminor */ ++#define LIBINTL_VERSION 0x001308 ++extern LIBINTL_DLL_EXPORTED int libintl_version; ++ ++ ++/* We redirect the functions to those prefixed with "libintl_". This is ++ necessary, because some systems define gettext/textdomain/... in the C ++ library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). ++ If we used the unprefixed names, there would be cases where the ++ definition in the C library would override the one in the libintl.so ++ shared library. Recall that on ELF systems, the symbols are looked ++ up in the following order: ++ 1. in the executable, ++ 2. in the shared libraries specified on the link command line, in order, ++ 3. in the dependencies of the shared libraries specified on the link ++ command line, ++ 4. in the dlopen()ed shared libraries, in the order in which they were ++ dlopen()ed. ++ The definition in the C library would override the one in libintl.so if ++ either ++ * -lc is given on the link command line and -lintl isn't, or ++ * -lc is given on the link command line before -lintl, or ++ * libintl.so is a dependency of a dlopen()ed shared library but not ++ linked to the executable at link time. ++ Since Solaris gettext() behaves differently than GNU gettext(), this ++ would be unacceptable. ++ ++ The redirection happens by default through macros in C, so that &gettext ++ is independent of the compilation unit, but through inline functions in ++ C++, in order not to interfere with the name mangling of class fields or ++ class methods called 'gettext'. */ ++ ++/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. ++ If he doesn't, we choose the method. A third possible method is ++ _INTL_REDIRECT_ASM, supported only by GCC. */ ++#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) ++# if defined __GNUC__ && __GNUC__ >= 2 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1) && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus) ++# define _INTL_REDIRECT_ASM ++# else ++# ifdef __cplusplus ++# define _INTL_REDIRECT_INLINE ++# else ++# define _INTL_REDIRECT_MACROS ++# endif ++# endif ++#endif ++/* Auxiliary macros. */ ++#ifdef _INTL_REDIRECT_ASM ++# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) ++# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring ++# define _INTL_STRINGIFY(prefix) #prefix ++#else ++# define _INTL_ASM(cname) ++#endif ++ ++/* _INTL_MAY_RETURN_STRING_ARG(n) declares that the given function may return ++ its n-th argument literally. This enables GCC to warn for example about ++ printf (gettext ("foo %y")). */ ++#if defined __GNUC__ && __GNUC__ >= 3 && !(defined __APPLE_CC__ && __APPLE_CC__ > 1 && defined __cplusplus) ++# define _INTL_MAY_RETURN_STRING_ARG(n) __attribute__ ((__format_arg__ (n))) ++#else ++# define _INTL_MAY_RETURN_STRING_ARG(n) ++#endif ++ ++/* Look up MSGID in the current default message catalog for the current ++ LC_MESSAGES locale. If not found, returns MSGID itself (the default ++ text). */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_gettext (const char *__msgid) ++ _INTL_MAY_RETURN_STRING_ARG (1); ++static inline char *gettext (const char *__msgid) ++{ ++ return libintl_gettext (__msgid); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define gettext libintl_gettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *gettext (const char *__msgid) ++ _INTL_ASM (libintl_gettext) ++ _INTL_MAY_RETURN_STRING_ARG (1); ++#endif ++ ++/* Look up MSGID in the DOMAINNAME message catalog for the current ++ LC_MESSAGES locale. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dgettext (const char *__domainname, const char *__msgid) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++static inline char *dgettext (const char *__domainname, const char *__msgid) ++{ ++ return libintl_dgettext (__domainname, __msgid); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dgettext libintl_dgettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dgettext (const char *__domainname, const char *__msgid) ++ _INTL_ASM (libintl_dgettext) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++#endif ++ ++/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY ++ locale. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dcgettext (const char *__domainname, const char *__msgid, ++ int __category) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++static inline char *dcgettext (const char *__domainname, const char *__msgid, ++ int __category) ++{ ++ return libintl_dcgettext (__domainname, __msgid, __category); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dcgettext libintl_dcgettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dcgettext (const char *__domainname, const char *__msgid, ++ int __category) ++ _INTL_ASM (libintl_dcgettext) ++ _INTL_MAY_RETURN_STRING_ARG (2); ++#endif ++ ++ ++/* Similar to 'gettext' but select the plural form corresponding to the ++ number N. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_ngettext (const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++ _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); ++static inline char *ngettext (const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++{ ++ return libintl_ngettext (__msgid1, __msgid2, __n); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define ngettext libintl_ngettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *ngettext (const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++ _INTL_ASM (libintl_ngettext) ++ _INTL_MAY_RETURN_STRING_ARG (1) _INTL_MAY_RETURN_STRING_ARG (2); ++#endif ++ ++/* Similar to 'dgettext' but select the plural form corresponding to the ++ number N. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dngettext (const char *__domainname, const char *__msgid1, ++ const char *__msgid2, unsigned long int __n) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++static inline char *dngettext (const char *__domainname, const char *__msgid1, ++ const char *__msgid2, unsigned long int __n) ++{ ++ return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dngettext libintl_dngettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n) ++ _INTL_ASM (libintl_dngettext) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++#endif ++ ++/* Similar to 'dcgettext' but select the plural form corresponding to the ++ number N. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_dcngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n, int __category) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++static inline char *dcngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n, int __category) ++{ ++ return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define dcngettext libintl_dcngettext ++#endif ++extern LIBINTL_DLL_EXPORTED char *dcngettext (const char *__domainname, ++ const char *__msgid1, const char *__msgid2, ++ unsigned long int __n, int __category) ++ _INTL_ASM (libintl_dcngettext) ++ _INTL_MAY_RETURN_STRING_ARG (2) _INTL_MAY_RETURN_STRING_ARG (3); ++#endif ++ ++ ++ ++/* Set the current default message catalog to DOMAINNAME. ++ If DOMAINNAME is null, return the current default. ++ If DOMAINNAME is "", reset to the default of "messages". */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_textdomain (const char *__domainname); ++static inline char *textdomain (const char *__domainname) ++{ ++ return libintl_textdomain (__domainname); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define textdomain libintl_textdomain ++#endif ++extern LIBINTL_DLL_EXPORTED char *textdomain (const char *__domainname) ++ _INTL_ASM (libintl_textdomain); ++#endif ++ ++/* Specify that the DOMAINNAME message catalog will be found ++ in DIRNAME rather than in the system locale data base. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_bindtextdomain (const char *__domainname, ++ const char *__dirname); ++static inline char *bindtextdomain (const char *__domainname, ++ const char *__dirname) ++{ ++ return libintl_bindtextdomain (__domainname, __dirname); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define bindtextdomain libintl_bindtextdomain ++#endif ++extern LIBINTL_DLL_EXPORTED char *bindtextdomain (const char *__domainname, const char *__dirname) ++ _INTL_ASM (libintl_bindtextdomain); ++#endif ++ ++/* Specify the character encoding in which the messages from the ++ DOMAINNAME message catalog will be returned. */ ++#ifdef _INTL_REDIRECT_INLINE ++extern LIBINTL_DLL_EXPORTED char *libintl_bind_textdomain_codeset (const char *__domainname, ++ const char *__codeset); ++static inline char *bind_textdomain_codeset (const char *__domainname, ++ const char *__codeset) ++{ ++ return libintl_bind_textdomain_codeset (__domainname, __codeset); ++} ++#else ++#ifdef _INTL_REDIRECT_MACROS ++# define bind_textdomain_codeset libintl_bind_textdomain_codeset ++#endif ++extern LIBINTL_DLL_EXPORTED char *bind_textdomain_codeset (const char *__domainname, ++ const char *__codeset) ++ _INTL_ASM (libintl_bind_textdomain_codeset); ++#endif ++ ++ ++ ++/* Support for format strings with positions in *printf(), following the ++ POSIX/XSI specification. ++ Note: These replacements for the *printf() functions are visible only ++ in source files that #include or #include "gettext.h". ++ Packages that use *printf() in source files that don't refer to _() ++ or gettext() but for which the format string could be the return value ++ of _() or gettext() need to add this #include. Oh well. */ ++ ++#if !0 ++ ++#include ++#include ++ ++/* Get va_list. */ ++#if (defined __STDC__ && __STDC__) || defined __cplusplus || defined _MSC_VER ++# include ++#else ++# include ++#endif ++ ++#if !(defined fprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef fprintf ++#define fprintf libintl_fprintf ++extern LIBINTL_DLL_EXPORTED int fprintf (FILE *, const char *, ...); ++#endif ++#if !(defined vfprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vfprintf ++#define vfprintf libintl_vfprintf ++extern LIBINTL_DLL_EXPORTED int vfprintf (FILE *, const char *, va_list); ++#endif ++ ++#if !(defined printf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef printf ++#if defined __NetBSD__ || defined __BEOS__ || defined __CYGWIN__ || defined __MINGW32__ ++/* Don't break __attribute__((format(printf,M,N))). ++ This redefinition is only possible because the libc in NetBSD, Cygwin, ++ mingw does not have a function __printf__. ++ Alternatively, we could have done this redirection only when compiling with ++ __GNUC__, together with a symbol redirection: ++ extern LIBINTL_DLL_EXPORTED int printf (const char *, ...) ++ __asm__ (#__USER_LABEL_PREFIX__ "libintl_printf"); ++ But doing it now would introduce a binary incompatibility with already ++ distributed versions of libintl on these systems. */ ++# define libintl_printf __printf__ ++#endif ++#define printf libintl_printf ++extern LIBINTL_DLL_EXPORTED int printf (const char *, ...); ++#endif ++#if !(defined vprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vprintf ++#define vprintf libintl_vprintf ++extern LIBINTL_DLL_EXPORTED int vprintf (const char *, va_list); ++#endif ++ ++#if !(defined sprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef sprintf ++#define sprintf libintl_sprintf ++extern LIBINTL_DLL_EXPORTED int sprintf (char *, const char *, ...); ++#endif ++#if !(defined vsprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vsprintf ++#define vsprintf libintl_vsprintf ++extern LIBINTL_DLL_EXPORTED int vsprintf (char *, const char *, va_list); ++#endif ++ ++#if 0 ++ ++#if !(defined snprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef snprintf ++#define snprintf libintl_snprintf ++extern LIBINTL_DLL_EXPORTED int snprintf (char *, size_t, const char *, ...); ++#endif ++#if !(defined vsnprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vsnprintf ++#define vsnprintf libintl_vsnprintf ++extern LIBINTL_DLL_EXPORTED int vsnprintf (char *, size_t, const char *, va_list); ++#endif ++ ++#endif ++ ++#if 0 ++ ++#if !(defined asprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef asprintf ++#define asprintf libintl_asprintf ++extern LIBINTL_DLL_EXPORTED int asprintf (char **, const char *, ...); ++#endif ++#if !(defined vasprintf && defined _GL_STDIO_H) /* don't override gnulib */ ++#undef vasprintf ++#define vasprintf libintl_vasprintf ++extern LIBINTL_DLL_EXPORTED int vasprintf (char **, const char *, va_list); ++#endif ++ ++#endif ++ ++#if 0 ++ ++#undef fwprintf ++#define fwprintf libintl_fwprintf ++extern LIBINTL_DLL_EXPORTED int fwprintf (FILE *, const wchar_t *, ...); ++#undef vfwprintf ++#define vfwprintf libintl_vfwprintf ++extern LIBINTL_DLL_EXPORTED int vfwprintf (FILE *, const wchar_t *, va_list); ++ ++#undef wprintf ++#define wprintf libintl_wprintf ++extern LIBINTL_DLL_EXPORTED int wprintf (const wchar_t *, ...); ++#undef vwprintf ++#define vwprintf libintl_vwprintf ++extern LIBINTL_DLL_EXPORTED int vwprintf (const wchar_t *, va_list); ++ ++#undef swprintf ++#define swprintf libintl_swprintf ++extern LIBINTL_DLL_EXPORTED int swprintf (wchar_t *, size_t, const wchar_t *, ...); ++#undef vswprintf ++#define vswprintf libintl_vswprintf ++extern LIBINTL_DLL_EXPORTED int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); ++ ++#endif ++ ++#endif ++ ++ ++/* Support for the locale chosen by the user. */ ++#if (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ ++ ++#ifndef GNULIB_defined_setlocale /* don't override gnulib */ ++#undef setlocale ++#define setlocale libintl_setlocale ++extern LIBINTL_DLL_EXPORTED char *setlocale (int, const char *); ++#endif ++ ++#if 0 ++ ++#undef newlocale ++#define newlocale libintl_newlocale ++extern LIBINTL_DLL_EXPORTED locale_t newlocale (int, const char *, locale_t); ++ ++#endif ++ ++#endif ++ ++ ++/* Support for relocatable packages. */ ++ ++/* Sets the original and the current installation prefix of the package. ++ Relocation simply replaces a pathname starting with the original prefix ++ by the corresponding pathname with the current prefix instead. Both ++ prefixes should be directory names without trailing slash (i.e. use "" ++ instead of "/"). */ ++#define libintl_set_relocation_prefix libintl_set_relocation_prefix ++extern LIBINTL_DLL_EXPORTED void ++ libintl_set_relocation_prefix (const char *orig_prefix, ++ const char *curr_prefix); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* libintl.h */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/alloca.h gettext-0.19/gettext-runtime/libasprintf/msvc/alloca.h +--- gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/alloca.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/libasprintf/msvc/alloca.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,70 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Memory allocation on the stack. ++ Copyright (C) 1995, 1999, 2001-2007, 2015-2016 Free Software Foundation, ++ Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with this program. If not, see . */ ++ ++/* When this file is included, it may be preceded only by preprocessor ++ declarations. Thanks to AIX. Therefore we include it right after ++ "config.h", not later. */ ++ ++/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H ++ means there is a real alloca function. */ ++#ifndef _GL_ALLOCA_H ++#define _GL_ALLOCA_H ++ ++/* alloca(N) returns a pointer (void* or char*) to N bytes of memory ++ allocated on the stack, and which will last until the function returns. ++ Use of alloca should be avoided: ++ - inside arguments of function calls - undefined behaviour, ++ - in inline functions - the allocation may actually last until the ++ calling function returns, ++ - for huge N (say, N >= 65536) - you never know how large (or small) ++ the stack is, and when the stack cannot fulfill the memory allocation ++ request, the program just crashes. ++ */ ++ ++#ifndef alloca ++# ifdef __GNUC__ ++# define alloca __builtin_alloca ++# else ++# ifdef _MSC_VER ++# include ++# define alloca _alloca ++# else ++# if HAVE_ALLOCA_H ++# include ++# else ++# ifdef _AIX ++ #pragma alloca ++# else ++# ifdef __hpux /* This section must match that of bison generated files. */ ++# ifdef __cplusplus ++extern "C" void *alloca (unsigned int); ++# else /* not __cplusplus */ ++extern void *alloca (); ++# endif /* not __cplusplus */ ++# else /* not __hpux */ ++# ifndef alloca ++extern char *alloca (); ++# endif ++# endif /* __hpux */ ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#endif /* _GL_ALLOCA_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/autosprintf.h gettext-0.19/gettext-runtime/libasprintf/msvc/autosprintf.h +--- gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/autosprintf.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/libasprintf/msvc/autosprintf.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,79 @@ ++/* Class autosprintf - formatted output to an ostream. ++ Copyright (C) 2002, 2012-2016 Free Software Foundation, Inc. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with this program. If not, see . */ ++ ++#ifndef _AUTOSPRINTF_H ++#define _AUTOSPRINTF_H ++ ++/* This feature is available in gcc versions 2.5 and later. */ ++#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ ++# define _AUTOSPRINTF_ATTRIBUTE_FORMAT() /* empty */ ++#else ++/* The __-protected variants of 'format' and 'printf' attributes ++ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ ++# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ++# define _AUTOSPRINTF_ATTRIBUTE_FORMAT() \ ++ __attribute__ ((__format__ (__printf__, 2, 3))) ++# else ++# define _AUTOSPRINTF_ATTRIBUTE_FORMAT() \ ++ __attribute__ ((format (printf, 2, 3))) ++# endif ++#endif ++ ++#ifndef LIBASPRINTF_DLL_EXPORTED ++#if defined (_MSC_VER) && defined (_DLL) && !defined (GETTEXT_STATIC) ++# ifdef IN_LIBASPRINTF ++# define LIBASPRINTF_DLL_EXPORTED __declspec (dllexport) ++# else ++# define LIBASPRINTF_DLL_EXPORTED __declspec (dllimport) ++# endif ++#else ++# define LIBASPRINTF_DLL_EXPORTED ++#endif ++#endif ++ ++#include ++#include ++ ++namespace gnu ++{ ++ /* A temporary object, usually allocated on the stack, representing ++ the result of an asprintf() call. */ ++ class LIBASPRINTF_DLL_EXPORTED autosprintf ++ { ++ public: ++ /* Constructor: takes a format string and the printf arguments. */ ++ autosprintf (const char *format, ...) ++ _AUTOSPRINTF_ATTRIBUTE_FORMAT(); ++ /* Copy constructor. */ ++ autosprintf (const autosprintf& src); ++ autosprintf& operator = (autosprintf copy); ++ /* Destructor: frees the temporarily allocated string. */ ++ ~autosprintf (); ++ /* Conversion to string. */ ++ operator char * () const; ++ operator std::string () const; ++ /* Output to an ostream. */ ++ friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp) ++ { ++ stream << (tmp.str ? tmp.str : "(error in autosprintf)"); ++ return stream; ++ } ++ private: ++ char *str; ++ }; ++} ++ ++#endif /* _AUTOSPRINTF_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/config.h gettext-0.19/gettext-runtime/libasprintf/msvc/config.h +--- gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/config.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/libasprintf/msvc/config.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,332 @@ ++/* config.h. Generated from config.h.in by configure. */ ++/* config.h.in. Generated from configure.ac by autoheader. */ ++ ++/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP ++ systems. This function is required for `alloca.c' support on those systems. ++ */ ++/* #undef CRAY_STACKSEG_END */ ++ ++/* Define to 1 if using `alloca.c'. */ ++/* #undef C_ALLOCA */ ++ ++/* Define to 1 if you have `alloca', as a function or macro. */ ++#define HAVE_ALLOCA 1 ++ ++/* Define to 1 if you have and it should be used (not on Ultrix). ++ */ ++/* #undef HAVE_ALLOCA_H */ ++ ++/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you ++ don't. */ ++#define HAVE_DECL__SNPRINTF 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_DLFCN_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_FEATURES_H */ ++ ++/* Define if you have the 'intmax_t' type in or . */ ++#if (_MSC_VER >= 1600) ++# define HAVE_INTMAX_T 1 ++#endif ++ ++#if (_MSC_VER >= 1800) ++/* Define to 1 if you have the header file. */ ++# define HAVE_INTTYPES_H 1 ++ ++/* Define if exists, doesn't clash with , and ++ declares uintmax_t. */ ++# define HAVE_INTTYPES_H_WITH_UINTMAX 1 ++#endif ++ ++/* Define to 1 if the system has the type 'long long int'. */ ++#define HAVE_LONG_LONG_INT 1 ++ ++/* Define to 1 if you have the `mbrtowc' function. */ ++#define HAVE_MBRTOWC 1 ++ ++/* Define to 1 if declares mbstate_t. */ ++#define HAVE_MBSTATE_T 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MEMORY_H 1 ++ ++/* Define if your printf() function supports format strings with positions. */ ++/* #undef HAVE_POSIX_PRINTF */ ++ ++/* Define to 1 if you have the `snprintf' function. */ ++#if (_MSC_VER >= 1900) ++# define HAVE_SNPRINTF 1 ++#endif ++ ++#if (_MSC_VER >= 1600) ++/* Define to 1 if you have the header file. */ ++# define HAVE_STDINT_H 1 ++ ++/* Define if exists, doesn't clash with , and declares ++ uintmax_t. */ ++# define HAVE_STDINT_H_WITH_UINTMAX 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDLIB_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_STRINGS_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STRING_H 1 ++ ++/* Define to 1 if you have the `strnlen' function. */ ++#define HAVE_STRNLEN 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_TYPES_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_UNISTD_H */ ++ ++/* Define to 1 if the system has the type 'unsigned long long int'. */ ++#define HAVE_UNSIGNED_LONG_LONG_INT 1 ++ ++/* Define to 1 if you have the `vasprintf' function. */ ++/* #undef HAVE_VASPRINTF */ ++ ++/* Define if you have the 'wchar_t' type. */ ++#define HAVE_WCHAR_T 1 ++ ++/* Define to 1 if you have the `wcrtomb' function. */ ++#define HAVE_WCRTOMB 1 ++ ++/* Define to 1 if you have the `wcslen' function. */ ++#define HAVE_WCSLEN 1 ++ ++/* Define to 1 if you have the `wcsnlen' function. */ ++#define HAVE_WCSNLEN 1 ++ ++/* Define if you have the 'wint_t' type. */ ++#define HAVE_WINT_T 1 ++ ++/* Define to the sub-directory where libtool stores uninstalled libraries. */ ++#define LT_OBJDIR ".libs/" ++ ++/* Name of package */ ++#define PACKAGE "libasprintf" ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "libasprintf" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "libasprintf 1.0" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "libasprintf" ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "1.0" ++ ++/* Define as the maximum value of type 'size_t', if the system doesn't define ++ it. */ ++#ifndef SIZE_MAX ++/* # undef SIZE_MAX */ ++#endif ++ ++/* If using the C implementation of alloca, define if you know the ++ direction of stack growth for your system; otherwise it will be ++ automatically deduced at runtime. ++ STACK_DIRECTION > 0 => grows toward higher addresses ++ STACK_DIRECTION < 0 => grows toward lower addresses ++ STACK_DIRECTION = 0 => direction of growth unknown */ ++/* #undef STACK_DIRECTION */ ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#define STDC_HEADERS 1 ++ ++/* Version number of package */ ++#define VERSION "1.0" ++ ++/* The _Noreturn keyword of C11. */ ++#if ! (defined _Noreturn \ ++ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) ++# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ ++ || 0x5110 <= __SUNPRO_C) ++# define _Noreturn __attribute__ ((__noreturn__)) ++# elif defined _MSC_VER && 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn ++# endif ++#endif ++ ++ ++/* Please see the Gnulib manual for how to use these macros. ++ ++ Suppress extern inline with HP-UX cc, as it appears to be broken; see ++ . ++ ++ Suppress extern inline with Sun C in standards-conformance mode, as it ++ mishandles inline functions that call each other. E.g., for 'inline void f ++ (void) { } inline void g (void) { f (); }', c99 incorrectly complains ++ 'reference to static identifier "f" in extern inline function'. ++ This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. ++ ++ Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) ++ on configurations that mistakenly use 'static inline' to implement ++ functions or macros in standard C headers like . For example, ++ if isdigit is mistakenly implemented via a static inline function, ++ a program containing an extern inline function that calls isdigit ++ may not work since the C standard prohibits extern inline functions ++ from calling static functions. This bug is known to occur on: ++ ++ OS X 10.8 and earlier; see: ++ http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html ++ ++ DragonFly; see ++ http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log ++ ++ FreeBSD; see: ++ http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html ++ ++ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and ++ for clang but remains for g++; see . ++ Assume DragonFly and FreeBSD will be similar. */ ++#if (((defined __APPLE__ && defined __MACH__) \ ++ || defined __DragonFly__ || defined __FreeBSD__) \ ++ && (defined __header_inline \ ++ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ ++ && ! defined __clang__) \ ++ : ((! defined _DONT_USE_CTYPE_INLINE_ \ ++ && (defined __GNUC__ || defined __cplusplus)) \ ++ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ ++ && defined __GNUC__ && ! defined __cplusplus)))) ++# define _GL_EXTERN_INLINE_STDHEADER_BUG ++#endif ++#if ((__GNUC__ \ ++ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ ++ : (199901L <= __STDC_VERSION__ \ ++ && !defined __HP_cc \ ++ && !defined __PGI \ ++ && !(defined __SUNPRO_C && __STDC__))) \ ++ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) ++# define _GL_INLINE inline ++# define _GL_EXTERN_INLINE extern inline ++# define _GL_EXTERN_INLINE_IN_USE ++#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ ++ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) ++# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ ++ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ ++# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) ++# else ++# define _GL_INLINE extern inline ++# endif ++# define _GL_EXTERN_INLINE extern ++# define _GL_EXTERN_INLINE_IN_USE ++#else ++# define _GL_INLINE static _GL_UNUSED ++# define _GL_EXTERN_INLINE static _GL_UNUSED ++#endif ++ ++/* In GCC 4.6 (inclusive) to 5.1 (exclusive), ++ suppress bogus "no previous prototype for 'FOO'" ++ and "no previous declaration for 'FOO'" diagnostics, ++ when FOO is an inline function in the header; see ++ and ++ . */ ++#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ ++# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ ++# define _GL_INLINE_HEADER_CONST_PRAGMA ++# else ++# define _GL_INLINE_HEADER_CONST_PRAGMA \ ++ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") ++# endif ++# define _GL_INLINE_HEADER_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ ++ _GL_INLINE_HEADER_CONST_PRAGMA ++# define _GL_INLINE_HEADER_END \ ++ _Pragma ("GCC diagnostic pop") ++#else ++# define _GL_INLINE_HEADER_BEGIN ++# define _GL_INLINE_HEADER_END ++#endif ++ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#if (_MSC_VER < 1900) ++# ifndef __cplusplus ++# define inline __inline ++# endif ++#endif ++ ++/* Define to long or long long if and don't define. */ ++#if (_MSC_VER < 1600) ++# define intmax_t long long ++#endif ++ ++/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports ++ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of ++ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. ++ __APPLE__ && __MACH__ test for Mac OS X. ++ __APPLE_CC__ tests for the Apple compiler and its version. ++ __STDC_VERSION__ tests for the C99 mode. */ ++#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ ++# define __GNUC_STDC_INLINE__ 1 ++#endif ++ ++/* Define to a type if does not define. */ ++/* #undef mbstate_t */ ++ ++/* Define as the type of the result of subtracting two pointers, if the system ++ doesn't define it. */ ++/* #undef ptrdiff_t */ ++ ++/* Define to `unsigned int' if does not define. */ ++/* #undef size_t */ ++ ++/* Define as a marker that can be attached to declarations that might not ++ be used. This helps to reduce warnings, such as from ++ GCC -Wunused-parameter. */ ++#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_UNUSED __attribute__ ((__unused__)) ++#else ++# define _GL_UNUSED ++#endif ++/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name ++ is a misnomer outside of parameter lists. */ ++#define _UNUSED_PARAMETER_ _GL_UNUSED ++ ++/* gcc supports the "unused" attribute on possibly unused labels, and ++ g++ has since version 4.5. Note to support C++ as well as C, ++ _GL_UNUSED_LABEL should be used with a trailing ; */ ++#if !defined __cplusplus || __GNUC__ > 4 \ ++ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) ++# define _GL_UNUSED_LABEL _GL_UNUSED ++#else ++# define _GL_UNUSED_LABEL ++#endif ++ ++/* The __pure__ attribute was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The __const__ attribute was added in gcc 2.95. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ++# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) ++#else ++# define _GL_ATTRIBUTE_CONST /* empty */ ++#endif ++ +diff -Nru gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/errno.h gettext-0.19/gettext-runtime/libasprintf/msvc/errno.h +--- gettext-0.19-unpatched/gettext-runtime/libasprintf/msvc/errno.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/libasprintf/msvc/errno.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,284 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A POSIX-like . ++ ++ Copyright (C) 2008-2016 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1, 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 Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with this program; if not, see . */ ++ ++#ifndef _GL_ERRNO_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if (_MSC_VER < 1900) ++# include <../include/errno.h> ++#else ++# include <../ucrt/errno.h> ++#endif ++ ++#ifndef _GL_ERRNO_H ++#define _GL_ERRNO_H ++ ++ ++/* On native Windows platforms, many macros are not defined. */ ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++/* These are the same values as defined by MSVC 10, for interoperability. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 122 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 111 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 121 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 134 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 104 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 132 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 129 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 117 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 106 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 105 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++# ifndef EOWNERDEAD ++# define EOWNERDEAD 133 ++# define GNULIB_defined_EOWNERDEAD 1 ++# endif ++ ++# ifndef ENOTRECOVERABLE ++# define ENOTRECOVERABLE 127 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EINPROGRESS ++# define EINPROGRESS 112 ++# define EALREADY 103 ++# define ENOTSOCK 128 ++# define EDESTADDRREQ 109 ++# define EMSGSIZE 115 ++# define EPROTOTYPE 136 ++# define ENOPROTOOPT 123 ++# define EPROTONOSUPPORT 135 ++# define EOPNOTSUPP 130 ++# define EAFNOSUPPORT 102 ++# define EADDRINUSE 100 ++# define EADDRNOTAVAIL 101 ++# define ENETDOWN 116 ++# define ENETUNREACH 118 ++# define ECONNRESET 108 ++# define ENOBUFS 119 ++# define EISCONN 113 ++# define ENOTCONN 126 ++# define ETIMEDOUT 138 ++# define ECONNREFUSED 107 ++# define ELOOP 114 ++# define EHOSTUNREACH 110 ++# define EWOULDBLOCK 140 ++# define GNULIB_defined_ESOCK 1 ++# endif ++ ++# ifndef ETXTBSY ++# define ETXTBSY 139 ++# define ENODATA 120 /* not required by POSIX */ ++# define ENOSR 124 /* not required by POSIX */ ++# define ENOSTR 125 /* not required by POSIX */ ++# define ETIME 137 /* not required by POSIX */ ++# define EOTHER 131 /* not required by POSIX */ ++# define GNULIB_defined_ESTREAMS 1 ++# endif ++ ++/* These are intentionally the same values as the WSA* error numbers, defined ++ in . */ ++# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ ++# define EPFNOSUPPORT 10046 /* not required by POSIX */ ++# define ESHUTDOWN 10058 /* not required by POSIX */ ++# define ETOOMANYREFS 10059 /* not required by POSIX */ ++# define EHOSTDOWN 10064 /* not required by POSIX */ ++# define EPROCLIM 10067 /* not required by POSIX */ ++# define EUSERS 10068 /* not required by POSIX */ ++# define EDQUOT 10069 ++# define ESTALE 10070 ++# define EREMOTE 10071 /* not required by POSIX */ ++# define GNULIB_defined_EWINSOCK 1 ++ ++# endif ++ ++ ++/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros ++ EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ ++# if 0 ++# define EMULTIHOP ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++# if 0 ++# define ENOLINK ++# define GNULIB_defined_ENOLINK 1 ++# endif ++# if 0 ++# define EOVERFLOW ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++ ++/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, ++ EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. ++ Likewise, on NonStop Kernel, EDQUOT is not defined. ++ Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, ++ HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. ++ ++ Note: When one of these systems defines some of these macros some day, ++ binaries will have to be recompiled so that they recognizes the new ++ errno values from the system. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 2000 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 2001 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 2002 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 2003 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EMULTIHOP ++# define EMULTIHOP 2004 ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 2005 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 2006 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 2007 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 2011 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 2012 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ESTALE ++# define ESTALE 2009 ++# define GNULIB_defined_ESTALE 1 ++# endif ++ ++# ifndef EDQUOT ++# define EDQUOT 2010 ++# define GNULIB_defined_EDQUOT 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 2008 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not ++ defined. */ ++ ++# ifndef EOWNERDEAD ++# if defined __sun ++ /* Use the same values as defined for Solaris >= 8, for ++ interoperability. */ ++# define EOWNERDEAD 58 ++# define ENOTRECOVERABLE 59 ++# elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ /* We have a conflict here: pthreads-win32 defines these values ++ differently than MSVC 10. It's hairy to decide which one to use. */ ++# if defined __MINGW32__ && !defined USE_WINDOWS_THREADS ++ /* Use the same values as defined by pthreads-win32, for ++ interoperability. */ ++# define EOWNERDEAD 43 ++# define ENOTRECOVERABLE 44 ++# else ++ /* Use the same values as defined by MSVC 10, for ++ interoperability. */ ++# define EOWNERDEAD 133 ++# define ENOTRECOVERABLE 127 ++# endif ++# else ++# define EOWNERDEAD 2013 ++# define ENOTRECOVERABLE 2014 ++# endif ++# define GNULIB_defined_EOWNERDEAD 1 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EILSEQ ++# define EILSEQ 2015 ++# define GNULIB_defined_EILSEQ 1 ++# endif ++ ++#endif /* _GL_ERRNO_H */ ++#endif /* _GL_ERRNO_H */ +diff -Nru gettext-0.19-unpatched/gettext-runtime/msvc/config.h gettext-0.19/gettext-runtime/msvc/config.h +--- gettext-0.19-unpatched/gettext-runtime/msvc/config.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-runtime/msvc/config.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1769 @@ ++/* config.h. Generated from config.h.in by configure. */ ++/* config.h.in. Generated from configure.ac by autoheader. */ ++ ++#ifndef _MSC_VER ++# error "This is used for Visual Studio builds only" ++#endif ++ ++#ifdef _WIN64 ++# define PLAT "x64" ++# define _GL_SIZE_T_BITS 64 ++# define _GL_PTRDIFF_T_SUFFIX ll ++# define _GL_USER_LABEL_PREFIX ++#else ++# define PLAT "Win32" ++# define _GL_SIZE_T_BITS 32 ++# define _GL_PTRDIFF_T_SUFFIX ++# define _GL_USER_LABEL_PREFIX _ ++#endif ++ ++#if (_MSC_VER < 1900) ++#define MSVC_INCLUDE(header) <../include/ ##header## > ++#else ++#define MSVC_INCLUDE(header) <../ucrt/ ##header## > ++#endif ++ ++#define _GL_SIZE_T_SUFFIX u ##_GL_PTRDIFF_T_SUFFIX ++ ++#if (_MSC_VER < 1700) ++/* Define to the number of bits in type 'ptrdiff_t'. */ ++# define BITSIZEOF_PTRDIFF_T _GL_SIZE_T_BITS ++ ++/* Define to the number of bits in type 'sig_atomic_t'. */ ++# define BITSIZEOF_SIG_ATOMIC_T 32 ++ ++/* Define to the number of bits in type 'size_t'. */ ++# define BITSIZEOF_SIZE_T _GL_SIZE_T_BITS ++ ++/* Define to the number of bits in type 'wchar_t'. */ ++# define BITSIZEOF_WCHAR_T 16 ++ ++/* Define to the number of bits in type 'wint_t'. */ ++# define BITSIZEOF_WINT_T 16 ++#endif ++ ++/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP ++ systems. This function is required for `alloca.c' support on those systems. ++ */ ++/* #undef CRAY_STACKSEG_END */ ++ ++/* Define if mono is the preferred C# implementation. */ ++/* #undef CSHARP_CHOICE_MONO */ ++ ++/* Define if pnet is the preferred C# implementation. */ ++/* #undef CSHARP_CHOICE_PNET */ ++ ++/* Define to 1 if using `alloca.c'. */ ++/* #undef C_ALLOCA */ ++ ++/* Define to 1 if the C locale may have encoding errors. */ ++/* #undef C_LOCALE_MAYBE_EILSEQ */ ++ ++/* Define to 1 if // is a file system root distinct from /. */ ++#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1 ++ ++/* Define to 1 if translation of program messages to the user's native ++ language is requested. */ ++#define ENABLE_NLS 1 ++ ++/* Define to 1 if the package shall run at any location in the file system. */ ++#define ENABLE_RELOCATABLE 1 ++ ++/* Define to 1 if realpath() can malloc memory, always gives an absolute path, ++ and handles trailing slash correctly. */ ++/* #undef FUNC_REALPATH_WORKS */ ++ ++/* Define if gettimeofday clobbers the localtime buffer. */ ++/* #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME */ ++ ++/* Define this to 'void' or 'struct timezone' to match the system's ++ declaration of the second argument to gettimeofday. */ ++#define GETTIMEOFDAY_TIMEZONE void ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module canonicalize-lgpl shall be considered present. */ ++#define GNULIB_CANONICALIZE_LGPL 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module fscanf shall be considered present. */ ++#define GNULIB_FSCANF 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module fwriteerror shall be considered present. */ ++#define GNULIB_FWRITEERROR 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module lock shall be considered present. */ ++#define GNULIB_LOCK 1 ++ ++/* Define to 1 if printf and friends should be labeled with attribute ++ "__gnu_printf__" instead of "__printf__" */ ++#if (_MSC_VER < 1800) ++# define GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 1 ++#endif ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module scanf shall be considered present. */ ++#define GNULIB_SCANF 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module sigpipe shall be considered present. */ ++#define GNULIB_SIGPIPE 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module strerror shall be considered present. */ ++#define GNULIB_STRERROR 1 ++ ++/* Define to 1 when the gnulib module canonicalize_file_name should be tested. ++ */ ++#define GNULIB_TEST_CANONICALIZE_FILE_NAME 1 ++ ++/* Define to 1 when the gnulib module environ should be tested. */ ++#define GNULIB_TEST_ENVIRON 1 ++ ++/* Define to 1 when the gnulib module getopt-gnu should be tested. */ ++#define GNULIB_TEST_GETOPT_GNU 1 ++ ++/* Define to 1 when the gnulib module gettimeofday should be tested. */ ++#define GNULIB_TEST_GETTIMEOFDAY 1 ++ ++/* Define to 1 when the gnulib module iswblank should be tested. */ ++#define GNULIB_TEST_ISWBLANK 1 ++ ++/* Define to 1 when the gnulib module lstat should be tested. */ ++#define GNULIB_TEST_LSTAT 1 ++ ++/* Define to 1 when the gnulib module mbrtowc should be tested. */ ++#define GNULIB_TEST_MBRTOWC 1 ++ ++/* Define to 1 when the gnulib module mbsinit should be tested. */ ++#define GNULIB_TEST_MBSINIT 1 ++ ++/* Define to 1 when the gnulib module mbslen should be tested. */ ++#define GNULIB_TEST_MBSLEN 1 ++ ++/* Define to 1 when the gnulib module mbsstr should be tested. */ ++#define GNULIB_TEST_MBSSTR 1 ++ ++/* Define to 1 when the gnulib module memchr should be tested. */ ++#define GNULIB_TEST_MEMCHR 1 ++ ++/* Define to 1 when the gnulib module raise should be tested. */ ++#define GNULIB_TEST_RAISE 1 ++ ++/* Define to 1 when the gnulib module readlink should be tested. */ ++#define GNULIB_TEST_READLINK 1 ++ ++/* Define to 1 when the gnulib module realpath should be tested. */ ++#define GNULIB_TEST_REALPATH 1 ++ ++/* Define to 1 when the gnulib module setlocale should be tested. */ ++#define GNULIB_TEST_SETLOCALE 1 ++ ++/* Define to 1 when the gnulib module sigprocmask should be tested. */ ++#define GNULIB_TEST_SIGPROCMASK 1 ++ ++/* Define to 1 when the gnulib module stat should be tested. */ ++#define GNULIB_TEST_STAT 1 ++ ++/* Define to 1 when the gnulib module strerror should be tested. */ ++#define GNULIB_TEST_STRERROR 1 ++ ++/* Define to 1 when the gnulib module strnlen should be tested. */ ++#define GNULIB_TEST_STRNLEN 1 ++ ++/* Define to 1 when the gnulib module wcwidth should be tested. */ ++#define GNULIB_TEST_WCWIDTH 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module unistr/u8-mbtoucr shall be considered present. */ ++#define GNULIB_UNISTR_U8_MBTOUCR 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module unistr/u8-uctomb shall be considered present. */ ++#define GNULIB_UNISTR_U8_UCTOMB 1 ++ ++/* Define to 1 if you have `alloca', as a function or macro. */ ++#define HAVE_ALLOCA 1 ++ ++/* Define to 1 if you have and it should be used (not on Ultrix). ++ */ ++/* #undef HAVE_ALLOCA_H */ ++ ++/* Define to 1 if you have the `argz_count' function. */ ++/* #undef HAVE_ARGZ_COUNT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_ARGZ_H */ ++ ++/* Define to 1 if you have the `argz_next' function. */ ++/* #undef HAVE_ARGZ_NEXT */ ++ ++/* Define to 1 if you have the `argz_stringify' function. */ ++/* #undef HAVE_ARGZ_STRINGIFY */ ++ ++/* Define to 1 if you have the `asprintf' function. */ ++/* #undef HAVE_ASPRINTF */ ++ ++/* Define to 1 if you have the `atexit' function. */ ++#define HAVE_ATEXIT 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_BP_SYM_H */ ++ ++/* Define to 1 if the compiler understands __builtin_expect. */ ++/* #undef HAVE_BUILTIN_EXPECT */ ++ ++/* Define to 1 if you have the `canonicalize_file_name' function. */ ++/* #undef HAVE_CANONICALIZE_FILE_NAME */ ++ ++/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the ++ CoreFoundation framework. */ ++/* #undef HAVE_CFLOCALECOPYCURRENT */ ++ ++/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in ++ the CoreFoundation framework. */ ++/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ ++ ++/* Define if the GNU dcgettext() function is already present or preinstalled. ++ */ ++/* #undef HAVE_DCGETTEXT */ ++ ++/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_CLEARERR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you ++ don't. */ ++#define HAVE_DECL_FEOF_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FERROR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FFLUSH_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FGETS_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FPUTC_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FPUTS_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FREAD_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FWRITE_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_GETCHAR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you ++ don't. */ ++#define HAVE_DECL_GETC_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. ++ */ ++#define HAVE_DECL_GETENV 1 ++ ++/* Define to 1 if you have the declaration of `iswblank', and to 0 if you ++ don't. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_DECL_ISWBLANK 1 ++#else ++# define HAVE_DECL_ISWBLANK 0 ++#endif ++ ++/* Define to 1 if you have the declaration of `mbrtowc', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_MBRTOWC */ ++ ++/* Define to 1 if you have the declaration of `mbsinit', and to 0 if you ++ don't. */ ++#define HAVE_DECL_MBSINIT 1 ++ ++/* Define to 1 if you have the declaration of `program_invocation_name', and ++ to 0 if you don't. */ ++#define HAVE_DECL_PROGRAM_INVOCATION_NAME 0 ++ ++/* Define to 1 if you have the declaration of `program_invocation_short_name', ++ and to 0 if you don't. */ ++#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 0 ++ ++/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_PUTCHAR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you ++ don't. */ ++#define HAVE_DECL_PUTC_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `setenv', and to 0 if you don't. ++ */ ++#define HAVE_DECL_SETENV 0 ++ ++/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you ++ don't. */ ++#define HAVE_DECL_STRERROR_R 0 ++ ++/* Define to 1 if you have the declaration of `strnlen', and to 0 if you ++ don't. */ ++#define HAVE_DECL_STRNLEN 1 ++ ++/* Define to 1 if you have the declaration of `towlower', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_TOWLOWER */ ++ ++/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you ++ don't. */ ++#define HAVE_DECL_WCWIDTH 0 ++ ++/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you ++ don't. */ ++#define HAVE_DECL__SNPRINTF 1 ++ ++/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you ++ don't. */ ++#define HAVE_DECL__SNWPRINTF 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_DLFCN_H */ ++ ++/* Define if you have the declaration of environ. */ ++#define HAVE_ENVIRON_DECL 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_FEATURES_H */ ++ ++/* Define to 1 if you have the `fwprintf' function. */ ++#define HAVE_FWPRINTF 1 ++ ++/* Define to 1 if you have the `getcwd' function. */ ++#define HAVE_GETCWD 1 ++ ++/* Define to 1 if you have the `getegid' function. */ ++/* #undef HAVE_GETEGID */ ++ ++/* Define to 1 if you have the `geteuid' function. */ ++/* #undef HAVE_GETEUID */ ++ ++/* Define to 1 if you have the `getgid' function. */ ++/* #undef HAVE_GETGID */ ++ ++/* Define to 1 if you have the `getlocalename_l' function. */ ++/* #undef HAVE_GETLOCALENAME_L */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_GETOPT_H */ ++ ++/* Define to 1 if you have the `getopt_long_only' function. */ ++/* #undef HAVE_GETOPT_LONG_ONLY */ ++ ++/* Define to 1 if you have the `getpagesize' function. */ ++/* #undef HAVE_GETPAGESIZE */ ++ ++/* Define if the GNU gettext() function is already present or preinstalled. */ ++/* #undef HAVE_GETTEXT */ ++ ++/* Define to 1 if you have the `gettimeofday' function. */ ++/* #undef HAVE_GETTIMEOFDAY */ ++ ++/* Define to 1 if you have the `getuid' function. */ ++/* #undef HAVE_GETUID */ ++ ++/* Define if you have the iconv() function and it works. */ ++/* #undef HAVE_ICONV */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_ICONV_H 1 ++ ++/* Define to 1 if the compiler supports one of the keywords 'inline', ++ '__inline__', '__inline' and effectively inlines functions marked as such. ++ */ ++#define HAVE_INLINE 1 ++ ++/* Define if you have the 'intmax_t' type in or . */ ++#if (_MSC_VER >= 1600) ++# define HAVE_INTMAX_T 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_INTTYPES_H */ ++ ++/* Define if exists, doesn't clash with , and ++ declares uintmax_t. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_INTTYPES_H_WITH_UINTMAX 1 ++ ++/* Define to 1 if you have the `iswblank' function. */ ++# define HAVE_ISWBLANK 1 ++#endif ++ ++/* Define to 1 if you have the `iswcntrl' function. */ ++#define HAVE_ISWCNTRL 1 ++ ++/* Define if you have and nl_langinfo(CODESET). */ ++/* #undef HAVE_LANGINFO_CODESET */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LANGINFO_H */ ++ ++/* Define if your file defines LC_MESSAGES. */ ++/* #undef HAVE_LC_MESSAGES */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LIMITS_H 1 ++ ++/* Define to 1 if the system has the type 'long long int'. */ ++#define HAVE_LONG_LONG_INT 1 ++ ++/* Define to 1 if you have the `lstat' function. */ ++/* #undef HAVE_LSTAT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_MACH_O_DYLD_H */ ++ ++/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including ++ config.h and . */ ++/* #undef HAVE_MAP_ANONYMOUS */ ++ ++/* Define to 1 if you have the `mbrtowc' function. */ ++#define HAVE_MBRTOWC 1 ++ ++/* Define to 1 if you have the `mbsinit' function. */ ++/* #undef HAVE_MBSINIT */ ++ ++/* Define to 1 if you have the `mbslen' function. */ ++/* #undef HAVE_MBSLEN */ ++ ++/* Define to 1 if declares mbstate_t. */ ++#define HAVE_MBSTATE_T 1 ++ ++/* Define to 1 if you have the `memmove' function. */ ++#define HAVE_MEMMOVE 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MEMORY_H 1 ++ ++/* Define to 1 if you have the `mempcpy' function. */ ++/* #undef HAVE_MEMPCPY */ ++ ++/* Define to 1 if you have a working `mmap' system call. */ ++/* #undef HAVE_MMAP */ ++ ++/* Define to 1 if you have the `mprotect' function. */ ++/* #undef HAVE_MPROTECT */ ++ ++/* Define to 1 on MSVC platforms that have the "invalid parameter handler" ++ concept. */ ++#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1 ++ ++/* Define to 1 if you have the `munmap' function. */ ++/* #undef HAVE_MUNMAP */ ++ ++/* Define to 1 if you have the `newlocale' function. */ ++/* #undef HAVE_NEWLOCALE */ ++ ++/* Define if your printf() function supports format strings with positions. */ ++/* #undef HAVE_POSIX_PRINTF */ ++ ++/* Define if the defines PTHREAD_MUTEX_RECURSIVE. */ ++/* #undef HAVE_PTHREAD_MUTEX_RECURSIVE */ ++ ++/* Define if the POSIX multithreading library has read/write locks. */ ++/* #undef HAVE_PTHREAD_RWLOCK */ ++ ++/* Define to 1 if you have the `putenv' function. */ ++#define HAVE_PUTENV 1 ++ ++/* Define to 1 if you have the `raise' function. */ ++#define HAVE_RAISE 1 ++ ++/* Define to 1 if atoll is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ATOLL 1 ++#endif ++ ++/* Define to 1 if btowc is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_BTOWC 1 ++ ++/* Define to 1 if canonicalize_file_name is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME */ ++ ++/* Define to 1 if chdir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_CHDIR */ ++ ++/* Define to 1 if chown is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_CHOWN */ ++ ++/* Define to 1 if dprintf is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_DPRINTF */ ++ ++/* Define to 1 if dup is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_DUP 1 ++ ++/* Define to 1 if dup2 is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_DUP2 1 ++ ++/* Define to 1 if dup3 is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_DUP3 */ ++ ++/* Define to 1 if duplocale is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_DUPLOCALE */ ++ ++/* Define to 1 if endusershell is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_ENDUSERSHELL */ ++ ++/* Define to 1 if environ is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_ENVIRON */ ++ ++/* Define to 1 if euidaccess is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_EUIDACCESS */ ++ ++/* Define to 1 if faccessat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FACCESSAT */ ++ ++/* Define to 1 if fchdir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FCHDIR */ ++ ++/* Define to 1 if fchmodat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FCHMODAT */ ++ ++/* Define to 1 if fchownat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FCHOWNAT */ ++ ++/* Define to 1 if fdatasync is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FDATASYNC */ ++ ++/* Define to 1 if ffsl is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FFSL */ ++ ++/* Define to 1 if ffsll is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FFSLL */ ++ ++/* Define to 1 if fpurge is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FPURGE */ ++ ++/* Define to 1 if fseeko is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FSEEKO */ ++ ++/* Define to 1 if fstat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_FSTAT 1 ++ ++/* Define to 1 if fstatat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FSTATAT */ ++ ++/* Define to 1 if fsync is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FSYNC */ ++ ++/* Define to 1 if ftello is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FTELLO */ ++ ++/* Define to 1 if ftruncate is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FTRUNCATE */ ++ ++/* Define to 1 if futimens is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FUTIMENS */ ++ ++/* Define to 1 if getcwd is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETCWD */ ++ ++/* Define to 1 if getdelim is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETDELIM */ ++ ++/* Define to 1 if getdomainname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETDOMAINNAME */ ++ ++/* Define to 1 if getdtablesize is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETDTABLESIZE */ ++ ++/* Define to 1 if getgroups is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETGROUPS */ ++ ++/* Define to 1 if gethostname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETHOSTNAME */ ++ ++/* Define to 1 if getline is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLINE */ ++ ++/* Define to 1 if getloadavg is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLOADAVG */ ++ ++/* Define to 1 if getlogin is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLOGIN */ ++ ++/* Define to 1 if getlogin_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLOGIN_R */ ++ ++/* Define to 1 if getpagesize is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETPAGESIZE */ ++ ++/* Define to 1 if gets is declared even after undefining macros. */ ++#if (_MSC_VER < 1900) ++# define HAVE_RAW_DECL_GETS 1 ++#endif ++ ++/* Define to 1 if getsubopt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETSUBOPT */ ++ ++/* Define to 1 if gettimeofday is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETTIMEOFDAY */ ++ ++/* Define to 1 if getusershell is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETUSERSHELL */ ++ ++/* Define to 1 if grantpt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GRANTPT */ ++ ++/* Define to 1 if group_member is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GROUP_MEMBER */ ++ ++/* Define to 1 if initstate is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_INITSTATE */ ++ ++/* Define to 1 if initstate_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_INITSTATE_R */ ++ ++/* Define to 1 if isatty is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_ISATTY 1 ++ ++/* Define to 1 if iswctype is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_ISWCTYPE 1 ++ ++/* Define to 1 if lchmod is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LCHMOD */ ++ ++/* Define to 1 if lchown is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LCHOWN */ ++ ++/* Define to 1 if link is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LINK */ ++ ++/* Define to 1 if linkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LINKAT */ ++ ++/* Define to 1 if lseek is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_LSEEK 1 ++ ++/* Define to 1 if lstat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LSTAT */ ++ ++/* Define to 1 if mbrlen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBRLEN 1 ++ ++/* Define to 1 if mbrtowc is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBRTOWC 1 ++ ++/* Define to 1 if mbsinit is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBSINIT 1 ++ ++/* Define to 1 if mbsnrtowcs is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MBSNRTOWCS */ ++ ++/* Define to 1 if mbsrtowcs is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBSRTOWCS 1 ++ ++/* Define to 1 if memmem is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MEMMEM */ ++ ++/* Define to 1 if mempcpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MEMPCPY */ ++ ++/* Define to 1 if memrchr is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MEMRCHR */ ++ ++/* Define to 1 if mkdirat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKDIRAT */ ++ ++/* Define to 1 if mkdtemp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKDTEMP */ ++ ++/* Define to 1 if mkfifo is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKFIFO */ ++ ++/* Define to 1 if mkfifoat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKFIFOAT */ ++ ++/* Define to 1 if mknod is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKNOD */ ++ ++/* Define to 1 if mknodat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKNODAT */ ++ ++/* Define to 1 if mkostemp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKOSTEMP */ ++ ++/* Define to 1 if mkostemps is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKOSTEMPS */ ++ ++/* Define to 1 if mkstemp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKSTEMP */ ++ ++/* Define to 1 if mkstemps is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKSTEMPS */ ++ ++/* Define to 1 if nl_langinfo is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_NL_LANGINFO */ ++ ++/* Define to 1 if pclose is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PCLOSE */ ++ ++/* Define to 1 if pipe is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PIPE */ ++ ++/* Define to 1 if pipe2 is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PIPE2 */ ++ ++/* Define to 1 if popen is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_POPEN */ ++ ++/* Define to 1 if posix_openpt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_OPENPT */ ++ ++/* Define to 1 if pread is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PREAD */ ++ ++/* Define to 1 if pthread_sigmask is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PTHREAD_SIGMASK */ ++ ++/* Define to 1 if ptsname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PTSNAME */ ++ ++/* Define to 1 if ptsname_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PTSNAME_R */ ++ ++/* Define to 1 if pwrite is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PWRITE */ ++ ++/* Define to 1 if random is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RANDOM */ ++ ++/* Define to 1 if random_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RANDOM_R */ ++ ++/* Define to 1 if rawmemchr is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RAWMEMCHR */ ++ ++/* Define to 1 if readlink is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_READLINK */ ++ ++/* Define to 1 if readlinkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_READLINKAT */ ++ ++/* Define to 1 if realpath is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_REALPATH */ ++ ++/* Define to 1 if renameat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RENAMEAT */ ++ ++/* Define to 1 if rmdir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RMDIR */ ++ ++/* Define to 1 if rpmatch is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RPMATCH */ ++ ++/* Define to 1 if secure_getenv is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SECURE_GETENV */ ++ ++/* Define to 1 if setenv is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETENV */ ++ ++/* Define to 1 if sethostname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETHOSTNAME */ ++ ++/* Define to 1 if setlocale is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_SETLOCALE 1 ++ ++/* Define to 1 if setstate is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETSTATE */ ++ ++/* Define to 1 if setstate_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETSTATE_R */ ++ ++/* Define to 1 if setusershell is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETUSERSHELL */ ++ ++/* Define to 1 if sigaction is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGACTION */ ++ ++/* Define to 1 if sigaddset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGADDSET */ ++ ++/* Define to 1 if sigdelset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGDELSET */ ++ ++/* Define to 1 if sigemptyset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGEMPTYSET */ ++ ++/* Define to 1 if sigfillset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGFILLSET */ ++ ++/* Define to 1 if sigismember is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGISMEMBER */ ++ ++/* Define to 1 if sigpending is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGPENDING */ ++ ++/* Define to 1 if sigprocmask is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGPROCMASK */ ++ ++/* Define to 1 if sleep is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SLEEP */ ++ ++/* Define to 1 if snprintf is declared even after undefining macros. */ ++#if (_MSC_VER >= 1900) ++# define HAVE_RAW_DECL_SNPRINTF 1 ++#endif ++ ++/* Define to 1 if srandom is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SRANDOM */ ++ ++/* Define to 1 if srandom_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SRANDOM_R */ ++ ++/* Define to 1 if stat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STAT 1 ++ ++/* Define to 1 if stpcpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STPCPY */ ++ ++/* Define to 1 if stpncpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STPNCPY */ ++ ++/* Define to 1 if strcasestr is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRCASESTR */ ++ ++/* Define to 1 if strchrnul is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRCHRNUL */ ++ ++/* Define to 1 if strdup is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRDUP 1 ++ ++/* Define to 1 if strerror_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRERROR_R */ ++ ++/* Define to 1 if strncat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRNCAT 1 ++ ++/* Define to 1 if strndup is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRNDUP */ ++ ++/* Define to 1 if strnlen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRNLEN 1 ++ ++/* Define to 1 if strpbrk is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRPBRK 1 ++ ++/* Define to 1 if strsep is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRSEP */ ++ ++/* Define to 1 if strsignal is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRSIGNAL */ ++ ++/* Define to 1 if strtod is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRTOD 1 ++ ++/* Define to 1 if strtok_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRTOK_R */ ++ ++#if (_MSC_VER >= 1800) ++/* Define to 1 if strtoll is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_STRTOLL 1 ++ ++/* Define to 1 if strtoull is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_STRTOULL 1 ++#endif ++ ++/* Define to 1 if strverscmp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRVERSCMP */ ++ ++/* Define to 1 if symlink is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SYMLINK */ ++ ++/* Define to 1 if symlinkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SYMLINKAT */ ++ ++/* Define to 1 if tmpfile is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_TMPFILE 1 ++ ++/* Define to 1 if towctrans is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_TOWCTRANS 1 ++ ++/* Define to 1 if ttyname_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_TTYNAME_R */ ++ ++/* Define to 1 if unlink is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_UNLINK 1 ++ ++/* Define to 1 if unlinkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UNLINKAT */ ++ ++/* Define to 1 if unlockpt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UNLOCKPT */ ++ ++/* Define to 1 if unsetenv is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UNSETENV */ ++ ++/* Define to 1 if usleep is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_USLEEP */ ++ ++/* Define to 1 if utimensat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UTIMENSAT */ ++ ++/* Define to 1 if vdprintf is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_VDPRINTF */ ++ ++/* Define to 1 if vsnprintf is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_VSNPRINTF 1 ++ ++/* Define to 1 if wcpcpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCPCPY */ ++ ++/* Define to 1 if wcpncpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCPNCPY */ ++ ++/* Define to 1 if wcrtomb is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCRTOMB 1 ++ ++/* Define to 1 if wcscasecmp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSCASECMP */ ++ ++/* Define to 1 if wcscat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCAT 1 ++ ++/* Define to 1 if wcschr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCHR 1 ++ ++/* Define to 1 if wcscmp is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCMP 1 ++ ++/* Define to 1 if wcscoll is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCOLL 1 ++ ++/* Define to 1 if wcscpy is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCPY 1 ++ ++/* Define to 1 if wcscspn is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCSPN 1 ++ ++/* Define to 1 if wcsdup is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSDUP 1 ++ ++/* Define to 1 if wcslen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSLEN 1 ++ ++/* Define to 1 if wcsncasecmp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSNCASECMP */ ++ ++/* Define to 1 if wcsncat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNCAT 1 ++ ++/* Define to 1 if wcsncmp is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNCMP 1 ++ ++/* Define to 1 if wcsncpy is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNCPY 1 ++ ++/* Define to 1 if wcsnlen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNLEN 1 ++ ++/* Define to 1 if wcsnrtombs is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSNRTOMBS */ ++ ++/* Define to 1 if wcspbrk is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSPBRK 1 ++ ++/* Define to 1 if wcsrchr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSRCHR 1 ++ ++/* Define to 1 if wcsrtombs is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSRTOMBS 1 ++ ++/* Define to 1 if wcsspn is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSSPN 1 ++ ++/* Define to 1 if wcsstr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSSTR 1 ++ ++/* Define to 1 if wcstok is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSTOK 1 ++ ++/* Define to 1 if wcswidth is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSWIDTH */ ++ ++/* Define to 1 if wcsxfrm is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSXFRM 1 ++ ++/* Define to 1 if wctob is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCTOB 1 ++ ++/* Define to 1 if wctrans is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCTRANS 1 ++ ++/* Define to 1 if wctype is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCTYPE 1 ++ ++/* Define to 1 if wcwidth is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCWIDTH */ ++ ++/* Define to 1 if wmemchr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMCHR 1 ++ ++/* Define to 1 if wmemcmp is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMCMP 1 ++ ++/* Define to 1 if wmemcpy is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMCPY 1 ++ ++/* Define to 1 if wmemmove is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMMOVE 1 ++ ++/* Define to 1 if wmemset is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMSET 1 ++ ++/* Define to 1 if _Exit is declared even after undefining macros. */ ++#if (_MSC_VER >= 1900) ++# define HAVE_RAW_DECL__EXIT 1 ++#endif ++ ++/* Define to 1 if you have the `readlink' function. */ ++/* #undef HAVE_READLINK */ ++ ++/* Define to 1 if you have the `readlinkat' function. */ ++/* #undef HAVE_READLINKAT */ ++ ++/* Define to 1 if you have the `realpath' function. */ ++/* #undef HAVE_REALPATH */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SEARCH_H 1 ++ ++/* Define to 1 if you have the `setenv' function. */ ++/* #undef HAVE_SETENV */ ++ ++/* Define to 1 if you have the `setlocale' function. */ ++#define HAVE_SETLOCALE 1 ++ ++/* Define to 1 if 'sig_atomic_t' is a signed integer type. */ ++#if (_MSC_VER < 1700) ++# define HAVE_SIGNED_SIG_ATOMIC_T 1 ++#endif ++ ++/* Define to 1 if 'wchar_t' is a signed integer type. */ ++/* #undef HAVE_SIGNED_WCHAR_T */ ++ ++/* Define to 1 if 'wint_t' is a signed integer type. */ ++/* #undef HAVE_SIGNED_WINT_T */ ++ ++/* Define to 1 if the system has the type `sigset_t'. */ ++/* #undef HAVE_SIGSET_T */ ++ ++/* Define to 1 if you have the `snprintf' function. */ ++#if (_MSC_VER >= 1900) ++# define HAVE_SNPRINTF 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDDEF_H 1 ++ ++#if (_MSC_VER >= 1600) ++/* Define to 1 if you have the header file. */ ++# define HAVE_STDINT_H 1 ++ ++/* Define if exists, doesn't clash with , and declares ++ uintmax_t. */ ++# define HAVE_STDINT_H_WITH_UINTMAX 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDLIB_H 1 ++ ++/* Define to 1 if you have the `stpcpy' function. */ ++/* #undef HAVE_STPCPY */ ++ ++/* Define to 1 if you have the `strcasecmp' function. */ ++/* #undef HAVE_STRCASECMP */ ++ ++/* Define to 1 if you have the `strdup' function. */ ++#define HAVE_STRDUP 1 ++ ++/* Define to 1 if you have the `strerror_r' function. */ ++/* #undef HAVE_STRERROR_R */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_STRINGS_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STRING_H 1 ++ ++/* Define to 1 if you have the `strnlen' function. */ ++#define HAVE_STRNLEN 1 ++ ++/* Define to 1 if you have the `strtoul' function. */ ++#define HAVE_STRTOUL 1 ++ ++/* Define to 1 if you have the `symlink' function. */ ++/* #undef HAVE_SYMLINK */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_BITYPES_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_INTTYPES_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_MMAN_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_PARAM_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_SOCKET_H */ ++ ++/* 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_TIMEB_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_TIME_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_TYPES_H 1 ++ ++/* Define to 1 if you have the `towlower' function. */ ++#define HAVE_TOWLOWER 1 ++ ++/* Define to 1 if you have the `tsearch' function. */ ++/* #undef HAVE_TSEARCH */ ++ ++/* Define if you have the 'uintmax_t' type in or . */ ++#if (_MSC_VER >= 1600) ++# define HAVE_UINTMAX_T 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_UNISTD_H */ ++ ++/* Define to 1 if the system has the type 'unsigned long long int'. */ ++#define HAVE_UNSIGNED_LONG_LONG_INT 1 ++ ++/* Define to 1 if you have the `uselocale' function. */ ++/* #undef HAVE_USELOCALE */ ++ ++/* Define to 1 or 0, depending whether the compiler supports simple visibility ++ declarations. */ ++#define HAVE_VISIBILITY 0 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_WCHAR_H 1 ++ ++/* Define if you have the 'wchar_t' type. */ ++#define HAVE_WCHAR_T 1 ++ ++/* Define to 1 if you have the `wcrtomb' function. */ ++#define HAVE_WCRTOMB 1 ++ ++/* Define to 1 if you have the `wcslen' function. */ ++#define HAVE_WCSLEN 1 ++ ++/* Define to 1 if you have the `wcsnlen' function. */ ++#define HAVE_WCSNLEN 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_WCTYPE_H 1 ++ ++/* Define to 1 if you have the `wcwidth' function. */ ++/* #undef HAVE_WCWIDTH */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_WINSOCK2_H 1 ++ ++/* Define if you have the 'wint_t' type. */ ++#define HAVE_WINT_T 1 ++ ++/* Define to 1 if O_NOATIME works. */ ++#define HAVE_WORKING_O_NOATIME 0 ++ ++/* Define to 1 if O_NOFOLLOW works. */ ++#define HAVE_WORKING_O_NOFOLLOW 0 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_XLOCALE_H */ ++ ++/* Define to 1 if the system has the type `_Bool'. */ ++#if (_MSC_VER >= 1800) ++# define HAVE__BOOL 1 ++#endif ++ ++/* Define to 1 if you have the `_ftime' function. */ ++#define HAVE__FTIME 1 ++ ++/* Define to 1 if you have the `_NSGetExecutablePath' function. */ ++/* #undef HAVE__NSGETEXECUTABLEPATH */ ++ ++/* Define to 1 if you have the `_set_invalid_parameter_handler' function. */ ++#define HAVE__SET_INVALID_PARAMETER_HANDLER 1 ++ ++/* Define to 1 if you have the `__fsetlocking' function. */ ++/* #undef HAVE___FSETLOCKING */ ++ ++/* Define as const if the declaration of iconv() needs const. */ ++#define ICONV_CONST ++ ++/* Define to a symbolic name denoting the flavor of iconv_open() ++ implementation. */ ++/* #undef ICONV_FLAVOR */ ++ ++/* Define to the value of ${prefix}, as a string. */ ++#if _MSC_VER < 1600 ++#define INSTALLPREFIX "c:/vs9.0/" PLAT ++#elif _MSC_VER < 1700 ++#define INSTALLPREFIX "c:/vs10.0/" PLAT ++#elif _MSC_VER < 1800 ++#define INSTALLPREFIX "c:/vs11.0/" PLAT ++#elif _MSC_VER < 1900 ++#define INSTALLPREFIX "c:/vs12.0/" PLAT ++#elif _MSC_VER < 1910 ++#define INSTALLPREFIX "c:/vs14.0/" PLAT ++#elif _MSC_VER < 2000 ++#define INSTALLPREFIX "c:/vs15.0/" PLAT ++#endif ++ ++/* Define if integer division by zero raises signal SIGFPE. */ ++#define INTDIV0_RAISES_SIGFPE 0 ++ ++/* Define to 1 if 'lstat' dereferences a symlink specified with a trailing ++ slash. */ ++/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ ++ ++/* Define to the sub-directory where libtool stores uninstalled libraries. */ ++#define LT_OBJDIR ".libs/" ++ ++/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */ ++#define MALLOC_0_IS_NONNULL 1 ++ ++/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */ ++/* #undef MAP_ANONYMOUS */ ++ ++/* Define if the mbrtowc function does not return (size_t) -2 for empty input. ++ */ ++/* #undef MBRTOWC_EMPTY_INPUT_BUG */ ++ ++/* Define if the mbrtowc function has the NULL pwc argument bug. */ ++/* #undef MBRTOWC_NULL_ARG1_BUG */ ++ ++/* Define if the mbrtowc function has the NULL string argument bug. */ ++/* #undef MBRTOWC_NULL_ARG2_BUG */ ++ ++/* Define if the mbrtowc function does not return 0 for a NUL character. */ ++/* #undef MBRTOWC_NUL_RETVAL_BUG */ ++ ++/* Define if the mbrtowc function returns a wrong return value. */ ++/* #undef MBRTOWC_RETVAL_BUG */ ++ ++/* Name of package */ ++#define PACKAGE "gettext-runtime" ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "bug-gnu-gettext@gnu.org" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "gettext-runtime" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "gettext-runtime 0.19.8.1" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "gettext-runtime" ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "0.19.8.1" ++ ++/* Define if exists and defines unusable PRI* macros. */ ++/* #undef PRI_MACROS_BROKEN */ ++ ++/* Define if the pthread_in_use() detection is hard. */ ++/* #undef PTHREAD_IN_USE_DETECTION_HARD */ ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'ptrdiff_t'. */ ++#if (_MSC_VER < 1700) ++# define PTRDIFF_T_SUFFIX PTRDIFF_T_SUFFIX ++#endif ++ ++/* Define to 1 if readlink fails to recognize a trailing slash. */ ++/* #undef READLINK_TRAILING_SLASH_BUG */ ++ ++/* Define to 1 if stat needs help when passed a directory name with a trailing ++ slash */ ++#if (_MSC_VER < 1900) ++# define REPLACE_FUNC_STAT_DIR 1 ++#endif ++ ++/* Define to 1 if stat needs help when passed a file name with a trailing ++ slash */ ++/* #undef REPLACE_FUNC_STAT_FILE */ ++ ++/* Define to 1 if strerror(0) does not return a message implying success. */ ++/* #undef REPLACE_STRERROR_0 */ ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'sig_atomic_t'. */ ++#if (_MSC_VER < 1700) ++# define SIG_ATOMIC_T_SUFFIX ++#endif ++ ++/* Define as the maximum value of type 'size_t', if the system doesn't define ++ it. */ ++#ifndef SIZE_MAX ++/* # undef SIZE_MAX */ ++#endif ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'size_t'. */ ++#if (_MSC_VER < 1700) ++# define SIZE_T_SUFFIX _GL_SIZE_T_SUFFIX ++#endif ++ ++/* If using the C implementation of alloca, define if you know the ++ direction of stack growth for your system; otherwise it will be ++ automatically deduced at runtime. ++ STACK_DIRECTION > 0 => grows toward higher addresses ++ STACK_DIRECTION < 0 => grows toward lower addresses ++ STACK_DIRECTION = 0 => direction of growth unknown */ ++/* #undef STACK_DIRECTION */ ++ ++/* 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 strerror_r returns char *. */ ++/* #undef STRERROR_R_CHAR_P */ ++ ++/* Define to the prefix of C symbols at the assembler and linker level, either ++ an underscore or empty. */ ++#define USER_LABEL_PREFIX ++ ++/* Define if the POSIX multithreading library can be used. */ ++/* #undef USE_POSIX_THREADS */ ++ ++/* Define if references to the POSIX multithreading library should be made ++ weak. */ ++/* #undef USE_POSIX_THREADS_WEAK */ ++ ++/* Define if the GNU Pth multithreading library can be used. */ ++/* #undef USE_PTH_THREADS */ ++ ++/* Define if references to the GNU Pth multithreading library should be made ++ weak. */ ++/* #undef USE_PTH_THREADS_WEAK */ ++ ++/* Define if the old Solaris multithreading library can be used. */ ++/* #undef USE_SOLARIS_THREADS */ ++ ++/* Define if references to the old Solaris multithreading library should be ++ made weak. */ ++/* #undef USE_SOLARIS_THREADS_WEAK */ ++ ++/* Enable extensions on AIX 3, Interix. */ ++#ifndef _ALL_SOURCE ++# define _ALL_SOURCE 1 ++#endif ++/* Enable general extensions on OS X. */ ++#ifndef _DARWIN_C_SOURCE ++# define _DARWIN_C_SOURCE 1 ++#endif ++/* Enable GNU extensions on systems that have them. */ ++#ifndef _GNU_SOURCE ++# define _GNU_SOURCE 1 ++#endif ++/* Use GNU style printf and scanf. */ ++#ifndef __USE_MINGW_ANSI_STDIO ++# define __USE_MINGW_ANSI_STDIO 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 X/Open extensions if necessary. HP-UX 11.11 defines ++ mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of ++ whether compiling with -Ae or -D_HPUX_SOURCE=1. */ ++#ifndef _XOPEN_SOURCE ++/* # undef _XOPEN_SOURCE */ ++#endif ++/* Enable general extensions on Solaris. */ ++#ifndef __EXTENSIONS__ ++# define __EXTENSIONS__ 1 ++#endif ++ ++ ++/* Define to 1 if you want getc etc. to use unlocked I/O if available. ++ Unlocked I/O can improve performance in unithreaded apps, but it is not ++ safe for multithreaded apps. */ ++#define USE_UNLOCKED_IO 1 ++ ++/* Define if the native Windows multithreading API can be used. */ ++#define USE_WINDOWS_THREADS 1 ++ ++/* Version number of package */ ++#define VERSION "0.19.8.1" ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'wchar_t'. */ ++#if (_MSC_VER < 1700) ++# define WCHAR_T_SUFFIX ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'wint_t'. */ ++# define WINT_T_SUFFIX ++#endif ++ ++/* Define when --enable-shared is used on mingw or Cygwin. */ ++#define WOE32DLL 1 ++ ++/* Enable large inode numbers on Mac OS X 10.5. */ ++#define _DARWIN_USE_64_BIT_INODE 1 ++ ++/* Number of bits in a file offset, on hosts where this is settable. */ ++/* #undef _FILE_OFFSET_BITS */ ++ ++/* Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct ++ stat.st_size becomes 64-bit. */ ++#define _GL_WINDOWS_64_BIT_ST_SIZE 1 ++ ++/* Define for large files, on AIX-style hosts. */ ++/* #undef _LARGE_FILES */ ++ ++/* Define to 1 on Solaris. */ ++/* #undef _LCONV_C99 */ ++ ++/* Define to 1 if on MINIX. */ ++/* #undef _MINIX */ ++ ++/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */ ++/* #undef _NETBSD_SOURCE */ ++ ++/* The _Noreturn keyword of C11. */ ++#if ! (defined _Noreturn \ ++ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) ++# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ ++ || 0x5110 <= __SUNPRO_C) ++# define _Noreturn __attribute__ ((__noreturn__)) ++# elif defined _MSC_VER && 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn ++# endif ++#endif ++ ++ ++/* 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 rpl_ if the getopt replacement functions and variables should be ++ used. */ ++#define __GETOPT_PREFIX rpl_ ++ ++/* Define to 1 if the system predates C++11. */ ++/* #undef __STDC_CONSTANT_MACROS */ ++ ++/* Define to 1 if the system predates C++11. */ ++/* #undef __STDC_LIMIT_MACROS */ ++ ++/* Please see the Gnulib manual for how to use these macros. ++ ++ Suppress extern inline with HP-UX cc, as it appears to be broken; see ++ . ++ ++ Suppress extern inline with Sun C in standards-conformance mode, as it ++ mishandles inline functions that call each other. E.g., for 'inline void f ++ (void) { } inline void g (void) { f (); }', c99 incorrectly complains ++ 'reference to static identifier "f" in extern inline function'. ++ This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. ++ ++ Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) ++ on configurations that mistakenly use 'static inline' to implement ++ functions or macros in standard C headers like . For example, ++ if isdigit is mistakenly implemented via a static inline function, ++ a program containing an extern inline function that calls isdigit ++ may not work since the C standard prohibits extern inline functions ++ from calling static functions. This bug is known to occur on: ++ ++ OS X 10.8 and earlier; see: ++ http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html ++ ++ DragonFly; see ++ http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log ++ ++ FreeBSD; see: ++ http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html ++ ++ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and ++ for clang but remains for g++; see . ++ Assume DragonFly and FreeBSD will be similar. */ ++#if (((defined __APPLE__ && defined __MACH__) \ ++ || defined __DragonFly__ || defined __FreeBSD__) \ ++ && (defined __header_inline \ ++ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ ++ && ! defined __clang__) \ ++ : ((! defined _DONT_USE_CTYPE_INLINE_ \ ++ && (defined __GNUC__ || defined __cplusplus)) \ ++ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ ++ && defined __GNUC__ && ! defined __cplusplus)))) ++# define _GL_EXTERN_INLINE_STDHEADER_BUG ++#endif ++#if ((__GNUC__ \ ++ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ ++ : (199901L <= __STDC_VERSION__ \ ++ && !defined __HP_cc \ ++ && !defined __PGI \ ++ && !(defined __SUNPRO_C && __STDC__))) \ ++ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) ++# define _GL_INLINE inline ++# define _GL_EXTERN_INLINE extern inline ++# define _GL_EXTERN_INLINE_IN_USE ++#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ ++ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) ++# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ ++ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ ++# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) ++# else ++# define _GL_INLINE extern inline ++# endif ++# define _GL_EXTERN_INLINE extern ++# define _GL_EXTERN_INLINE_IN_USE ++#else ++# define _GL_INLINE static _GL_UNUSED ++# define _GL_EXTERN_INLINE static _GL_UNUSED ++#endif ++ ++/* In GCC 4.6 (inclusive) to 5.1 (exclusive), ++ suppress bogus "no previous prototype for 'FOO'" ++ and "no previous declaration for 'FOO'" diagnostics, ++ when FOO is an inline function in the header; see ++ and ++ . */ ++#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ ++# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ ++# define _GL_INLINE_HEADER_CONST_PRAGMA ++# else ++# define _GL_INLINE_HEADER_CONST_PRAGMA \ ++ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") ++# endif ++# define _GL_INLINE_HEADER_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ ++ _GL_INLINE_HEADER_CONST_PRAGMA ++# define _GL_INLINE_HEADER_END \ ++ _Pragma ("GCC diagnostic pop") ++#else ++# define _GL_INLINE_HEADER_BEGIN ++# define _GL_INLINE_HEADER_END ++#endif ++ ++/* Define to `int' if doesn't define. */ ++#define gid_t int ++ ++/* Define as a marker that can be attached to declarations that might not ++ be used. This helps to reduce warnings, such as from ++ GCC -Wunused-parameter. */ ++#ifndef _GL_UNUSED ++# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_UNUSED __attribute__ ((__unused__)) ++# else ++# define _GL_UNUSED ++# endif ++#endif ++ ++/* The __pure__ attribute was added in gcc 2.96. */ ++#ifndef _GL_ATTRIBUTE_PURE ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++# else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++# endif ++#endif ++ ++ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#if (_MSC_VER < 1900) ++# ifndef __cplusplus ++# define inline __inline ++# endif ++#endif ++ ++/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports ++ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of ++ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. ++ __APPLE__ && __MACH__ test for Mac OS X. ++ __APPLE_CC__ tests for the Apple compiler and its version. ++ __STDC_VERSION__ tests for the C99 mode. */ ++#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ ++# define __GNUC_STDC_INLINE__ 1 ++#endif ++ ++/* Define to a type if does not define. */ ++/* #undef mbstate_t */ ++ ++/* Define to `int' if does not define. */ ++#define mode_t int ++ ++/* Define to the type of st_nlink in struct stat, or a supertype. */ ++#define nlink_t int ++ ++/* Define to `int' if does not define. */ ++#define pid_t int ++ ++/* Define as the type of the result of subtracting two pointers, if the system ++ doesn't define it. */ ++/* #undef ptrdiff_t */ ++ ++/* Define to the equivalent of the C99 'restrict' keyword, or to ++ nothing if this is not supported. Do not define if restrict is ++ supported directly. */ ++#define restrict /**/ ++/* Work around a bug in Sun C++: it does not support _Restrict or ++ __restrict__, even though the corresponding Sun C compiler ends up with ++ "#define restrict _Restrict" or "#define restrict __restrict__" in the ++ previous line. Perhaps some future version of Sun C++ will work with ++ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ ++#if defined __SUNPRO_CC && !defined __RESTRICT ++# define _Restrict ++# define __restrict__ ++#endif ++ ++/* Define to `unsigned int' if does not define. */ ++/* #undef size_t */ ++ ++/* Define as a signed type of the same size as size_t. */ ++#define ssize_t int ++ ++/* Define to `int' if doesn't define. */ ++#define uid_t int ++ ++/* Define to unsigned long or unsigned long long if and ++ don't define. */ ++#if (_MSC_VER < 1600) ++# define uintmax_t unsigned long long ++#endif ++ ++/* Define as a marker that can be attached to declarations that might not ++ be used. This helps to reduce warnings, such as from ++ GCC -Wunused-parameter. */ ++#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_UNUSED __attribute__ ((__unused__)) ++#else ++# define _GL_UNUSED ++#endif ++/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name ++ is a misnomer outside of parameter lists. */ ++#define _UNUSED_PARAMETER_ _GL_UNUSED ++ ++/* gcc supports the "unused" attribute on possibly unused labels, and ++ g++ has since version 4.5. Note to support C++ as well as C, ++ _GL_UNUSED_LABEL should be used with a trailing ; */ ++#if !defined __cplusplus || __GNUC__ > 4 \ ++ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) ++# define _GL_UNUSED_LABEL _GL_UNUSED ++#else ++# define _GL_UNUSED_LABEL ++#endif ++ ++/* The __pure__ attribute was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The __const__ attribute was added in gcc 2.95. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ++# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) ++#else ++# define _GL_ATTRIBUTE_CONST /* empty */ ++#endif ++ ++ ++ ++#define __libc_lock_t gl_lock_t ++#define __libc_lock_define gl_lock_define ++#define __libc_lock_define_initialized gl_lock_define_initialized ++#define __libc_lock_init gl_lock_init ++#define __libc_lock_lock gl_lock_lock ++#define __libc_lock_unlock gl_lock_unlock ++#define __libc_lock_recursive_t gl_recursive_lock_t ++#define __libc_lock_define_recursive gl_recursive_lock_define ++#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized ++#define __libc_lock_init_recursive gl_recursive_lock_init ++#define __libc_lock_lock_recursive gl_recursive_lock_lock ++#define __libc_lock_unlock_recursive gl_recursive_lock_unlock ++#define glthread_in_use libintl_thread_in_use ++#define glthread_lock_init_func libintl_lock_init_func ++#define glthread_lock_lock_func libintl_lock_lock_func ++#define glthread_lock_unlock_func libintl_lock_unlock_func ++#define glthread_lock_destroy_func libintl_lock_destroy_func ++#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded ++#define glthread_rwlock_init_func libintl_rwlock_init_func ++#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded ++#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func ++#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded ++#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func ++#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded ++#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func ++#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded ++#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func ++#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded ++#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func ++#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded ++#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func ++#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded ++#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func ++#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded ++#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func ++#define glthread_once_func libintl_once_func ++#define glthread_once_singlethreaded libintl_once_singlethreaded ++#define glthread_once_multithreaded libintl_once_multithreaded ++ ++ ++ ++/* On Windows, variables that may be in a DLL must be marked specially. */ ++#if (defined _MSC_VER && defined _DLL) && !defined IN_RELOCWRAPPER ++# define DLL_VARIABLE __declspec (dllimport) ++#else ++# define DLL_VARIABLE ++#endif ++ ++/* Extra OS/2 (emx+gcc) defines. */ ++#if defined __EMX__ && !defined __KLIBC__ ++# include "intl/os2compat.h" ++#endif ++ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/alloca.h gettext-0.19/gettext-tools/gnulib-lib/msvc/alloca.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/alloca.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/alloca.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,70 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Memory allocation on the stack. ++ Copyright (C) 1995, 1999, 2001-2007, 2015-2016 Free Software Foundation, ++ Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++/* When this file is included, it may be preceded only by preprocessor ++ declarations. Thanks to AIX. Therefore we include it right after ++ "config.h", not later. */ ++ ++/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H ++ means there is a real alloca function. */ ++#ifndef _GL_ALLOCA_H ++#define _GL_ALLOCA_H ++ ++/* alloca(N) returns a pointer (void* or char*) to N bytes of memory ++ allocated on the stack, and which will last until the function returns. ++ Use of alloca should be avoided: ++ - inside arguments of function calls - undefined behaviour, ++ - in inline functions - the allocation may actually last until the ++ calling function returns, ++ - for huge N (say, N >= 65536) - you never know how large (or small) ++ the stack is, and when the stack cannot fulfill the memory allocation ++ request, the program just crashes. ++ */ ++ ++#ifndef alloca ++# ifdef __GNUC__ ++# define alloca __builtin_alloca ++# else ++# ifdef _MSC_VER ++# include ++# define alloca _alloca ++# else ++# if HAVE_ALLOCA_H ++# include ++# else ++# ifdef _AIX ++ #pragma alloca ++# else ++# ifdef __hpux /* This section must match that of bison generated files. */ ++# ifdef __cplusplus ++extern "C" void *alloca (unsigned int); ++# else /* not __cplusplus */ ++extern void *alloca (); ++# endif /* not __cplusplus */ ++# else /* not __hpux */ ++# ifndef alloca ++extern char *alloca (); ++# endif ++# endif /* __hpux */ ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#endif /* _GL_ALLOCA_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/byteswap.h gettext-0.19/gettext-tools/gnulib-lib/msvc/byteswap.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/byteswap.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/byteswap.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,45 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* byteswap.h - Byte swapping ++ Copyright (C) 2005, 2007, 2009-2016 Free Software Foundation, Inc. ++ Written by Oskar Liljeblad , 2005. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GL_BYTESWAP_H ++#define _GL_BYTESWAP_H ++ ++/* Given an unsigned 16-bit argument X, return the value corresponding to ++ X with reversed byte order. */ ++#define bswap_16(x) ((((x) & 0x00FF) << 8) | \ ++ (((x) & 0xFF00) >> 8)) ++ ++/* Given an unsigned 32-bit argument X, return the value corresponding to ++ X with reversed byte order. */ ++#define bswap_32(x) ((((x) & 0x000000FF) << 24) | \ ++ (((x) & 0x0000FF00) << 8) | \ ++ (((x) & 0x00FF0000) >> 8) | \ ++ (((x) & 0xFF000000) >> 24)) ++ ++/* Given an unsigned 64-bit argument X, return the value corresponding to ++ X with reversed byte order. */ ++#define bswap_64(x) ((((x) & 0x00000000000000FFULL) << 56) | \ ++ (((x) & 0x000000000000FF00ULL) << 40) | \ ++ (((x) & 0x0000000000FF0000ULL) << 24) | \ ++ (((x) & 0x00000000FF000000ULL) << 8) | \ ++ (((x) & 0x000000FF00000000ULL) >> 8) | \ ++ (((x) & 0x0000FF0000000000ULL) >> 24) | \ ++ (((x) & 0x00FF000000000000ULL) >> 40) | \ ++ (((x) & 0xFF00000000000000ULL) >> 56)) ++ ++#endif /* _GL_BYTESWAP_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/configmake.h gettext-0.19/gettext-tools/gnulib-lib/msvc/configmake.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/configmake.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/configmake.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,14 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++#if _MSC_VER < 1600 ++#define PKGDATADIR "c:/vs9.0/" PLAT "/share/gettext" ++#elif _MSC_VER < 1700 ++#define PKGDATADIR "c:/vs10.0/" PLAT "/share/gettext" ++#elif _MSC_VER < 1800 ++#define PKGDATADIR "c:/vs11.0/" PLAT "/share/gettext" ++#elif _MSC_VER < 1900 ++#define PKGDATADIR "c:/vs12.0/" PLAT "/share/gettext" ++#elif _MSC_VER < 1910 ++#define PKGDATADIR "c:/vs14.0/" PLAT "/share/gettext" ++#elif _MSC_VER < 2000 ++#define PKGDATADIR "c:/vs15.0/" PLAT "/share/gettext" ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/dirent.h gettext-0.19/gettext-tools/gnulib-lib/msvc/dirent.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/dirent.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/dirent.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,579 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GL_DIRENT_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_DIRENT_H ++#define _GL_DIRENT_H ++ ++/* Get ino_t. Needed on some systems, including glibc 2.8. */ ++#include ++ ++#if !0 ++/* Define types DIR and 'struct dirent'. */ ++# if !GNULIB_defined_struct_dirent ++struct dirent ++{ ++ char d_type; ++ char d_name[1]; ++}; ++/* Possible values for 'd_type'. */ ++# define DT_UNKNOWN 0 ++# define DT_FIFO 1 /* FIFO */ ++# define DT_CHR 2 /* character device */ ++# define DT_DIR 4 /* directory */ ++# define DT_BLK 6 /* block device */ ++# define DT_REG 8 /* regular file */ ++# define DT_LNK 10 /* symbolic link */ ++# define DT_SOCK 12 /* socket */ ++# define DT_WHT 14 /* whiteout */ ++typedef struct gl_directory DIR; ++# define GNULIB_defined_struct_dirent 1 ++# endif ++#endif ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Declare overridden functions. */ ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef opendir ++# define opendir rpl_opendir ++# define GNULIB_defined_opendir 1 ++# endif ++_GL_FUNCDECL_RPL (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (opendir, DIR *, (const char *dir_name)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (opendir, DIR *, (const char *dir_name)); ++# endif ++_GL_CXXALIASWARN (opendir); ++#elif defined GNULIB_POSIXCHECK ++# undef opendir ++# if HAVE_RAW_DECL_OPENDIR ++_GL_WARN_ON_USE (opendir, "opendir is not portable - " ++ "use gnulib module opendir for portability"); ++# endif ++#endif ++ ++#if 1 ++# if !0 ++_GL_FUNCDECL_SYS (readdir, struct dirent *, (DIR *dirp) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (readdir, struct dirent *, (DIR *dirp)); ++_GL_CXXALIASWARN (readdir); ++#elif defined GNULIB_POSIXCHECK ++# undef readdir ++# if HAVE_RAW_DECL_READDIR ++_GL_WARN_ON_USE (readdir, "readdir is not portable - " ++ "use gnulib module readdir for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (rewinddir, void, (DIR *dirp) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (rewinddir, void, (DIR *dirp)); ++_GL_CXXALIASWARN (rewinddir); ++#elif defined GNULIB_POSIXCHECK ++# undef rewinddir ++# if HAVE_RAW_DECL_REWINDDIR ++_GL_WARN_ON_USE (rewinddir, "rewinddir is not portable - " ++ "use gnulib module rewinddir for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef closedir ++# define closedir rpl_closedir ++# define GNULIB_defined_closedir 1 ++# endif ++_GL_FUNCDECL_RPL (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (closedir, int, (DIR *dirp)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (closedir, int, (DIR *dirp)); ++# endif ++_GL_CXXALIASWARN (closedir); ++#elif defined GNULIB_POSIXCHECK ++# undef closedir ++# if HAVE_RAW_DECL_CLOSEDIR ++_GL_WARN_ON_USE (closedir, "closedir is not portable - " ++ "use gnulib module closedir for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Return the file descriptor associated with the given directory stream, ++ or -1 if none exists. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef dirfd ++# define dirfd rpl_dirfd ++# endif ++_GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (dirfd, int, (DIR *)); ++ ++# ifdef __KLIBC__ ++/* Gnulib internal hooks needed to maintain the dirfd metadata. */ ++_GL_EXTERN_C int _gl_register_dirp_fd (int fd, DIR *dirp) ++ _GL_ARG_NONNULL ((2)); ++_GL_EXTERN_C void _gl_unregister_dirp_fd (int fd); ++# endif ++# else ++# if defined __cplusplus && defined GNULIB_NAMESPACE && defined dirfd ++ /* dirfd is defined as a macro and not as a function. ++ Turn it into a function and get rid of the macro. */ ++static inline int (dirfd) (DIR *dp) { return dirfd (dp); } ++# undef dirfd ++# endif ++# if !(0 || defined dirfd) ++_GL_FUNCDECL_SYS (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (dirfd, int, (DIR *)); ++# endif ++_GL_CXXALIASWARN (dirfd); ++#elif defined GNULIB_POSIXCHECK ++# undef dirfd ++# if HAVE_RAW_DECL_DIRFD ++_GL_WARN_ON_USE (dirfd, "dirfd is unportable - " ++ "use gnulib module dirfd for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Open a directory stream visiting the given directory file ++ descriptor. Return NULL and set errno if fd is not visiting a ++ directory. On success, this function consumes fd (it will be ++ implicitly closed either by this function or by a subsequent ++ closedir). */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fdopendir ++# define fdopendir rpl_fdopendir ++# endif ++_GL_FUNCDECL_RPL (fdopendir, DIR *, (int fd)); ++_GL_CXXALIAS_RPL (fdopendir, DIR *, (int fd)); ++# else ++# if !1 || !1 ++_GL_FUNCDECL_SYS (fdopendir, DIR *, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (fdopendir, DIR *, (int fd)); ++# endif ++_GL_CXXALIASWARN (fdopendir); ++#elif defined GNULIB_POSIXCHECK ++# undef fdopendir ++# if HAVE_RAW_DECL_FDOPENDIR ++_GL_WARN_ON_USE (fdopendir, "fdopendir is unportable - " ++ "use gnulib module fdopendir for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Scan the directory DIR, calling FILTER on each directory entry. ++ Entries for which FILTER returns nonzero are individually malloc'd, ++ sorted using qsort with CMP, and collected in a malloc'd array in ++ *NAMELIST. Returns the number of entries selected, or -1 on error. */ ++# if !1 ++_GL_FUNCDECL_SYS (scandir, int, ++ (const char *dir, struct dirent ***namelist, ++ int (*filter) (const struct dirent *), ++ int (*cmp) (const struct dirent **, const struct dirent **)) ++ _GL_ARG_NONNULL ((1, 2, 4))); ++# endif ++/* Need to cast, because on glibc systems, the fourth parameter is ++ int (*cmp) (const void *, const void *). */ ++_GL_CXXALIAS_SYS_CAST (scandir, int, ++ (const char *dir, struct dirent ***namelist, ++ int (*filter) (const struct dirent *), ++ int (*cmp) (const struct dirent **, const struct dirent **))); ++_GL_CXXALIASWARN (scandir); ++#elif defined GNULIB_POSIXCHECK ++# undef scandir ++# if HAVE_RAW_DECL_SCANDIR ++_GL_WARN_ON_USE (scandir, "scandir is unportable - " ++ "use gnulib module scandir for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Compare two 'struct dirent' entries alphabetically. */ ++# if !1 ++_GL_FUNCDECL_SYS (alphasort, int, ++ (const struct dirent **, const struct dirent **) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++/* Need to cast, because on glibc systems, the parameters are ++ (const void *, const void *). */ ++_GL_CXXALIAS_SYS_CAST (alphasort, int, ++ (const struct dirent **, const struct dirent **)); ++_GL_CXXALIASWARN (alphasort); ++#elif defined GNULIB_POSIXCHECK ++# undef alphasort ++# if HAVE_RAW_DECL_ALPHASORT ++_GL_WARN_ON_USE (alphasort, "alphasort is unportable - " ++ "use gnulib module alphasort for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_DIRENT_H */ ++#endif /* _GL_DIRENT_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/errno.h gettext-0.19/gettext-tools/gnulib-lib/msvc/errno.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/errno.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/errno.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,280 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A POSIX-like . ++ ++ Copyright (C) 2008-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_ERRNO_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(errno.h) ++ ++#ifndef _GL_ERRNO_H ++#define _GL_ERRNO_H ++ ++ ++/* On native Windows platforms, many macros are not defined. */ ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++/* These are the same values as defined by MSVC 10, for interoperability. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 122 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 111 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 121 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 134 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 104 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 132 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 129 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 117 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 106 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 105 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++# ifndef EOWNERDEAD ++# define EOWNERDEAD 133 ++# define GNULIB_defined_EOWNERDEAD 1 ++# endif ++ ++# ifndef ENOTRECOVERABLE ++# define ENOTRECOVERABLE 127 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EINPROGRESS ++# define EINPROGRESS 112 ++# define EALREADY 103 ++# define ENOTSOCK 128 ++# define EDESTADDRREQ 109 ++# define EMSGSIZE 115 ++# define EPROTOTYPE 136 ++# define ENOPROTOOPT 123 ++# define EPROTONOSUPPORT 135 ++# define EOPNOTSUPP 130 ++# define EAFNOSUPPORT 102 ++# define EADDRINUSE 100 ++# define EADDRNOTAVAIL 101 ++# define ENETDOWN 116 ++# define ENETUNREACH 118 ++# define ECONNRESET 108 ++# define ENOBUFS 119 ++# define EISCONN 113 ++# define ENOTCONN 126 ++# define ETIMEDOUT 138 ++# define ECONNREFUSED 107 ++# define ELOOP 114 ++# define EHOSTUNREACH 110 ++# define EWOULDBLOCK 140 ++# define GNULIB_defined_ESOCK 1 ++# endif ++ ++# ifndef ETXTBSY ++# define ETXTBSY 139 ++# define ENODATA 120 /* not required by POSIX */ ++# define ENOSR 124 /* not required by POSIX */ ++# define ENOSTR 125 /* not required by POSIX */ ++# define ETIME 137 /* not required by POSIX */ ++# define EOTHER 131 /* not required by POSIX */ ++# define GNULIB_defined_ESTREAMS 1 ++# endif ++ ++/* These are intentionally the same values as the WSA* error numbers, defined ++ in . */ ++# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ ++# define EPFNOSUPPORT 10046 /* not required by POSIX */ ++# define ESHUTDOWN 10058 /* not required by POSIX */ ++# define ETOOMANYREFS 10059 /* not required by POSIX */ ++# define EHOSTDOWN 10064 /* not required by POSIX */ ++# define EPROCLIM 10067 /* not required by POSIX */ ++# define EUSERS 10068 /* not required by POSIX */ ++# define EDQUOT 10069 ++# define ESTALE 10070 ++# define EREMOTE 10071 /* not required by POSIX */ ++# define GNULIB_defined_EWINSOCK 1 ++ ++# endif ++ ++ ++/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros ++ EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ ++# if 0 ++# define EMULTIHOP ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++# if 0 ++# define ENOLINK ++# define GNULIB_defined_ENOLINK 1 ++# endif ++# if 0 ++# define EOVERFLOW ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++ ++/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, ++ EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. ++ Likewise, on NonStop Kernel, EDQUOT is not defined. ++ Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, ++ HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. ++ ++ Note: When one of these systems defines some of these macros some day, ++ binaries will have to be recompiled so that they recognizes the new ++ errno values from the system. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 2000 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 2001 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 2002 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 2003 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EMULTIHOP ++# define EMULTIHOP 2004 ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 2005 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 2006 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 2007 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 2011 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 2012 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ESTALE ++# define ESTALE 2009 ++# define GNULIB_defined_ESTALE 1 ++# endif ++ ++# ifndef EDQUOT ++# define EDQUOT 2010 ++# define GNULIB_defined_EDQUOT 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 2008 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not ++ defined. */ ++ ++# ifndef EOWNERDEAD ++# if defined __sun ++ /* Use the same values as defined for Solaris >= 8, for ++ interoperability. */ ++# define EOWNERDEAD 58 ++# define ENOTRECOVERABLE 59 ++# elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ /* We have a conflict here: pthreads-win32 defines these values ++ differently than MSVC 10. It's hairy to decide which one to use. */ ++# if defined __MINGW32__ && !defined USE_WINDOWS_THREADS ++ /* Use the same values as defined by pthreads-win32, for ++ interoperability. */ ++# define EOWNERDEAD 43 ++# define ENOTRECOVERABLE 44 ++# else ++ /* Use the same values as defined by MSVC 10, for ++ interoperability. */ ++# define EOWNERDEAD 133 ++# define ENOTRECOVERABLE 127 ++# endif ++# else ++# define EOWNERDEAD 2013 ++# define ENOTRECOVERABLE 2014 ++# endif ++# define GNULIB_defined_EOWNERDEAD 1 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EILSEQ ++# define EILSEQ 2015 ++# define GNULIB_defined_EILSEQ 1 ++# endif ++ ++#endif /* _GL_ERRNO_H */ ++#endif /* _GL_ERRNO_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/fcntl.h gettext-0.19/gettext-tools/gnulib-lib/msvc/fcntl.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/fcntl.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/fcntl.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,675 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Like , but with non-working flags defined to 0. ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++/* written by Paul Eggert */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_fcntl_h ++/* Special invocation convention. */ ++ ++/* Needed before . ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++/* On some systems other than glibc, is a prerequisite of ++ . On glibc systems, we would like to avoid namespace pollution. ++ But on glibc systems, includes inside an ++ extern "C" { ... } block, which leads to errors in C++ mode with the ++ overridden from gnulib. These errors are known to be gone ++ with g++ version >= 4.3. */ ++#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) ++# include ++#endif ++#include MSVC_INCLUDE(fcntl.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_FCNTL_H ++ ++/* Needed before . ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++/* On some systems other than glibc, is a prerequisite of ++ . On glibc systems, we would like to avoid namespace pollution. ++ But on glibc systems, includes inside an ++ extern "C" { ... } block, which leads to errors in C++ mode with the ++ overridden from gnulib. These errors are known to be gone ++ with g++ version >= 4.3. */ ++#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) ++# include ++#endif ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(fcntl.h) ++ ++#ifndef _GL_FCNTL_H ++#define _GL_FCNTL_H ++ ++#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */ ++# include ++#endif ++ ++/* Native Windows platforms declare open(), creat() in . */ ++#if (1 || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Declare overridden functions. */ ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fcntl ++# define fcntl rpl_fcntl ++# endif ++_GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...)); ++_GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...)); ++# endif ++_GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...)); ++# endif ++_GL_CXXALIASWARN (fcntl); ++#elif defined GNULIB_POSIXCHECK ++# undef fcntl ++# if HAVE_RAW_DECL_FCNTL ++_GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - " ++ "use gnulib module fcntl for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef open ++# define open rpl_open ++# endif ++_GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++# else ++_GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++# endif ++/* On HP-UX 11, in C++ mode, open() is defined as an inline function with a ++ default argument. _GL_CXXALIASWARN does not work in this case. */ ++# if !defined __hpux ++_GL_CXXALIASWARN (open); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef open ++/* Assume open is always declared. */ ++_GL_WARN_ON_USE (open, "open is not always POSIX compliant - " ++ "use gnulib module open for portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef openat ++# define openat rpl_openat ++# endif ++_GL_FUNCDECL_RPL (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...)); ++# endif ++_GL_CXXALIASWARN (openat); ++#elif defined GNULIB_POSIXCHECK ++# undef openat ++# if HAVE_RAW_DECL_OPENAT ++_GL_WARN_ON_USE (openat, "openat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++/* Fix up the FD_* macros, only known to be missing on mingw. */ ++ ++#ifndef FD_CLOEXEC ++# define FD_CLOEXEC 1 ++#endif ++ ++/* Fix up the supported F_* macros. Intentionally leave other F_* ++ macros undefined. Only known to be missing on mingw. */ ++ ++#ifndef F_DUPFD_CLOEXEC ++# define F_DUPFD_CLOEXEC 0x40000000 ++/* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */ ++# define GNULIB_defined_F_DUPFD_CLOEXEC 1 ++#else ++# define GNULIB_defined_F_DUPFD_CLOEXEC 0 ++#endif ++ ++#ifndef F_DUPFD ++# define F_DUPFD 1 ++#endif ++ ++#ifndef F_GETFD ++# define F_GETFD 2 ++#endif ++ ++/* Fix up the O_* macros. */ ++ ++/* AIX 7.1 with XL C 12.1 defines O_CLOEXEC, O_NOFOLLOW, and O_TTY_INIT ++ to values outside 'int' range, so omit these misdefinitions. ++ But avoid namespace pollution on non-AIX systems. */ ++#ifdef _AIX ++# include ++# if defined O_CLOEXEC && ! (INT_MIN <= O_CLOEXEC && O_CLOEXEC <= INT_MAX) ++# undef O_CLOEXEC ++# endif ++# if defined O_NOFOLLOW && ! (INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) ++# undef O_NOFOLLOW ++# endif ++# if defined O_TTY_INIT && ! (INT_MIN <= O_TTY_INIT && O_TTY_INIT <= INT_MAX) ++# undef O_TTY_INIT ++# endif ++#endif ++ ++#if !defined O_DIRECT && defined O_DIRECTIO ++/* Tru64 spells it 'O_DIRECTIO'. */ ++# define O_DIRECT O_DIRECTIO ++#endif ++ ++#if !defined O_CLOEXEC && defined O_NOINHERIT ++/* Mingw spells it 'O_NOINHERIT'. */ ++# define O_CLOEXEC O_NOINHERIT ++#endif ++ ++#ifndef O_CLOEXEC ++# define O_CLOEXEC 0 ++#endif ++ ++#ifndef O_DIRECT ++# define O_DIRECT 0 ++#endif ++ ++#ifndef O_DIRECTORY ++# define O_DIRECTORY 0 ++#endif ++ ++#ifndef O_DSYNC ++# define O_DSYNC 0 ++#endif ++ ++#ifndef O_EXEC ++# define O_EXEC O_RDONLY /* This is often close enough in older systems. */ ++#endif ++ ++#ifndef O_IGNORE_CTTY ++# define O_IGNORE_CTTY 0 ++#endif ++ ++#ifndef O_NDELAY ++# define O_NDELAY 0 ++#endif ++ ++#ifndef O_NOATIME ++# define O_NOATIME 0 ++#endif ++ ++#ifndef O_NONBLOCK ++# define O_NONBLOCK O_NDELAY ++#endif ++ ++/* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero ++ value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY ++ or to 0 as fallback. */ ++#if 0 ++# if O_NONBLOCK ++# define GNULIB_defined_O_NONBLOCK 0 ++# else ++# define GNULIB_defined_O_NONBLOCK 1 ++# undef O_NONBLOCK ++# define O_NONBLOCK 0x40000000 ++# endif ++#endif ++ ++#ifndef O_NOCTTY ++# define O_NOCTTY 0 ++#endif ++ ++#ifndef O_NOFOLLOW ++# define O_NOFOLLOW 0 ++#endif ++ ++#ifndef O_NOLINK ++# define O_NOLINK 0 ++#endif ++ ++#ifndef O_NOLINKS ++# define O_NOLINKS 0 ++#endif ++ ++#ifndef O_NOTRANS ++# define O_NOTRANS 0 ++#endif ++ ++#ifndef O_RSYNC ++# define O_RSYNC 0 ++#endif ++ ++#ifndef O_SEARCH ++# define O_SEARCH O_RDONLY /* This is often close enough in older systems. */ ++#endif ++ ++#ifndef O_SYNC ++# define O_SYNC 0 ++#endif ++ ++#ifndef O_TTY_INIT ++# define O_TTY_INIT 0 ++#endif ++ ++#if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) ++# undef O_ACCMODE ++# define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) ++#endif ++ ++/* For systems that distinguish between text and binary I/O. ++ O_BINARY is usually declared in fcntl.h */ ++#if !defined O_BINARY && defined _O_BINARY ++ /* For MSC-compatible compilers. */ ++# define O_BINARY _O_BINARY ++# define O_TEXT _O_TEXT ++#endif ++ ++#if defined __BEOS__ || defined __HAIKU__ ++ /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */ ++# undef O_BINARY ++# undef O_TEXT ++#endif ++ ++#ifndef O_BINARY ++# define O_BINARY 0 ++# define O_TEXT 0 ++#endif ++ ++/* Fix up the AT_* macros. */ ++ ++/* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its ++ value exceeds INT_MAX, so its use as an int doesn't conform to the ++ C standard, and GCC and Sun C complain in some cases. If the bug ++ is present, undef AT_FDCWD here, so it can be redefined below. */ ++#if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553 ++# undef AT_FDCWD ++#endif ++ ++/* Use the same bit pattern as Solaris 9, but with the proper ++ signedness. The bit pattern is important, in case this actually is ++ Solaris with the above workaround. */ ++#ifndef AT_FDCWD ++# define AT_FDCWD (-3041965) ++#endif ++ ++/* Use the same values as Solaris 9. This shouldn't matter, but ++ there's no real reason to differ. */ ++#ifndef AT_SYMLINK_NOFOLLOW ++# define AT_SYMLINK_NOFOLLOW 4096 ++#endif ++ ++#ifndef AT_REMOVEDIR ++# define AT_REMOVEDIR 1 ++#endif ++ ++/* Solaris 9 lacks these two, so just pick unique values. */ ++#ifndef AT_SYMLINK_FOLLOW ++# define AT_SYMLINK_FOLLOW 2 ++#endif ++ ++#ifndef AT_EACCESS ++# define AT_EACCESS 4 ++#endif ++ ++ ++#endif /* _GL_FCNTL_H */ ++#endif /* _GL_FCNTL_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/fnmatch.h gettext-0.19/gettext-tools/gnulib-lib/msvc/fnmatch.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/fnmatch.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/fnmatch.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,78 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Copyright (C) 1991-1993, 1996-1999, 2001-2003, 2005, 2007, 2009-2016 Free ++ Software Foundation, Inc. ++ ++ This file is part of the GNU C Library. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _FNMATCH_H ++#define _FNMATCH_H 1 ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* We #undef these before defining them because some losing systems ++ (HP-UX A.08.07 for example) define these in . */ ++#undef FNM_PATHNAME ++#undef FNM_NOESCAPE ++#undef FNM_PERIOD ++ ++/* Bits set in the FLAGS argument to 'fnmatch'. */ ++#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match '/'. */ ++#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ ++#define FNM_PERIOD (1 << 2) /* Leading '.' is matched only explicitly. */ ++ ++#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE ++# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ ++# define FNM_LEADING_DIR (1 << 3) /* Ignore '/...' after a match. */ ++# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ ++# define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */ ++#endif ++ ++/* Value returned by 'fnmatch' if STRING does not match PATTERN. */ ++#define FNM_NOMATCH 1 ++ ++/* This value is returned if the implementation does not support ++ 'fnmatch'. Since this is not the case here it will never be ++ returned but the conformance test suites still require the symbol ++ to be defined. */ ++#ifdef _XOPEN_SOURCE ++# define FNM_NOSYS (-1) ++#endif ++ ++/* Match NAME against the file name pattern PATTERN, ++ returning zero if it matches, FNM_NOMATCH if not. */ ++extern int fnmatch (const char *__pattern, const char *__name, ++ int __flags) ++ _GL_ARG_NONNULL ((1, 2)); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* fnmatch.h */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/getopt.h gettext-0.19/gettext-tools/gnulib-lib/msvc/getopt.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/getopt.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/getopt.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,274 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Declarations for getopt. ++ Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2016 Free Software ++ Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GL_GETOPT_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. We must ++ also inform the replacement unistd.h to not recursively use ++ ; our definitions will be present soon enough. */ ++#if 0 ++# define _GL_SYSTEM_GETOPT ++# include ++# undef _GL_SYSTEM_GETOPT ++#endif ++ ++#ifndef _GL_GETOPT_H ++ ++#ifndef __need_getopt ++# define _GL_GETOPT_H 1 ++#endif ++ ++/* Ensure that DLL_VARIABLE is defined. Since on OSF/1 4.0 and Irix 6.5 ++ includes , and is not a prerequisite for ++ using , this file can be included without a prior ++ "#include ". */ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++/* Standalone applications should #define __GETOPT_PREFIX to an ++ identifier that prefixes the external functions and variables ++ defined in this header. When this happens, include the ++ headers that might declare getopt so that they will not cause ++ confusion if included after this file (if the system had , ++ we have already included it). Then systematically rename ++ identifiers so that they do not collide with the system functions ++ and variables. Renaming avoids problems with some compilers and ++ linkers. */ ++#if defined __GETOPT_PREFIX && !defined __need_getopt ++# if !0 ++# define __need_system_stdlib_h ++# include ++# undef __need_system_stdlib_h ++# include ++# include ++# endif ++# undef __need_getopt ++# undef getopt ++# undef getopt_long ++# undef getopt_long_only ++# undef optarg ++# undef opterr ++# undef optind ++# undef optopt ++# undef option ++# define __GETOPT_CONCAT(x, y) x ## y ++# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y) ++# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y) ++# define getopt __GETOPT_ID (getopt) ++# define getopt_long __GETOPT_ID (getopt_long) ++# define getopt_long_only __GETOPT_ID (getopt_long_only) ++# define optarg __GETOPT_ID (optarg) ++# define opterr __GETOPT_ID (opterr) ++# define optind __GETOPT_ID (optind) ++# define optopt __GETOPT_ID (optopt) ++# define option __GETOPT_ID (option) ++# define _getopt_internal __GETOPT_ID (getopt_internal) ++#endif ++ ++/* Standalone applications get correct prototypes for getopt_long and ++ getopt_long_only; they declare "char **argv". libc uses prototypes ++ with "char *const *argv" that are incorrect because getopt_long and ++ getopt_long_only can permute argv; this is required for backward ++ compatibility (e.g., for LSB 2.0.1). ++ ++ This used to be '#if defined __GETOPT_PREFIX && !defined __need_getopt', ++ but it caused redefinition warnings if both unistd.h and getopt.h were ++ included, since unistd.h includes getopt.h having previously defined ++ __need_getopt. ++ ++ The only place where __getopt_argv_const is used is in definitions ++ of getopt_long and getopt_long_only below, but these are visible ++ only if __need_getopt is not defined, so it is quite safe to rewrite ++ the conditional as follows: ++*/ ++#if !defined __need_getopt ++# if defined __GETOPT_PREFIX ++# define __getopt_argv_const /* empty */ ++# else ++# define __getopt_argv_const const ++# endif ++#endif ++ ++/* If __GNU_LIBRARY__ is not already defined, either we are being used ++ standalone, or this is the first header included in the source file. ++ If we are being used with glibc, we need to include , but ++ that does not exist if we are standalone. So: if __GNU_LIBRARY__ is ++ not defined, include , which will pull in for us ++ if it's from glibc. (Why ctype.h? It's guaranteed to exist and it ++ doesn't flood the namespace with stuff the way some other headers do.) */ ++#if !defined __GNU_LIBRARY__ ++# include ++#endif ++ ++#ifndef __THROW ++# ifndef __GNUC_PREREQ ++# define __GNUC_PREREQ(maj, min) (0) ++# endif ++# if defined __cplusplus && __GNUC_PREREQ (2,8) ++# define __THROW throw () ++# else ++# define __THROW ++# endif ++#endif ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* For communication from 'getopt' to the caller. ++ When 'getopt' finds an option that takes an argument, ++ the argument value is returned here. ++ Also, when 'ordering' is RETURN_IN_ORDER, ++ each non-option ARGV-element is returned here. */ ++ ++extern DLL_VARIABLE char *optarg; ++ ++/* Index in ARGV of the next element to be scanned. ++ This is used for communication to and from the caller ++ and for communication between successive calls to 'getopt'. ++ ++ On entry to 'getopt', zero means this is the first call; initialize. ++ ++ When 'getopt' returns -1, this is the index of the first of the ++ non-option elements that the caller should itself scan. ++ ++ Otherwise, 'optind' communicates from one call to the next ++ how much of ARGV has been scanned so far. */ ++ ++extern DLL_VARIABLE int optind; ++ ++/* Callers store zero here to inhibit the error message 'getopt' prints ++ for unrecognized options. */ ++ ++extern DLL_VARIABLE int opterr; ++ ++/* Set to an option character which was unrecognized. */ ++ ++extern DLL_VARIABLE int optopt; ++ ++#ifndef __need_getopt ++/* Describe the long-named options requested by the application. ++ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector ++ of 'struct option' terminated by an element containing a name which is ++ zero. ++ ++ The field 'has_arg' is: ++ no_argument (or 0) if the option does not take an argument, ++ required_argument (or 1) if the option requires an argument, ++ optional_argument (or 2) if the option takes an optional argument. ++ ++ If the field 'flag' is not NULL, it points to a variable that is set ++ to the value given in the field 'val' when the option is found, but ++ left unchanged if the option is not found. ++ ++ To have a long-named option do something other than set an 'int' to ++ a compiled-in constant, such as set a value from 'optarg', set the ++ option's 'flag' field to zero and its 'val' field to a nonzero ++ value (the equivalent single-letter option character, if there is ++ one). For long options that have a zero 'flag' field, 'getopt' ++ returns the contents of the 'val' field. */ ++ ++# if !GNULIB_defined_struct_option ++struct option ++{ ++ const char *name; ++ /* has_arg can't be an enum because some compilers complain about ++ type mismatches in all the code that assumes it is an int. */ ++ int has_arg; ++ int *flag; ++ int val; ++}; ++# define GNULIB_defined_struct_option 1 ++# endif ++ ++/* Names for the values of the 'has_arg' field of 'struct option'. */ ++ ++# define no_argument 0 ++# define required_argument 1 ++# define optional_argument 2 ++#endif /* need getopt */ ++ ++ ++/* Get definitions and prototypes for functions to process the ++ arguments in ARGV (ARGC of them, minus the program name) for ++ options given in OPTS. ++ ++ Return the option character from OPTS just read. Return -1 when ++ there are no more options. For unrecognized options, or options ++ missing arguments, 'optopt' is set to the option letter, and '?' is ++ returned. ++ ++ The OPTS string is a list of characters which are recognized option ++ letters, optionally followed by colons, specifying that that letter ++ takes an argument, to be placed in 'optarg'. ++ ++ If a letter in OPTS is followed by two colons, its argument is ++ optional. This behavior is specific to the GNU 'getopt'. ++ ++ The argument '--' causes premature termination of argument ++ scanning, explicitly telling 'getopt' that there are no more ++ options. ++ ++ If OPTS begins with '-', then non-option arguments are treated as ++ arguments to the option '\1'. This behavior is specific to the GNU ++ 'getopt'. If OPTS begins with '+', or POSIXLY_CORRECT is set in ++ the environment, then do not permute arguments. */ ++ ++extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) ++ __THROW _GL_ARG_NONNULL ((2, 3)); ++ ++#ifndef __need_getopt ++extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv, ++ const char *__shortopts, ++ const struct option *__longopts, int *__longind) ++ __THROW _GL_ARG_NONNULL ((2, 3)); ++extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, ++ const char *__shortopts, ++ const struct option *__longopts, int *__longind) ++ __THROW _GL_ARG_NONNULL ((2, 3)); ++ ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++ ++/* Make sure we later can get all the definitions and declarations. */ ++#undef __need_getopt ++ ++#endif /* _GL_GETOPT_H */ ++#endif /* _GL_GETOPT_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/glibconfig.h gettext-0.19/gettext-tools/gnulib-lib/msvc/glibconfig.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/glibconfig.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/glibconfig.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,190 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* GLIB - Library of useful routines for C programming ++ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald ++ * ++ * This library 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 3 of the License, or (at your option) any later version. ++ * ++ * This library 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 this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++/* ++ * Modified by the GLib Team and others 1997-2000. See the AUTHORS ++ * file for a list of people on the GLib Team. See the ChangeLog ++ * files for a list of changes. These files are distributed with ++ * GLib at ftp://ftp.gtk.org/pub/gtk/. ++ */ ++ ++/* ++ * Modified by Bruno Haible for use as a gnulib module. ++ */ ++ ++/* ====================== Substitute for glibconfig.h ====================== */ ++ ++#include ++#include ++#include ++ ++typedef uint16_t guint16; ++typedef uint32_t guint32; ++ ++typedef size_t gsize; ++typedef ssize_t gssize; ++ ++#define GPOINTER_TO_INT(p) ((gint) (intptr_t) (p)) ++#define GPOINTER_TO_UINT(p) ((guint) (uintptr_t) (p)) ++ ++#define GINT_TO_POINTER(i) ((gpointer) (intptr_t) (i)) ++#define GUINT_TO_POINTER(u) ((gpointer) (uintptr_t) (u)) ++ ++#define g_memmove memmove ++ ++/* ================ Abridged version of for ================ */ ++ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++#define G_GNUC_PURE \ ++ __attribute__((__pure__)) ++#define G_GNUC_MALLOC \ ++ __attribute__((__malloc__)) ++#else ++#define G_GNUC_PURE ++#define G_GNUC_MALLOC ++#endif ++ ++#if __GNUC__ >= 4 ++#define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__)) ++#else ++#define G_GNUC_NULL_TERMINATED ++#endif ++ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) ++#define G_GNUC_PRINTF( format_idx, arg_idx ) \ ++ __attribute__((__format__ (__printf__, format_idx, arg_idx))) ++#define G_GNUC_SCANF( format_idx, arg_idx ) \ ++ __attribute__((__format__ (__scanf__, format_idx, arg_idx))) ++#define G_GNUC_FORMAT( arg_idx ) \ ++ __attribute__((__format_arg__ (arg_idx))) ++#define G_GNUC_NORETURN \ ++ __attribute__((__noreturn__)) ++#define G_GNUC_CONST \ ++ __attribute__((__const__)) ++#define G_GNUC_UNUSED \ ++ __attribute__((__unused__)) ++#define G_GNUC_NO_INSTRUMENT \ ++ __attribute__((__no_instrument_function__)) ++#else /* !__GNUC__ */ ++#define G_GNUC_PRINTF( format_idx, arg_idx ) ++#define G_GNUC_SCANF( format_idx, arg_idx ) ++#define G_GNUC_FORMAT( arg_idx ) ++#define G_GNUC_NORETURN ++#define G_GNUC_CONST ++#define G_GNUC_UNUSED ++#define G_GNUC_NO_INSTRUMENT ++#endif /* !__GNUC__ */ ++ ++#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) ++#define G_GNUC_WARN_UNUSED_RESULT \ ++ __attribute__((warn_unused_result)) ++#else ++#define G_GNUC_WARN_UNUSED_RESULT ++#endif /* __GNUC__ */ ++ ++#ifdef __cplusplus ++# define G_BEGIN_DECLS extern "C" { ++# define G_END_DECLS } ++#else ++# define G_BEGIN_DECLS ++# define G_END_DECLS ++#endif ++ ++#ifndef FALSE ++#define FALSE (0) ++#endif ++ ++#ifndef TRUE ++#define TRUE (!FALSE) ++#endif ++ ++#undef MAX ++#define MAX(a, b) (((a) > (b)) ? (a) : (b)) ++ ++#undef MIN ++#define MIN(a, b) (((a) < (b)) ? (a) : (b)) ++ ++#define G_STMT_START ++#define G_STMT_END ++ ++/* ====================== Substitute for ====================== */ ++ ++#include "xalloc.h" ++ ++#define g_malloc(n) xmalloc (n) ++#define g_malloc0(n) xzalloc (n) ++#define g_realloc(p,n) xrealloc (p, n) ++#define g_free(p) free (p) ++#define g_try_malloc(n) xmalloc (n) ++#define g_try_malloc0(n) xzalloc (n) ++#define g_try_realloc(p,n) xrealloc (p, n) ++ ++#define g_new(t,n) ((t *) xnmalloc (n, sizeof (t))) ++#define g_new0(t,n) ((t *) xcalloc (n, sizeof (t))) ++#define g_try_new(t,n) ((t *) xnmalloc (n, sizeof (t))) ++#define g_try_new0(t,n) ((t *) xcalloc (n, sizeof (t))) ++ ++/* =================== Substitute for =================== */ ++ ++#include ++ ++#define g_assert(expr) if (!(expr)) abort () ++#define g_assert_not_reached() abort () ++ ++#define g_return_if_fail(expr) if (!(expr)) return ++#define g_return_val_if_fail(expr,val) if (!(expr)) return (val) ++#define g_return_if_reached() return ++#define g_return_val_if_reached(val) return (val) ++ ++#define G_LOG_LEVEL_CRITICAL 0 ++#define G_LOG_LEVEL_INFO 0 ++#define G_LOG_LEVEL_DEBUG 0 ++ ++extern void g_printerr (const char *format, ...) G_GNUC_PRINTF (1, 2); ++extern void g_warning (const char *format, ...) G_GNUC_PRINTF (1, 2); ++extern void g_log (const char *domain, int level, const char *format, ...) G_GNUC_PRINTF (3, 4); ++ ++/* ==================== Substitute for ==================== */ ++ ++#include ++ ++#define g_printf printf ++#define g_fprintf fprintf ++#define g_sprintf sprintf ++#define g_vprintf vprintf ++#define g_vfprintf vfprintf ++#define g_vsprintf vsprintf ++#define g_vasprintf vasprintf ++ ++/* ===================== Substitute for ===================== */ ++ ++#define g_slice_new(t) XMALLOC (t) ++#define g_slice_new0(t) XZALLOC (t) ++ ++#define g_slice_free(t,p) free (p) ++ ++/* ======================= Helper for ======================= */ ++ ++/* We don't need to export variables from a shared library. */ ++#define GLIB_VAR extern ++ ++/* ==================== Substitute for ==================== */ ++ ++typedef unsigned int gunichar; +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/glib.h gettext-0.19/gettext-tools/gnulib-lib/msvc/glib.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/glib.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/glib.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,99 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* GLIB - Library of useful routines for C programming ++ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald ++ * ++ * This library 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 3 of the License, or (at your option) any later version. ++ * ++ * This library 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 this library; if not, write to the ++ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++ ++/* ++ * Modified by the GLib Team and others 1997-2000. See the AUTHORS ++ * file for a list of people on the GLib Team. See the ChangeLog ++ * files for a list of changes. These files are distributed with ++ * GLib at ftp://ftp.gtk.org/pub/gtk/. ++ */ ++ ++/* ++ * Modified by Bruno Haible for use as a gnulib module. ++ */ ++ ++#ifndef __G_LIB_H__ ++#define __G_LIB_H__ ++ ++#if 0 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#endif ++#include ++#if 0 ++#include ++#include ++#include ++#endif ++#include ++#if 0 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#endif ++#include ++#if 0 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#endif ++#include ++#include ++#if 0 ++#include ++#include ++#include ++#include ++#endif ++#include ++#if 0 ++#include ++#include ++#ifdef G_PLATFORM_WIN32 ++#include ++#endif ++#endif ++ ++#endif /* __G_LIB_H__ */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/iconv.h gettext-0.19/gettext-tools/gnulib-lib/msvc/iconv.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/iconv.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/iconv.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,422 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_ICONV_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include <../include/iconv.h> ++ ++#ifndef _GL_ICONV_H ++#define _GL_ICONV_H ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++#if 1 ++# if 0 ++/* An iconv_open wrapper that supports the IANA standardized encoding names ++ ("ISO-8859-1" etc.) as far as possible. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv_open rpl_iconv_open ++# endif ++_GL_FUNCDECL_RPL (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode)); ++# else ++_GL_CXXALIAS_SYS (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode)); ++# endif ++_GL_CXXALIASWARN (iconv_open); ++#endif ++ ++#if 0 ++/* Special constants for supporting UTF-{16,32}{BE,LE} encodings. ++ Not public. */ ++# define _ICONV_UTF8_UTF16BE (iconv_t)(-161) ++# define _ICONV_UTF8_UTF16LE (iconv_t)(-162) ++# define _ICONV_UTF8_UTF32BE (iconv_t)(-163) ++# define _ICONV_UTF8_UTF32LE (iconv_t)(-164) ++# define _ICONV_UTF16BE_UTF8 (iconv_t)(-165) ++# define _ICONV_UTF16LE_UTF8 (iconv_t)(-166) ++# define _ICONV_UTF32BE_UTF8 (iconv_t)(-167) ++# define _ICONV_UTF32LE_UTF8 (iconv_t)(-168) ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv rpl_iconv ++# endif ++_GL_FUNCDECL_RPL (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++_GL_CXXALIAS_RPL (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++# else ++_GL_CXXALIAS_SYS (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++# endif ++_GL_CXXALIASWARN (iconv); ++# ifndef ICONV_CONST ++# define ICONV_CONST ++# endif ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv_close rpl_iconv_close ++# endif ++_GL_FUNCDECL_RPL (iconv_close, int, (iconv_t cd)); ++_GL_CXXALIAS_RPL (iconv_close, int, (iconv_t cd)); ++# else ++_GL_CXXALIAS_SYS (iconv_close, int, (iconv_t cd)); ++# endif ++_GL_CXXALIASWARN (iconv_close); ++#endif ++ ++ ++#endif /* _GL_ICONV_H */ ++#endif /* _GL_ICONV_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/langinfo.h gettext-0.19/gettext-tools/gnulib-lib/msvc/langinfo.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/langinfo.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/langinfo.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,496 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Substitute for and wrapper around . ++ Copyright (C) 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* ++ * POSIX for platforms that lack it or have an incomplete one. ++ * ++ */ ++ ++#ifndef _GL_LANGINFO_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_LANGINFO_H ++#define _GL_LANGINFO_H ++ ++ ++#if !0 ++ ++/* A platform that lacks . */ ++ ++/* Assume that it also lacks and the nl_item type. */ ++# if !GNULIB_defined_nl_item ++typedef int nl_item; ++# define GNULIB_defined_nl_item 1 ++# endif ++ ++/* nl_langinfo items of the LC_CTYPE category */ ++# define CODESET 10000 ++/* nl_langinfo items of the LC_NUMERIC category */ ++# define RADIXCHAR 10001 ++# define DECIMAL_POINT RADIXCHAR ++# define THOUSEP 10002 ++# define THOUSANDS_SEP THOUSEP ++# define GROUPING 10114 ++/* nl_langinfo items of the LC_TIME category */ ++# define D_T_FMT 10003 ++# define D_FMT 10004 ++# define T_FMT 10005 ++# define T_FMT_AMPM 10006 ++# define AM_STR 10007 ++# define PM_STR 10008 ++# define DAY_1 10009 ++# define DAY_2 (DAY_1 + 1) ++# define DAY_3 (DAY_1 + 2) ++# define DAY_4 (DAY_1 + 3) ++# define DAY_5 (DAY_1 + 4) ++# define DAY_6 (DAY_1 + 5) ++# define DAY_7 (DAY_1 + 6) ++# define ABDAY_1 10016 ++# define ABDAY_2 (ABDAY_1 + 1) ++# define ABDAY_3 (ABDAY_1 + 2) ++# define ABDAY_4 (ABDAY_1 + 3) ++# define ABDAY_5 (ABDAY_1 + 4) ++# define ABDAY_6 (ABDAY_1 + 5) ++# define ABDAY_7 (ABDAY_1 + 6) ++# define MON_1 10023 ++# define MON_2 (MON_1 + 1) ++# define MON_3 (MON_1 + 2) ++# define MON_4 (MON_1 + 3) ++# define MON_5 (MON_1 + 4) ++# define MON_6 (MON_1 + 5) ++# define MON_7 (MON_1 + 6) ++# define MON_8 (MON_1 + 7) ++# define MON_9 (MON_1 + 8) ++# define MON_10 (MON_1 + 9) ++# define MON_11 (MON_1 + 10) ++# define MON_12 (MON_1 + 11) ++# define ABMON_1 10035 ++# define ABMON_2 (ABMON_1 + 1) ++# define ABMON_3 (ABMON_1 + 2) ++# define ABMON_4 (ABMON_1 + 3) ++# define ABMON_5 (ABMON_1 + 4) ++# define ABMON_6 (ABMON_1 + 5) ++# define ABMON_7 (ABMON_1 + 6) ++# define ABMON_8 (ABMON_1 + 7) ++# define ABMON_9 (ABMON_1 + 8) ++# define ABMON_10 (ABMON_1 + 9) ++# define ABMON_11 (ABMON_1 + 10) ++# define ABMON_12 (ABMON_1 + 11) ++# define ERA 10047 ++# define ERA_D_FMT 10048 ++# define ERA_D_T_FMT 10049 ++# define ERA_T_FMT 10050 ++# define ALT_DIGITS 10051 ++/* nl_langinfo items of the LC_MONETARY category */ ++# define CRNCYSTR 10052 ++# define CURRENCY_SYMBOL CRNCYSTR ++# define INT_CURR_SYMBOL 10100 ++# define MON_DECIMAL_POINT 10101 ++# define MON_THOUSANDS_SEP 10102 ++# define MON_GROUPING 10103 ++# define POSITIVE_SIGN 10104 ++# define NEGATIVE_SIGN 10105 ++# define FRAC_DIGITS 10106 ++# define INT_FRAC_DIGITS 10107 ++# define P_CS_PRECEDES 10108 ++# define N_CS_PRECEDES 10109 ++# define P_SEP_BY_SPACE 10110 ++# define N_SEP_BY_SPACE 10111 ++# define P_SIGN_POSN 10112 ++# define N_SIGN_POSN 10113 ++/* nl_langinfo items of the LC_MESSAGES category */ ++# define YESEXPR 10053 ++# define NOEXPR 10054 ++ ++#else ++ ++/* A platform that has . */ ++ ++# if !0 ++# define CODESET 10000 ++# define GNULIB_defined_CODESET 1 ++# endif ++ ++# if !0 ++# define T_FMT_AMPM 10006 ++# define GNULIB_defined_T_FMT_AMPM 1 ++# endif ++ ++# if !0 ++# define ERA 10047 ++# define ERA_D_FMT 10048 ++# define ERA_D_T_FMT 10049 ++# define ERA_T_FMT 10050 ++# define ALT_DIGITS 10051 ++# define GNULIB_defined_ERA 1 ++# endif ++ ++# if !0 ++# define YESEXPR 10053 ++# define NOEXPR 10054 ++# define GNULIB_defined_YESEXPR 1 ++# endif ++ ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Declare overridden functions. */ ++ ++ ++/* Return a piece of locale dependent information. ++ Note: The difference between nl_langinfo (CODESET) and locale_charset () ++ is that the latter normalizes the encoding names to GNU conventions. */ ++ ++#if IN_GETTEXT_TOOLS_LIBGREP ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef nl_langinfo ++# define nl_langinfo rpl_nl_langinfo ++# endif ++_GL_FUNCDECL_RPL (nl_langinfo, char *, (nl_item item)); ++_GL_CXXALIAS_RPL (nl_langinfo, char *, (nl_item item)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (nl_langinfo, char *, (nl_item item)); ++# endif ++_GL_CXXALIAS_SYS (nl_langinfo, char *, (nl_item item)); ++# endif ++_GL_CXXALIASWARN (nl_langinfo); ++#elif defined GNULIB_POSIXCHECK ++# undef nl_langinfo ++# if HAVE_RAW_DECL_NL_LANGINFO ++_GL_WARN_ON_USE (nl_langinfo, "nl_langinfo is not portable - " ++ "use gnulib module nl_langinfo for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_LANGINFO_H */ ++#endif /* _GL_LANGINFO_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/locale.h gettext-0.19/gettext-tools/gnulib-lib/msvc/locale.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/locale.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/locale.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,528 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A POSIX . ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifdef _GL_ALREADY_INCLUDING_LOCALE_H ++ ++/* Special invocation conventions to handle Solaris header files ++ (through Solaris 10) when combined with gettext's libintl.h. */ ++ ++#include MSVC_INCLUDE(locale.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_LOCALE_H ++ ++#define _GL_ALREADY_INCLUDING_LOCALE_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(locale.h) ++ ++#undef _GL_ALREADY_INCLUDING_LOCALE_H ++ ++#ifndef _GL_LOCALE_H ++#define _GL_LOCALE_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* Mac OS X 10.5 defines the locale_t type in . */ ++#if 0 ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C. ++ On systems that don't define it, use the same value as GNU libintl. */ ++#if !defined LC_MESSAGES ++# define LC_MESSAGES 1729 ++#endif ++ ++/* Bionic libc's 'struct lconv' is just a dummy. */ ++#if 1 ++# define lconv rpl_lconv ++struct lconv ++{ ++ /* All 'char *' are actually 'const char *'. */ ++ ++ /* Members that depend on the LC_NUMERIC category of the locale. See ++ */ ++ ++ /* Symbol used as decimal point. */ ++ char *decimal_point; ++ /* Symbol used to separate groups of digits to the left of the decimal ++ point. */ ++ char *thousands_sep; ++ /* Definition of the size of groups of digits to the left of the decimal ++ point. */ ++ char *grouping; ++ ++ /* Members that depend on the LC_MONETARY category of the locale. See ++ */ ++ ++ /* Symbol used as decimal point. */ ++ char *mon_decimal_point; ++ /* Symbol used to separate groups of digits to the left of the decimal ++ point. */ ++ char *mon_thousands_sep; ++ /* Definition of the size of groups of digits to the left of the decimal ++ point. */ ++ char *mon_grouping; ++ /* Sign used to indicate a value >= 0. */ ++ char *positive_sign; ++ /* Sign used to indicate a value < 0. */ ++ char *negative_sign; ++ ++ /* For formatting local currency. */ ++ /* Currency symbol (3 characters) followed by separator (1 character). */ ++ char *currency_symbol; ++ /* Number of digits after the decimal point. */ ++ char frac_digits; ++ /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char p_cs_precedes; ++ /* For values >= 0: Position of the sign. */ ++ char p_sign_posn; ++ /* For values >= 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char p_sep_by_space; ++ /* For values < 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char n_cs_precedes; ++ /* For values < 0: Position of the sign. */ ++ char n_sign_posn; ++ /* For values < 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char n_sep_by_space; ++ ++ /* For formatting international currency. */ ++ /* Currency symbol (3 characters) followed by separator (1 character). */ ++ char *int_curr_symbol; ++ /* Number of digits after the decimal point. */ ++ char int_frac_digits; ++ /* For values >= 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char int_p_cs_precedes; ++ /* For values >= 0: Position of the sign. */ ++ char int_p_sign_posn; ++ /* For values >= 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char int_p_sep_by_space; ++ /* For values < 0: 1 if the currency symbol precedes the number, 0 if it ++ comes after the number. */ ++ char int_n_cs_precedes; ++ /* For values < 0: Position of the sign. */ ++ char int_n_sign_posn; ++ /* For values < 0: Placement of spaces between currency symbol, sign, and ++ number. */ ++ char int_n_sep_by_space; ++}; ++#endif ++ ++#if IN_GETTEXT_TOOLS_LIBGREP ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localeconv ++# define localeconv rpl_localeconv ++# endif ++_GL_FUNCDECL_RPL (localeconv, struct lconv *, (void)); ++_GL_CXXALIAS_RPL (localeconv, struct lconv *, (void)); ++# else ++_GL_CXXALIAS_SYS (localeconv, struct lconv *, (void)); ++# endif ++_GL_CXXALIASWARN (localeconv); ++#elif 1 ++# undef localeconv ++# define localeconv localeconv_used_without_requesting_gnulib_module_localeconv ++#elif defined GNULIB_POSIXCHECK ++# undef localeconv ++# if HAVE_RAW_DECL_LOCALECONV ++_GL_WARN_ON_USE (localeconv, ++ "localeconv returns too few information on some platforms - " ++ "use gnulib module localeconv for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setlocale ++# define setlocale rpl_setlocale ++# define GNULIB_defined_setlocale 1 ++# endif ++_GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale)); ++_GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale)); ++# else ++_GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale)); ++# endif ++_GL_CXXALIASWARN (setlocale); ++#elif defined GNULIB_POSIXCHECK ++# undef setlocale ++# if HAVE_RAW_DECL_SETLOCALE ++_GL_WARN_ON_USE (setlocale, "setlocale works differently on native Windows - " ++ "use gnulib module setlocale for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef duplocale ++# define duplocale rpl_duplocale ++# endif ++_GL_FUNCDECL_RPL (duplocale, locale_t, (locale_t locale) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (duplocale, locale_t, (locale_t locale)); ++# else ++# if 1 ++_GL_CXXALIAS_SYS (duplocale, locale_t, (locale_t locale)); ++# endif ++# endif ++# if 1 ++_GL_CXXALIASWARN (duplocale); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef duplocale ++# if HAVE_RAW_DECL_DUPLOCALE ++_GL_WARN_ON_USE (duplocale, "duplocale is buggy on some glibc systems - " ++ "use gnulib module duplocale for portability"); ++# endif ++#endif ++ ++#endif /* _GL_LOCALE_H */ ++#endif /* ! _GL_ALREADY_INCLUDING_LOCALE_H */ ++#endif /* _GL_LOCALE_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/math.h gettext-0.19/gettext-tools/gnulib-lib/msvc/math.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/math.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/math.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,2591 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2002-2003, 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GL_MATH_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(math.h) ++ ++#ifndef _GL_MATH_H ++#define _GL_MATH_H ++ ++#ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++#endif ++_GL_INLINE_HEADER_BEGIN ++#ifndef _GL_MATH_INLINE ++# define _GL_MATH_INLINE _GL_INLINE ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++#ifdef __cplusplus ++/* Helper macros to define type-generic function FUNC as overloaded functions, ++ rather than as macros like in C. POSIX declares these with an argument of ++ real-floating (that is, one of float, double, or long double). */ ++# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \ ++static inline int \ ++_gl_cxx_ ## func ## f (float f) \ ++{ \ ++ return func (f); \ ++} \ ++static inline int \ ++_gl_cxx_ ## func ## d (double d) \ ++{ \ ++ return func (d); \ ++} \ ++static inline int \ ++_gl_cxx_ ## func ## l (long double l) \ ++{ \ ++ return func (l); \ ++} ++# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \ ++inline int \ ++func (float f) \ ++{ \ ++ return _gl_cxx_ ## func ## f (f); \ ++} \ ++inline int \ ++func (double d) \ ++{ \ ++ return _gl_cxx_ ## func ## d (d); \ ++} \ ++inline int \ ++func (long double l) \ ++{ \ ++ return _gl_cxx_ ## func ## l (l); \ ++} ++#endif ++ ++/* Helper macros to define a portability warning for the ++ classification macro FUNC called with VALUE. POSIX declares the ++ classification macros with an argument of real-floating (that is, ++ one of float, double, or long double). */ ++#define _GL_WARN_REAL_FLOATING_DECL(func) \ ++_GL_MATH_INLINE int \ ++rpl_ ## func ## f (float f) \ ++{ \ ++ return func (f); \ ++} \ ++_GL_MATH_INLINE int \ ++rpl_ ## func ## d (double d) \ ++{ \ ++ return func (d); \ ++} \ ++_GL_MATH_INLINE int \ ++rpl_ ## func ## l (long double l) \ ++{ \ ++ return func (l); \ ++} \ ++_GL_WARN_ON_USE (rpl_ ## func ## f, #func " is unportable - " \ ++ "use gnulib module " #func " for portability"); \ ++_GL_WARN_ON_USE (rpl_ ## func ## d, #func " is unportable - " \ ++ "use gnulib module " #func " for portability"); \ ++_GL_WARN_ON_USE (rpl_ ## func ## l, #func " is unportable - " \ ++ "use gnulib module " #func " for portability") ++#define _GL_WARN_REAL_FLOATING_IMPL(func, value) \ ++ (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value) \ ++ : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value) \ ++ : rpl_ ## func ## l (value)) ++ ++ ++#if 0 ++/* Pull in a function that fixes the 'int' to 'long double' conversion ++ of glibc 2.7. */ ++_GL_EXTERN_C void _Qp_itoq (long double *, int); ++static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq; ++#endif ++ ++ ++/* POSIX allows platforms that don't support NAN. But all major ++ machines in the past 15 years have supported something close to ++ IEEE NaN, so we define this unconditionally. We also must define ++ it on platforms like Solaris 10, where NAN is present but defined ++ as a function pointer rather than a floating point constant. */ ++#if !defined NAN || 0 ++# if !GNULIB_defined_NAN ++# undef NAN ++ /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler ++ choke on the expression 0.0 / 0.0. */ ++# if defined __DECC || defined _MSC_VER ++_GL_MATH_INLINE float ++_NaN () ++{ ++ static float zero = 0.0f; ++ return zero / zero; ++} ++# define NAN (_NaN()) ++# else ++# define NAN (0.0f / 0.0f) ++# endif ++# define GNULIB_defined_NAN 1 ++# endif ++#endif ++ ++/* Solaris 10 defines HUGE_VAL, but as a function pointer rather ++ than a floating point constant. */ ++#if 0 ++# undef HUGE_VALF ++# define HUGE_VALF (1.0f / 0.0f) ++# undef HUGE_VAL ++# define HUGE_VAL (1.0 / 0.0) ++# undef HUGE_VALL ++# define HUGE_VALL (1.0L / 0.0L) ++#endif ++ ++/* HUGE_VALF is a 'float' Infinity. */ ++#ifndef HUGE_VALF ++# if defined _MSC_VER ++/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */ ++# define HUGE_VALF (1e25f * 1e25f) ++# else ++# define HUGE_VALF (1.0f / 0.0f) ++# endif ++#endif ++ ++/* HUGE_VAL is a 'double' Infinity. */ ++#ifndef HUGE_VAL ++# if defined _MSC_VER ++/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ ++# define HUGE_VAL (1e250 * 1e250) ++# else ++# define HUGE_VAL (1.0 / 0.0) ++# endif ++#endif ++ ++/* HUGE_VALL is a 'long double' Infinity. */ ++#ifndef HUGE_VALL ++# if defined _MSC_VER ++/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */ ++# define HUGE_VALL (1e250L * 1e250L) ++# else ++# define HUGE_VALL (1.0L / 0.0L) ++# endif ++#endif ++ ++ ++/* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined. */ ++#if !(defined FP_ILOGB0 && defined FP_ILOGBNAN) ++# if defined __NetBSD__ || defined __sgi ++ /* NetBSD, IRIX 6.5: match what ilogb() does */ ++# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ ++# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ ++# elif defined _AIX ++ /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */ ++# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ ++# define FP_ILOGBNAN 2147483647 /* INT_MAX */ ++# elif defined __sun ++ /* Solaris 9: match what ilogb() does */ ++# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ ++# define FP_ILOGBNAN 2147483647 /* INT_MAX */ ++# else ++ /* Gnulib defined values. */ ++# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ ++# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef acosf ++_GL_FUNCDECL_SYS (acosf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (acosf, float, (float x)); ++_GL_CXXALIASWARN (acosf); ++#elif defined GNULIB_POSIXCHECK ++# undef acosf ++# if HAVE_RAW_DECL_ACOSF ++_GL_WARN_ON_USE (acosf, "acosf is unportable - " ++ "use gnulib module acosf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 || !1 ++# undef acosl ++_GL_FUNCDECL_SYS (acosl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (acosl, long double, (long double x)); ++_GL_CXXALIASWARN (acosl); ++#elif defined GNULIB_POSIXCHECK ++# undef acosl ++# if HAVE_RAW_DECL_ACOSL ++_GL_WARN_ON_USE (acosl, "acosl is unportable - " ++ "use gnulib module acosl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef asinf ++_GL_FUNCDECL_SYS (asinf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (asinf, float, (float x)); ++_GL_CXXALIASWARN (asinf); ++#elif defined GNULIB_POSIXCHECK ++# undef asinf ++# if HAVE_RAW_DECL_ASINF ++_GL_WARN_ON_USE (asinf, "asinf is unportable - " ++ "use gnulib module asinf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 || !1 ++# undef asinl ++_GL_FUNCDECL_SYS (asinl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (asinl, long double, (long double x)); ++_GL_CXXALIASWARN (asinl); ++#elif defined GNULIB_POSIXCHECK ++# undef asinl ++# if HAVE_RAW_DECL_ASINL ++_GL_WARN_ON_USE (asinl, "asinl is unportable - " ++ "use gnulib module asinl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef atanf ++_GL_FUNCDECL_SYS (atanf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (atanf, float, (float x)); ++_GL_CXXALIASWARN (atanf); ++#elif defined GNULIB_POSIXCHECK ++# undef atanf ++# if HAVE_RAW_DECL_ATANF ++_GL_WARN_ON_USE (atanf, "atanf is unportable - " ++ "use gnulib module atanf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 || !1 ++# undef atanl ++_GL_FUNCDECL_SYS (atanl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (atanl, long double, (long double x)); ++_GL_CXXALIASWARN (atanl); ++#elif defined GNULIB_POSIXCHECK ++# undef atanl ++# if HAVE_RAW_DECL_ATANL ++_GL_WARN_ON_USE (atanl, "atanl is unportable - " ++ "use gnulib module atanl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef atan2f ++_GL_FUNCDECL_SYS (atan2f, float, (float y, float x)); ++# endif ++_GL_CXXALIAS_SYS (atan2f, float, (float y, float x)); ++_GL_CXXALIASWARN (atan2f); ++#elif defined GNULIB_POSIXCHECK ++# undef atan2f ++# if HAVE_RAW_DECL_ATAN2F ++_GL_WARN_ON_USE (atan2f, "atan2f is unportable - " ++ "use gnulib module atan2f for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef cbrtf ++# define cbrtf rpl_cbrtf ++# endif ++_GL_FUNCDECL_RPL (cbrtf, float, (float x)); ++_GL_CXXALIAS_RPL (cbrtf, float, (float x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (cbrtf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (cbrtf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (cbrtf); ++#elif defined GNULIB_POSIXCHECK ++# undef cbrtf ++# if HAVE_RAW_DECL_CBRTF ++_GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - " ++ "use gnulib module cbrtf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (cbrt, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (cbrt, double, (double x)); ++_GL_CXXALIASWARN (cbrt); ++#elif defined GNULIB_POSIXCHECK ++# undef cbrt ++# if HAVE_RAW_DECL_CBRT ++_GL_WARN_ON_USE (cbrt, "cbrt is unportable - " ++ "use gnulib module cbrt for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef cbrtl ++# define cbrtl rpl_cbrtl ++# endif ++_GL_FUNCDECL_RPL (cbrtl, long double, (long double x)); ++_GL_CXXALIAS_RPL (cbrtl, long double, (long double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (cbrtl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (cbrtl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (cbrtl); ++#elif defined GNULIB_POSIXCHECK ++# undef cbrtl ++# if HAVE_RAW_DECL_CBRTL ++_GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - " ++ "use gnulib module cbrtl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ceilf ++# define ceilf rpl_ceilf ++# endif ++_GL_FUNCDECL_RPL (ceilf, float, (float x)); ++_GL_CXXALIAS_RPL (ceilf, float, (float x)); ++# else ++# if !1 ++# undef ceilf ++_GL_FUNCDECL_SYS (ceilf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (ceilf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (ceilf); ++#elif defined GNULIB_POSIXCHECK ++# undef ceilf ++# if HAVE_RAW_DECL_CEILF ++_GL_WARN_ON_USE (ceilf, "ceilf is unportable - " ++ "use gnulib module ceilf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define ceil rpl_ceil ++# endif ++_GL_FUNCDECL_RPL (ceil, double, (double x)); ++_GL_CXXALIAS_RPL (ceil, double, (double x)); ++# else ++_GL_CXXALIAS_SYS (ceil, double, (double x)); ++# endif ++_GL_CXXALIASWARN (ceil); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ceill ++# define ceill rpl_ceill ++# endif ++_GL_FUNCDECL_RPL (ceill, long double, (long double x)); ++_GL_CXXALIAS_RPL (ceill, long double, (long double x)); ++# else ++# if !1 ++# undef ceill ++_GL_FUNCDECL_SYS (ceill, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (ceill, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (ceill); ++#elif defined GNULIB_POSIXCHECK ++# undef ceill ++# if HAVE_RAW_DECL_CEILL ++_GL_WARN_ON_USE (ceill, "ceill is unportable - " ++ "use gnulib module ceill for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (copysignf, float, (float x, float y)); ++# endif ++_GL_CXXALIAS_SYS (copysignf, float, (float x, float y)); ++_GL_CXXALIASWARN (copysignf); ++#elif defined GNULIB_POSIXCHECK ++# undef copysignf ++# if HAVE_RAW_DECL_COPYSIGNF ++_GL_WARN_ON_USE (copysignf, "copysignf is unportable - " ++ "use gnulib module copysignf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (copysign, double, (double x, double y)); ++# endif ++_GL_CXXALIAS_SYS (copysign, double, (double x, double y)); ++_GL_CXXALIASWARN (copysign); ++#elif defined GNULIB_POSIXCHECK ++# undef copysign ++# if HAVE_RAW_DECL_COPYSIGN ++_GL_WARN_ON_USE (copysign, "copysign is unportable - " ++ "use gnulib module copysign for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y)); ++# endif ++_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y)); ++_GL_CXXALIASWARN (copysignl); ++#elif defined GNULIB_POSIXCHECK ++# undef copysignl ++# if HAVE_RAW_DECL_COPYSIGNL ++_GL_WARN_ON_USE (copysign, "copysignl is unportable - " ++ "use gnulib module copysignl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef cosf ++_GL_FUNCDECL_SYS (cosf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (cosf, float, (float x)); ++_GL_CXXALIASWARN (cosf); ++#elif defined GNULIB_POSIXCHECK ++# undef cosf ++# if HAVE_RAW_DECL_COSF ++_GL_WARN_ON_USE (cosf, "cosf is unportable - " ++ "use gnulib module cosf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 || !1 ++# undef cosl ++_GL_FUNCDECL_SYS (cosl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (cosl, long double, (long double x)); ++_GL_CXXALIASWARN (cosl); ++#elif defined GNULIB_POSIXCHECK ++# undef cosl ++# if HAVE_RAW_DECL_COSL ++_GL_WARN_ON_USE (cosl, "cosl is unportable - " ++ "use gnulib module cosl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef coshf ++_GL_FUNCDECL_SYS (coshf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (coshf, float, (float x)); ++_GL_CXXALIASWARN (coshf); ++#elif defined GNULIB_POSIXCHECK ++# undef coshf ++# if HAVE_RAW_DECL_COSHF ++_GL_WARN_ON_USE (coshf, "coshf is unportable - " ++ "use gnulib module coshf for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef expf ++_GL_FUNCDECL_SYS (expf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (expf, float, (float x)); ++_GL_CXXALIASWARN (expf); ++#elif defined GNULIB_POSIXCHECK ++# undef expf ++# if HAVE_RAW_DECL_EXPF ++_GL_WARN_ON_USE (expf, "expf is unportable - " ++ "use gnulib module expf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 || !1 ++# undef expl ++_GL_FUNCDECL_SYS (expl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (expl, long double, (long double x)); ++_GL_CXXALIASWARN (expl); ++#elif defined GNULIB_POSIXCHECK ++# undef expl ++# if HAVE_RAW_DECL_EXPL ++_GL_WARN_ON_USE (expl, "expl is unportable - " ++ "use gnulib module expl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (exp2f, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (exp2f, float, (float x)); ++_GL_CXXALIASWARN (exp2f); ++#elif defined GNULIB_POSIXCHECK ++# undef exp2f ++# if HAVE_RAW_DECL_EXP2F ++_GL_WARN_ON_USE (exp2f, "exp2f is unportable - " ++ "use gnulib module exp2f for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef exp2 ++# define exp2 rpl_exp2 ++# endif ++_GL_FUNCDECL_RPL (exp2, double, (double x)); ++_GL_CXXALIAS_RPL (exp2, double, (double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (exp2, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (exp2, double, (double x)); ++# endif ++_GL_CXXALIASWARN (exp2); ++#elif defined GNULIB_POSIXCHECK ++# undef exp2 ++# if HAVE_RAW_DECL_EXP2 ++_GL_WARN_ON_USE (exp2, "exp2 is unportable - " ++ "use gnulib module exp2 for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef exp2l ++# define exp2l rpl_exp2l ++# endif ++_GL_FUNCDECL_RPL (exp2l, long double, (long double x)); ++_GL_CXXALIAS_RPL (exp2l, long double, (long double x)); ++# else ++# if !1 ++# undef exp2l ++_GL_FUNCDECL_SYS (exp2l, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (exp2l, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (exp2l); ++#elif defined GNULIB_POSIXCHECK ++# undef exp2l ++# if HAVE_RAW_DECL_EXP2L ++_GL_WARN_ON_USE (exp2l, "exp2l is unportable - " ++ "use gnulib module exp2l for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef expm1f ++# define expm1f rpl_expm1f ++# endif ++_GL_FUNCDECL_RPL (expm1f, float, (float x)); ++_GL_CXXALIAS_RPL (expm1f, float, (float x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (expm1f, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (expm1f, float, (float x)); ++# endif ++_GL_CXXALIASWARN (expm1f); ++#elif defined GNULIB_POSIXCHECK ++# undef expm1f ++# if HAVE_RAW_DECL_EXPM1F ++_GL_WARN_ON_USE (expm1f, "expm1f is unportable - " ++ "use gnulib module expm1f for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef expm1 ++# define expm1 rpl_expm1 ++# endif ++_GL_FUNCDECL_RPL (expm1, double, (double x)); ++_GL_CXXALIAS_RPL (expm1, double, (double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (expm1, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (expm1, double, (double x)); ++# endif ++_GL_CXXALIASWARN (expm1); ++#elif defined GNULIB_POSIXCHECK ++# undef expm1 ++# if HAVE_RAW_DECL_EXPM1 ++_GL_WARN_ON_USE (expm1, "expm1 is unportable - " ++ "use gnulib module expm1 for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++# undef expm1l ++_GL_FUNCDECL_SYS (expm1l, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (expm1l, long double, (long double x)); ++_GL_CXXALIASWARN (expm1l); ++#elif defined GNULIB_POSIXCHECK ++# undef expm1l ++# if HAVE_RAW_DECL_EXPM1L ++_GL_WARN_ON_USE (expm1l, "expm1l is unportable - " ++ "use gnulib module expm1l for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef fabsf ++_GL_FUNCDECL_SYS (fabsf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (fabsf, float, (float x)); ++_GL_CXXALIASWARN (fabsf); ++#elif defined GNULIB_POSIXCHECK ++# undef fabsf ++# if HAVE_RAW_DECL_FABSF ++_GL_WARN_ON_USE (fabsf, "fabsf is unportable - " ++ "use gnulib module fabsf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fabsl ++# define fabsl rpl_fabsl ++# endif ++_GL_FUNCDECL_RPL (fabsl, long double, (long double x)); ++_GL_CXXALIAS_RPL (fabsl, long double, (long double x)); ++# else ++# if !1 ++# undef fabsl ++_GL_FUNCDECL_SYS (fabsl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (fabsl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (fabsl); ++#elif defined GNULIB_POSIXCHECK ++# undef fabsl ++# if HAVE_RAW_DECL_FABSL ++_GL_WARN_ON_USE (fabsl, "fabsl is unportable - " ++ "use gnulib module fabsl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef floorf ++# define floorf rpl_floorf ++# endif ++_GL_FUNCDECL_RPL (floorf, float, (float x)); ++_GL_CXXALIAS_RPL (floorf, float, (float x)); ++# else ++# if !1 ++# undef floorf ++_GL_FUNCDECL_SYS (floorf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (floorf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (floorf); ++#elif defined GNULIB_POSIXCHECK ++# undef floorf ++# if HAVE_RAW_DECL_FLOORF ++_GL_WARN_ON_USE (floorf, "floorf is unportable - " ++ "use gnulib module floorf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define floor rpl_floor ++# endif ++_GL_FUNCDECL_RPL (floor, double, (double x)); ++_GL_CXXALIAS_RPL (floor, double, (double x)); ++# else ++_GL_CXXALIAS_SYS (floor, double, (double x)); ++# endif ++_GL_CXXALIASWARN (floor); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef floorl ++# define floorl rpl_floorl ++# endif ++_GL_FUNCDECL_RPL (floorl, long double, (long double x)); ++_GL_CXXALIAS_RPL (floorl, long double, (long double x)); ++# else ++# if !1 ++# undef floorl ++_GL_FUNCDECL_SYS (floorl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (floorl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (floorl); ++#elif defined GNULIB_POSIXCHECK ++# undef floorl ++# if HAVE_RAW_DECL_FLOORL ++_GL_WARN_ON_USE (floorl, "floorl is unportable - " ++ "use gnulib module floorl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fmaf ++# define fmaf rpl_fmaf ++# endif ++_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z)); ++_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z)); ++# endif ++_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z)); ++# endif ++_GL_CXXALIASWARN (fmaf); ++#elif defined GNULIB_POSIXCHECK ++# undef fmaf ++# if HAVE_RAW_DECL_FMAF ++_GL_WARN_ON_USE (fmaf, "fmaf is unportable - " ++ "use gnulib module fmaf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fma ++# define fma rpl_fma ++# endif ++_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z)); ++_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z)); ++# endif ++_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z)); ++# endif ++_GL_CXXALIASWARN (fma); ++#elif defined GNULIB_POSIXCHECK ++# undef fma ++# if HAVE_RAW_DECL_FMA ++_GL_WARN_ON_USE (fma, "fma is unportable - " ++ "use gnulib module fma for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fmal ++# define fmal rpl_fmal ++# endif ++_GL_FUNCDECL_RPL (fmal, long double, ++ (long double x, long double y, long double z)); ++_GL_CXXALIAS_RPL (fmal, long double, ++ (long double x, long double y, long double z)); ++# else ++# if !1 ++# undef fmal ++_GL_FUNCDECL_SYS (fmal, long double, ++ (long double x, long double y, long double z)); ++# endif ++_GL_CXXALIAS_SYS (fmal, long double, ++ (long double x, long double y, long double z)); ++# endif ++_GL_CXXALIASWARN (fmal); ++#elif defined GNULIB_POSIXCHECK ++# undef fmal ++# if HAVE_RAW_DECL_FMAL ++_GL_WARN_ON_USE (fmal, "fmal is unportable - " ++ "use gnulib module fmal for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fmodf ++# define fmodf rpl_fmodf ++# endif ++_GL_FUNCDECL_RPL (fmodf, float, (float x, float y)); ++_GL_CXXALIAS_RPL (fmodf, float, (float x, float y)); ++# else ++# if !1 ++# undef fmodf ++_GL_FUNCDECL_SYS (fmodf, float, (float x, float y)); ++# endif ++_GL_CXXALIAS_SYS (fmodf, float, (float x, float y)); ++# endif ++_GL_CXXALIASWARN (fmodf); ++#elif defined GNULIB_POSIXCHECK ++# undef fmodf ++# if HAVE_RAW_DECL_FMODF ++_GL_WARN_ON_USE (fmodf, "fmodf is unportable - " ++ "use gnulib module fmodf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fmod ++# define fmod rpl_fmod ++# endif ++_GL_FUNCDECL_RPL (fmod, double, (double x, double y)); ++_GL_CXXALIAS_RPL (fmod, double, (double x, double y)); ++# else ++_GL_CXXALIAS_SYS (fmod, double, (double x, double y)); ++# endif ++_GL_CXXALIASWARN (fmod); ++#elif defined GNULIB_POSIXCHECK ++# undef fmod ++# if HAVE_RAW_DECL_FMOD ++_GL_WARN_ON_USE (fmod, "fmod has portability problems - " ++ "use gnulib module fmod for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fmodl ++# define fmodl rpl_fmodl ++# endif ++_GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y)); ++_GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y)); ++# else ++# if !1 ++# undef fmodl ++_GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y)); ++# endif ++_GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y)); ++# endif ++_GL_CXXALIASWARN (fmodl); ++#elif defined GNULIB_POSIXCHECK ++# undef fmodl ++# if HAVE_RAW_DECL_FMODL ++_GL_WARN_ON_USE (fmodl, "fmodl is unportable - " ++ "use gnulib module fmodl for portability"); ++# endif ++#endif ++ ++ ++/* Write x as ++ x = mantissa * 2^exp ++ where ++ If x finite and nonzero: 0.5 <= |mantissa| < 1.0. ++ If x is zero: mantissa = x, exp = 0. ++ If x is infinite or NaN: mantissa = x, exp unspecified. ++ Store exp in *EXPPTR and return mantissa. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef frexpf ++# define frexpf rpl_frexpf ++# endif ++_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr)); ++# else ++# if !1 ++# undef frexpf ++_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr)); ++# endif ++_GL_CXXALIASWARN (frexpf); ++#elif defined GNULIB_POSIXCHECK ++# undef frexpf ++# if HAVE_RAW_DECL_FREXPF ++_GL_WARN_ON_USE (frexpf, "frexpf is unportable - " ++ "use gnulib module frexpf for portability"); ++# endif ++#endif ++ ++/* Write x as ++ x = mantissa * 2^exp ++ where ++ If x finite and nonzero: 0.5 <= |mantissa| < 1.0. ++ If x is zero: mantissa = x, exp = 0. ++ If x is infinite or NaN: mantissa = x, exp unspecified. ++ Store exp in *EXPPTR and return mantissa. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define frexp rpl_frexp ++# endif ++_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr)); ++# else ++_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr)); ++# endif ++_GL_CXXALIASWARN (frexp); ++#elif defined GNULIB_POSIXCHECK ++# undef frexp ++/* Assume frexp is always declared. */ ++_GL_WARN_ON_USE (frexp, "frexp is unportable - " ++ "use gnulib module frexp for portability"); ++#endif ++ ++/* Write x as ++ x = mantissa * 2^exp ++ where ++ If x finite and nonzero: 0.5 <= |mantissa| < 1.0. ++ If x is zero: mantissa = x, exp = 0. ++ If x is infinite or NaN: mantissa = x, exp unspecified. ++ Store exp in *EXPPTR and return mantissa. */ ++#if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef frexpl ++# define frexpl rpl_frexpl ++# endif ++_GL_FUNCDECL_RPL (frexpl, long double, ++ (long double x, int *expptr) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr)); ++#else ++# if !1 ++_GL_FUNCDECL_SYS (frexpl, long double, ++ (long double x, int *expptr) _GL_ARG_NONNULL ((2))); ++# endif ++# if 0 ++_GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr)); ++# endif ++#endif ++#if 0 && !(0 && !1) ++_GL_CXXALIASWARN (frexpl); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# undef frexpl ++# if HAVE_RAW_DECL_FREXPL ++_GL_WARN_ON_USE (frexpl, "frexpl is unportable - " ++ "use gnulib module frexpl for portability"); ++# endif ++#endif ++ ++ ++/* Return sqrt(x^2+y^2). */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef hypotf ++# define hypotf rpl_hypotf ++# endif ++_GL_FUNCDECL_RPL (hypotf, float, (float x, float y)); ++_GL_CXXALIAS_RPL (hypotf, float, (float x, float y)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (hypotf, float, (float x, float y)); ++# endif ++_GL_CXXALIAS_SYS (hypotf, float, (float x, float y)); ++# endif ++_GL_CXXALIASWARN (hypotf); ++#elif defined GNULIB_POSIXCHECK ++# undef hypotf ++# if HAVE_RAW_DECL_HYPOTF ++_GL_WARN_ON_USE (hypotf, "hypotf is unportable - " ++ "use gnulib module hypotf for portability"); ++# endif ++#endif ++ ++/* Return sqrt(x^2+y^2). */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef hypot ++# define hypot rpl_hypot ++# endif ++_GL_FUNCDECL_RPL (hypot, double, (double x, double y)); ++_GL_CXXALIAS_RPL (hypot, double, (double x, double y)); ++# else ++_GL_CXXALIAS_SYS (hypot, double, (double x, double y)); ++# endif ++_GL_CXXALIASWARN (hypot); ++#elif defined GNULIB_POSIXCHECK ++# undef hypot ++# if HAVE_RAW_DECL_HYPOT ++_GL_WARN_ON_USE (hypotf, "hypot has portability problems - " ++ "use gnulib module hypot for portability"); ++# endif ++#endif ++ ++/* Return sqrt(x^2+y^2). */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef hypotl ++# define hypotl rpl_hypotl ++# endif ++_GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y)); ++_GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y)); ++# endif ++_GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y)); ++# endif ++_GL_CXXALIASWARN (hypotl); ++#elif defined GNULIB_POSIXCHECK ++# undef hypotl ++# if HAVE_RAW_DECL_HYPOTL ++_GL_WARN_ON_USE (hypotl, "hypotl is unportable - " ++ "use gnulib module hypotl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ilogbf ++# define ilogbf rpl_ilogbf ++# endif ++_GL_FUNCDECL_RPL (ilogbf, int, (float x)); ++_GL_CXXALIAS_RPL (ilogbf, int, (float x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ilogbf, int, (float x)); ++# endif ++_GL_CXXALIAS_SYS (ilogbf, int, (float x)); ++# endif ++_GL_CXXALIASWARN (ilogbf); ++#elif defined GNULIB_POSIXCHECK ++# undef ilogbf ++# if HAVE_RAW_DECL_ILOGBF ++_GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - " ++ "use gnulib module ilogbf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ilogb ++# define ilogb rpl_ilogb ++# endif ++_GL_FUNCDECL_RPL (ilogb, int, (double x)); ++_GL_CXXALIAS_RPL (ilogb, int, (double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ilogb, int, (double x)); ++# endif ++_GL_CXXALIAS_SYS (ilogb, int, (double x)); ++# endif ++_GL_CXXALIASWARN (ilogb); ++#elif defined GNULIB_POSIXCHECK ++# undef ilogb ++# if HAVE_RAW_DECL_ILOGB ++_GL_WARN_ON_USE (ilogb, "ilogb is unportable - " ++ "use gnulib module ilogb for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (ilogbl, int, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (ilogbl, int, (long double x)); ++_GL_CXXALIASWARN (ilogbl); ++#elif defined GNULIB_POSIXCHECK ++# undef ilogbl ++# if HAVE_RAW_DECL_ILOGBL ++_GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - " ++ "use gnulib module ilogbl for portability"); ++# endif ++#endif ++ ++ ++/* Return x * 2^exp. */ ++#if 0 ++# if !1 ++# undef ldexpf ++_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp)); ++# endif ++_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp)); ++_GL_CXXALIASWARN (ldexpf); ++#elif defined GNULIB_POSIXCHECK ++# undef ldexpf ++# if HAVE_RAW_DECL_LDEXPF ++_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - " ++ "use gnulib module ldexpf for portability"); ++# endif ++#endif ++ ++/* Return x * 2^exp. */ ++#if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ldexpl ++# define ldexpl rpl_ldexpl ++# endif ++_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp)); ++_GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp)); ++#else ++# if !1 ++_GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp)); ++# endif ++# if 0 ++_GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp)); ++# endif ++#endif ++#if 0 ++_GL_CXXALIASWARN (ldexpl); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# undef ldexpl ++# if HAVE_RAW_DECL_LDEXPL ++_GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - " ++ "use gnulib module ldexpl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef logf ++# define logf rpl_logf ++# endif ++_GL_FUNCDECL_RPL (logf, float, (float x)); ++_GL_CXXALIAS_RPL (logf, float, (float x)); ++# else ++# if !1 ++# undef logf ++_GL_FUNCDECL_SYS (logf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (logf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (logf); ++#elif defined GNULIB_POSIXCHECK ++# undef logf ++# if HAVE_RAW_DECL_LOGF ++_GL_WARN_ON_USE (logf, "logf is unportable - " ++ "use gnulib module logf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log ++# define log rpl_log ++# endif ++_GL_FUNCDECL_RPL (log, double, (double x)); ++_GL_CXXALIAS_RPL (log, double, (double x)); ++# else ++_GL_CXXALIAS_SYS (log, double, (double x)); ++# endif ++_GL_CXXALIASWARN (log); ++#elif defined GNULIB_POSIXCHECK ++# undef log ++# if HAVE_RAW_DECL_LOG ++_GL_WARN_ON_USE (log, "log has portability problems - " ++ "use gnulib module log for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef logl ++# define logl rpl_logl ++# endif ++_GL_FUNCDECL_RPL (logl, long double, (long double x)); ++_GL_CXXALIAS_RPL (logl, long double, (long double x)); ++# else ++# if !1 || !1 ++# undef logl ++_GL_FUNCDECL_SYS (logl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (logl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (logl); ++#elif defined GNULIB_POSIXCHECK ++# undef logl ++# if HAVE_RAW_DECL_LOGL ++_GL_WARN_ON_USE (logl, "logl is unportable - " ++ "use gnulib module logl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log10f ++# define log10f rpl_log10f ++# endif ++_GL_FUNCDECL_RPL (log10f, float, (float x)); ++_GL_CXXALIAS_RPL (log10f, float, (float x)); ++# else ++# if !1 ++# undef log10f ++_GL_FUNCDECL_SYS (log10f, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (log10f, float, (float x)); ++# endif ++_GL_CXXALIASWARN (log10f); ++#elif defined GNULIB_POSIXCHECK ++# undef log10f ++# if HAVE_RAW_DECL_LOG10F ++_GL_WARN_ON_USE (log10f, "log10f is unportable - " ++ "use gnulib module log10f for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log10 ++# define log10 rpl_log10 ++# endif ++_GL_FUNCDECL_RPL (log10, double, (double x)); ++_GL_CXXALIAS_RPL (log10, double, (double x)); ++# else ++_GL_CXXALIAS_SYS (log10, double, (double x)); ++# endif ++_GL_CXXALIASWARN (log10); ++#elif defined GNULIB_POSIXCHECK ++# undef log10 ++# if HAVE_RAW_DECL_LOG10 ++_GL_WARN_ON_USE (log10, "log10 has portability problems - " ++ "use gnulib module log10 for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log10l ++# define log10l rpl_log10l ++# endif ++_GL_FUNCDECL_RPL (log10l, long double, (long double x)); ++_GL_CXXALIAS_RPL (log10l, long double, (long double x)); ++# else ++# if !1 || !1 ++# undef log10l ++_GL_FUNCDECL_SYS (log10l, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (log10l, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (log10l); ++#elif defined GNULIB_POSIXCHECK ++# undef log10l ++# if HAVE_RAW_DECL_LOG10L ++_GL_WARN_ON_USE (log10l, "log10l is unportable - " ++ "use gnulib module log10l for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log1pf ++# define log1pf rpl_log1pf ++# endif ++_GL_FUNCDECL_RPL (log1pf, float, (float x)); ++_GL_CXXALIAS_RPL (log1pf, float, (float x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (log1pf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (log1pf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (log1pf); ++#elif defined GNULIB_POSIXCHECK ++# undef log1pf ++# if HAVE_RAW_DECL_LOG1PF ++_GL_WARN_ON_USE (log1pf, "log1pf is unportable - " ++ "use gnulib module log1pf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log1p ++# define log1p rpl_log1p ++# endif ++_GL_FUNCDECL_RPL (log1p, double, (double x)); ++_GL_CXXALIAS_RPL (log1p, double, (double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (log1p, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (log1p, double, (double x)); ++# endif ++_GL_CXXALIASWARN (log1p); ++#elif defined GNULIB_POSIXCHECK ++# undef log1p ++# if HAVE_RAW_DECL_LOG1P ++_GL_WARN_ON_USE (log1p, "log1p has portability problems - " ++ "use gnulib module log1p for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log1pl ++# define log1pl rpl_log1pl ++# endif ++_GL_FUNCDECL_RPL (log1pl, long double, (long double x)); ++_GL_CXXALIAS_RPL (log1pl, long double, (long double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (log1pl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (log1pl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (log1pl); ++#elif defined GNULIB_POSIXCHECK ++# undef log1pl ++# if HAVE_RAW_DECL_LOG1PL ++_GL_WARN_ON_USE (log1pl, "log1pl has portability problems - " ++ "use gnulib module log1pl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log2f ++# define log2f rpl_log2f ++# endif ++_GL_FUNCDECL_RPL (log2f, float, (float x)); ++_GL_CXXALIAS_RPL (log2f, float, (float x)); ++# else ++# if !1 ++# undef log2f ++_GL_FUNCDECL_SYS (log2f, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (log2f, float, (float x)); ++# endif ++_GL_CXXALIASWARN (log2f); ++#elif defined GNULIB_POSIXCHECK ++# undef log2f ++# if HAVE_RAW_DECL_LOG2F ++_GL_WARN_ON_USE (log2f, "log2f is unportable - " ++ "use gnulib module log2f for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log2 ++# define log2 rpl_log2 ++# endif ++_GL_FUNCDECL_RPL (log2, double, (double x)); ++_GL_CXXALIAS_RPL (log2, double, (double x)); ++# else ++# if !1 ++# undef log2 ++_GL_FUNCDECL_SYS (log2, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (log2, double, (double x)); ++# endif ++_GL_CXXALIASWARN (log2); ++#elif defined GNULIB_POSIXCHECK ++# undef log2 ++# if HAVE_RAW_DECL_LOG2 ++_GL_WARN_ON_USE (log2, "log2 is unportable - " ++ "use gnulib module log2 for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef log2l ++# define log2l rpl_log2l ++# endif ++_GL_FUNCDECL_RPL (log2l, long double, (long double x)); ++_GL_CXXALIAS_RPL (log2l, long double, (long double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (log2l, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (log2l, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (log2l); ++#elif defined GNULIB_POSIXCHECK ++# undef log2l ++# if HAVE_RAW_DECL_LOG2L ++_GL_WARN_ON_USE (log2l, "log2l is unportable - " ++ "use gnulib module log2l for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef logbf ++# define logbf rpl_logbf ++# endif ++_GL_FUNCDECL_RPL (logbf, float, (float x)); ++_GL_CXXALIAS_RPL (logbf, float, (float x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (logbf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (logbf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (logbf); ++#elif defined GNULIB_POSIXCHECK ++# undef logbf ++# if HAVE_RAW_DECL_LOGBF ++_GL_WARN_ON_USE (logbf, "logbf is unportable - " ++ "use gnulib module logbf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef logb ++# define logb rpl_logb ++# endif ++_GL_FUNCDECL_RPL (logb, double, (double x)); ++_GL_CXXALIAS_RPL (logb, double, (double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (logb, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (logb, double, (double x)); ++# endif ++_GL_CXXALIASWARN (logb); ++#elif defined GNULIB_POSIXCHECK ++# undef logb ++# if HAVE_RAW_DECL_LOGB ++_GL_WARN_ON_USE (logb, "logb is unportable - " ++ "use gnulib module logb for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef logbl ++# define logbl rpl_logbl ++# endif ++_GL_FUNCDECL_RPL (logbl, long double, (long double x)); ++_GL_CXXALIAS_RPL (logbl, long double, (long double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (logbl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (logbl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (logbl); ++#elif defined GNULIB_POSIXCHECK ++# undef logbl ++# if HAVE_RAW_DECL_LOGBL ++_GL_WARN_ON_USE (logbl, "logbl is unportable - " ++ "use gnulib module logbl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef modff ++# define modff rpl_modff ++# endif ++_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr)); ++# else ++# if !1 ++# undef modff ++_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr)); ++# endif ++_GL_CXXALIASWARN (modff); ++#elif defined GNULIB_POSIXCHECK ++# undef modff ++# if HAVE_RAW_DECL_MODFF ++_GL_WARN_ON_USE (modff, "modff is unportable - " ++ "use gnulib module modff for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef modf ++# define modf rpl_modf ++# endif ++_GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (modf, double, (double x, double *iptr)); ++# else ++_GL_CXXALIAS_SYS (modf, double, (double x, double *iptr)); ++# endif ++_GL_CXXALIASWARN (modf); ++#elif defined GNULIB_POSIXCHECK ++# undef modf ++# if HAVE_RAW_DECL_MODF ++_GL_WARN_ON_USE (modf, "modf has portability problems - " ++ "use gnulib module modf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef modfl ++# define modfl rpl_modfl ++# endif ++_GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr)); ++# else ++# if !1 ++# undef modfl ++_GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr)); ++# endif ++_GL_CXXALIASWARN (modfl); ++#elif defined GNULIB_POSIXCHECK ++# undef modfl ++# if HAVE_RAW_DECL_MODFL ++_GL_WARN_ON_USE (modfl, "modfl is unportable - " ++ "use gnulib module modfl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef powf ++_GL_FUNCDECL_SYS (powf, float, (float x, float y)); ++# endif ++_GL_CXXALIAS_SYS (powf, float, (float x, float y)); ++_GL_CXXALIASWARN (powf); ++#elif defined GNULIB_POSIXCHECK ++# undef powf ++# if HAVE_RAW_DECL_POWF ++_GL_WARN_ON_USE (powf, "powf is unportable - " ++ "use gnulib module powf for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef remainderf ++# define remainderf rpl_remainderf ++# endif ++_GL_FUNCDECL_RPL (remainderf, float, (float x, float y)); ++_GL_CXXALIAS_RPL (remainderf, float, (float x, float y)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (remainderf, float, (float x, float y)); ++# endif ++_GL_CXXALIAS_SYS (remainderf, float, (float x, float y)); ++# endif ++_GL_CXXALIASWARN (remainderf); ++#elif defined GNULIB_POSIXCHECK ++# undef remainderf ++# if HAVE_RAW_DECL_REMAINDERF ++_GL_WARN_ON_USE (remainderf, "remainderf is unportable - " ++ "use gnulib module remainderf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef remainder ++# define remainder rpl_remainder ++# endif ++_GL_FUNCDECL_RPL (remainder, double, (double x, double y)); ++_GL_CXXALIAS_RPL (remainder, double, (double x, double y)); ++# else ++# if !1 || !1 ++_GL_FUNCDECL_SYS (remainder, double, (double x, double y)); ++# endif ++_GL_CXXALIAS_SYS (remainder, double, (double x, double y)); ++# endif ++_GL_CXXALIASWARN (remainder); ++#elif defined GNULIB_POSIXCHECK ++# undef remainder ++# if HAVE_RAW_DECL_REMAINDER ++_GL_WARN_ON_USE (remainder, "remainder is unportable - " ++ "use gnulib module remainder for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef remainderl ++# define remainderl rpl_remainderl ++# endif ++_GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y)); ++_GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y)); ++# else ++# if !1 ++# undef remainderl ++_GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y)); ++# endif ++_GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y)); ++# endif ++_GL_CXXALIASWARN (remainderl); ++#elif defined GNULIB_POSIXCHECK ++# undef remainderl ++# if HAVE_RAW_DECL_REMAINDERL ++_GL_WARN_ON_USE (remainderl, "remainderl is unportable - " ++ "use gnulib module remainderl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (rintf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (rintf, float, (float x)); ++_GL_CXXALIASWARN (rintf); ++#elif defined GNULIB_POSIXCHECK ++# undef rintf ++# if HAVE_RAW_DECL_RINTF ++_GL_WARN_ON_USE (rintf, "rintf is unportable - " ++ "use gnulib module rintf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (rint, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (rint, double, (double x)); ++_GL_CXXALIASWARN (rint); ++#elif defined GNULIB_POSIXCHECK ++# undef rint ++# if HAVE_RAW_DECL_RINT ++_GL_WARN_ON_USE (rint, "rint is unportable - " ++ "use gnulib module rint for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (rintl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (rintl, long double, (long double x)); ++_GL_CXXALIASWARN (rintl); ++#elif defined GNULIB_POSIXCHECK ++# undef rintl ++# if HAVE_RAW_DECL_RINTL ++_GL_WARN_ON_USE (rintl, "rintl is unportable - " ++ "use gnulib module rintl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef roundf ++# define roundf rpl_roundf ++# endif ++_GL_FUNCDECL_RPL (roundf, float, (float x)); ++_GL_CXXALIAS_RPL (roundf, float, (float x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (roundf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (roundf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (roundf); ++#elif defined GNULIB_POSIXCHECK ++# undef roundf ++# if HAVE_RAW_DECL_ROUNDF ++_GL_WARN_ON_USE (roundf, "roundf is unportable - " ++ "use gnulib module roundf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef round ++# define round rpl_round ++# endif ++_GL_FUNCDECL_RPL (round, double, (double x)); ++_GL_CXXALIAS_RPL (round, double, (double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (round, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (round, double, (double x)); ++# endif ++_GL_CXXALIASWARN (round); ++#elif defined GNULIB_POSIXCHECK ++# undef round ++# if HAVE_RAW_DECL_ROUND ++_GL_WARN_ON_USE (round, "round is unportable - " ++ "use gnulib module round for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef roundl ++# define roundl rpl_roundl ++# endif ++_GL_FUNCDECL_RPL (roundl, long double, (long double x)); ++_GL_CXXALIAS_RPL (roundl, long double, (long double x)); ++# else ++# if !1 ++# undef roundl ++_GL_FUNCDECL_SYS (roundl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (roundl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (roundl); ++#elif defined GNULIB_POSIXCHECK ++# undef roundl ++# if HAVE_RAW_DECL_ROUNDL ++_GL_WARN_ON_USE (roundl, "roundl is unportable - " ++ "use gnulib module roundl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef sinf ++_GL_FUNCDECL_SYS (sinf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (sinf, float, (float x)); ++_GL_CXXALIASWARN (sinf); ++#elif defined GNULIB_POSIXCHECK ++# undef sinf ++# if HAVE_RAW_DECL_SINF ++_GL_WARN_ON_USE (sinf, "sinf is unportable - " ++ "use gnulib module sinf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 || !1 ++# undef sinl ++_GL_FUNCDECL_SYS (sinl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (sinl, long double, (long double x)); ++_GL_CXXALIASWARN (sinl); ++#elif defined GNULIB_POSIXCHECK ++# undef sinl ++# if HAVE_RAW_DECL_SINL ++_GL_WARN_ON_USE (sinl, "sinl is unportable - " ++ "use gnulib module sinl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef sinhf ++_GL_FUNCDECL_SYS (sinhf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (sinhf, float, (float x)); ++_GL_CXXALIASWARN (sinhf); ++#elif defined GNULIB_POSIXCHECK ++# undef sinhf ++# if HAVE_RAW_DECL_SINHF ++_GL_WARN_ON_USE (sinhf, "sinhf is unportable - " ++ "use gnulib module sinhf for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef sqrtf ++_GL_FUNCDECL_SYS (sqrtf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (sqrtf, float, (float x)); ++_GL_CXXALIASWARN (sqrtf); ++#elif defined GNULIB_POSIXCHECK ++# undef sqrtf ++# if HAVE_RAW_DECL_SQRTF ++_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - " ++ "use gnulib module sqrtf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef sqrtl ++# define sqrtl rpl_sqrtl ++# endif ++_GL_FUNCDECL_RPL (sqrtl, long double, (long double x)); ++_GL_CXXALIAS_RPL (sqrtl, long double, (long double x)); ++# else ++# if !1 || !1 ++# undef sqrtl ++_GL_FUNCDECL_SYS (sqrtl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (sqrtl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (sqrtl); ++#elif defined GNULIB_POSIXCHECK ++# undef sqrtl ++# if HAVE_RAW_DECL_SQRTL ++_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - " ++ "use gnulib module sqrtl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef tanf ++_GL_FUNCDECL_SYS (tanf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (tanf, float, (float x)); ++_GL_CXXALIASWARN (tanf); ++#elif defined GNULIB_POSIXCHECK ++# undef tanf ++# if HAVE_RAW_DECL_TANF ++_GL_WARN_ON_USE (tanf, "tanf is unportable - " ++ "use gnulib module tanf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 || !1 ++# undef tanl ++_GL_FUNCDECL_SYS (tanl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (tanl, long double, (long double x)); ++_GL_CXXALIASWARN (tanl); ++#elif defined GNULIB_POSIXCHECK ++# undef tanl ++# if HAVE_RAW_DECL_TANL ++_GL_WARN_ON_USE (tanl, "tanl is unportable - " ++ "use gnulib module tanl for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++# undef tanhf ++_GL_FUNCDECL_SYS (tanhf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (tanhf, float, (float x)); ++_GL_CXXALIASWARN (tanhf); ++#elif defined GNULIB_POSIXCHECK ++# undef tanhf ++# if HAVE_RAW_DECL_TANHF ++_GL_WARN_ON_USE (tanhf, "tanhf is unportable - " ++ "use gnulib module tanhf for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define truncf rpl_truncf ++# endif ++_GL_FUNCDECL_RPL (truncf, float, (float x)); ++_GL_CXXALIAS_RPL (truncf, float, (float x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (truncf, float, (float x)); ++# endif ++_GL_CXXALIAS_SYS (truncf, float, (float x)); ++# endif ++_GL_CXXALIASWARN (truncf); ++#elif defined GNULIB_POSIXCHECK ++# undef truncf ++# if HAVE_RAW_DECL_TRUNCF ++_GL_WARN_ON_USE (truncf, "truncf is unportable - " ++ "use gnulib module truncf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define trunc rpl_trunc ++# endif ++_GL_FUNCDECL_RPL (trunc, double, (double x)); ++_GL_CXXALIAS_RPL (trunc, double, (double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (trunc, double, (double x)); ++# endif ++_GL_CXXALIAS_SYS (trunc, double, (double x)); ++# endif ++_GL_CXXALIASWARN (trunc); ++#elif defined GNULIB_POSIXCHECK ++# undef trunc ++# if HAVE_RAW_DECL_TRUNC ++_GL_WARN_ON_USE (trunc, "trunc is unportable - " ++ "use gnulib module trunc for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef truncl ++# define truncl rpl_truncl ++# endif ++_GL_FUNCDECL_RPL (truncl, long double, (long double x)); ++_GL_CXXALIAS_RPL (truncl, long double, (long double x)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (truncl, long double, (long double x)); ++# endif ++_GL_CXXALIAS_SYS (truncl, long double, (long double x)); ++# endif ++_GL_CXXALIASWARN (truncl); ++#elif defined GNULIB_POSIXCHECK ++# undef truncl ++# if HAVE_RAW_DECL_TRUNCL ++_GL_WARN_ON_USE (truncl, "truncl is unportable - " ++ "use gnulib module truncl for portability"); ++# endif ++#endif ++ ++ ++/* Definitions of function-like macros come here, after the function ++ declarations. */ ++ ++ ++#if 0 ++# if 0 ++_GL_EXTERN_C int gl_isfinitef (float x); ++_GL_EXTERN_C int gl_isfinited (double x); ++_GL_EXTERN_C int gl_isfinitel (long double x); ++# undef isfinite ++# define isfinite(x) \ ++ (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \ ++ sizeof (x) == sizeof (double) ? gl_isfinited (x) : \ ++ gl_isfinitef (x)) ++# endif ++# ifdef __cplusplus ++# ifdef isfinite ++_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite) ++# undef isfinite ++_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite) ++# endif ++# endif ++#elif defined GNULIB_POSIXCHECK ++# if defined isfinite ++_GL_WARN_REAL_FLOATING_DECL (isfinite); ++# undef isfinite ++# define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x) ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++_GL_EXTERN_C int gl_isinff (float x); ++_GL_EXTERN_C int gl_isinfd (double x); ++_GL_EXTERN_C int gl_isinfl (long double x); ++# undef isinf ++# define isinf(x) \ ++ (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \ ++ sizeof (x) == sizeof (double) ? gl_isinfd (x) : \ ++ gl_isinff (x)) ++# endif ++# ifdef __cplusplus ++# ifdef isinf ++_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf) ++# undef isinf ++_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf) ++# endif ++# endif ++#elif defined GNULIB_POSIXCHECK ++# if defined isinf ++_GL_WARN_REAL_FLOATING_DECL (isinf); ++# undef isinf ++# define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x) ++# endif ++#endif ++ ++ ++#if 1 ++/* Test for NaN for 'float' numbers. */ ++# if 0 ++/* The original included above provides a declaration of isnan macro ++ or (older) isnanf function. */ ++# if __GNUC__ >= 4 ++ /* GCC 4.0 and newer provides three built-ins for isnan. */ ++# undef isnanf ++# define isnanf(x) __builtin_isnanf ((float)(x)) ++# elif defined isnan ++# undef isnanf ++# define isnanf(x) isnan ((float)(x)) ++# endif ++# else ++/* Test whether X is a NaN. */ ++# undef isnanf ++# define isnanf rpl_isnanf ++_GL_EXTERN_C int isnanf (float x); ++# endif ++#endif ++ ++#if 1 ++/* Test for NaN for 'double' numbers. ++ This function is a gnulib extension, unlike isnan() which applied only ++ to 'double' numbers earlier but now is a type-generic macro. */ ++# if (_MSC_VER >= 1800) ++/* The original included above provides a declaration of isnan ++ macro. */ ++# if __GNUC__ >= 4 ++ /* GCC 4.0 and newer provides three built-ins for isnan. */ ++# undef isnand ++# define isnand(x) __builtin_isnan ((double)(x)) ++# else ++# undef isnand ++# define isnand(x) isnan ((double)(x)) ++# endif ++# else ++/* Test whether X is a NaN. */ ++# undef isnand ++# define isnand rpl_isnand ++_GL_EXTERN_C int isnand (double x); ++# endif ++#endif ++ ++#if 1 ++/* Test for NaN for 'long double' numbers. */ ++# if 0 ++/* The original included above provides a declaration of isnan ++ macro or (older) isnanl function. */ ++# if __GNUC__ >= 4 ++ /* GCC 4.0 and newer provides three built-ins for isnan. */ ++# undef isnanl ++# define isnanl(x) __builtin_isnanl ((long double)(x)) ++# elif defined isnan ++# undef isnanl ++# define isnanl(x) isnan ((long double)(x)) ++# endif ++# else ++/* Test whether X is a NaN. */ ++# undef isnanl ++# define isnanl rpl_isnanl ++_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST; ++# endif ++#endif ++ ++/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL! */ ++#if 1 ++# if 1 ++/* We can't just use the isnanf macro (e.g.) as exposed by ++ isnanf.h (e.g.) here, because those may end up being macros ++ that recursively expand back to isnan. So use the gnulib ++ replacements for them directly. */ ++# if 0 && __GNUC__ >= 4 ++# define gl_isnan_f(x) __builtin_isnanf ((float)(x)) ++# else ++_GL_EXTERN_C int rpl_isnanf (float x); ++# define gl_isnan_f(x) rpl_isnanf (x) ++# endif ++# if (_MSC_VER >= 1800) && __GNUC__ >= 4 ++# define gl_isnan_d(x) __builtin_isnan ((double)(x)) ++# else ++_GL_EXTERN_C int rpl_isnand (double x); ++# define gl_isnan_d(x) rpl_isnand (x) ++# endif ++# if 0 && __GNUC__ >= 4 ++# define gl_isnan_l(x) __builtin_isnanl ((long double)(x)) ++# else ++_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST; ++# define gl_isnan_l(x) rpl_isnanl (x) ++# endif ++# undef isnan ++# define isnan(x) \ ++ (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \ ++ sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \ ++ gl_isnan_f (x)) ++# elif __GNUC__ >= 4 ++# undef isnan ++# define isnan(x) \ ++ (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \ ++ sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \ ++ __builtin_isnanf ((float)(x))) ++# endif ++# ifdef __cplusplus ++# ifdef isnan ++_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan) ++# undef isnan ++_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan) ++# endif ++# else ++/* Ensure isnan is a macro. */ ++# ifndef isnan ++# define isnan isnan ++# endif ++# endif ++#elif defined GNULIB_POSIXCHECK ++# if defined isnan ++_GL_WARN_REAL_FLOATING_DECL (isnan); ++# undef isnan ++# define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x) ++# endif ++#endif ++ ++ ++#if 1 ++# if (0 \ ++ && (!defined __cplusplus || __cplusplus < 201103)) ++# undef signbit ++ /* GCC 4.0 and newer provides three built-ins for signbit. */ ++# define signbit(x) \ ++ (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ ++ sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ ++ __builtin_signbitf (x)) ++# endif ++# if (_MSC_VER < 1800) ++# undef signbit ++_GL_EXTERN_C int gl_signbitf (float arg); ++_GL_EXTERN_C int gl_signbitd (double arg); ++_GL_EXTERN_C int gl_signbitl (long double arg); ++# if __GNUC__ >= 2 && !defined __STRICT_ANSI__ ++# define _GL_NUM_UINT_WORDS(type) \ ++ ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) ++# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf ++# define gl_signbitf_OPTIMIZED_MACRO ++# define gl_signbitf(arg) \ ++ ({ union { float _value; \ ++ unsigned int _word[_GL_NUM_UINT_WORDS (float)]; \ ++ } _m; \ ++ _m._value = (arg); \ ++ (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \ ++ }) ++# endif ++# if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd ++# define gl_signbitd_OPTIMIZED_MACRO ++# define gl_signbitd(arg) \ ++ ({ union { double _value; \ ++ unsigned int _word[_GL_NUM_UINT_WORDS (double)]; \ ++ } _m; \ ++ _m._value = (arg); \ ++ (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \ ++ }) ++# endif ++# if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl ++# define gl_signbitl_OPTIMIZED_MACRO ++# define gl_signbitl(arg) \ ++ ({ union { long double _value; \ ++ unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \ ++ } _m; \ ++ _m._value = (arg); \ ++ (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \ ++ }) ++# endif ++# endif ++# define signbit(x) \ ++ (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \ ++ sizeof (x) == sizeof (double) ? gl_signbitd (x) : \ ++ gl_signbitf (x)) ++# endif ++# ifdef __cplusplus ++# ifdef signbit ++_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit) ++# undef signbit ++_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit) ++# endif ++# endif ++#elif defined GNULIB_POSIXCHECK ++# if defined signbit ++_GL_WARN_REAL_FLOATING_DECL (signbit); ++# undef signbit ++# define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x) ++# endif ++#endif ++ ++_GL_INLINE_HEADER_END ++ ++#endif /* _GL_MATH_H */ ++#endif /* _GL_MATH_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sched.h gettext-0.19/gettext-tools/gnulib-lib/msvc/sched.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sched.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/sched.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,65 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Replacement for platforms that lack it. ++ Copyright (C) 2008-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GL_SCHED_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_SCHED_H ++#define _GL_SCHED_H ++ ++/* Get pid_t. ++ This is needed on glibc 2.11 (see ++ glibc bug ) ++ and Mac OS X 10.5. */ ++#include ++ ++#ifdef __KLIBC__ ++ ++/* On OS/2 kLIBC, struct sched_param is in spawn.h */ ++# include ++ ++#endif ++ ++#if !0 ++ ++# if !GNULIB_defined_struct_sched_param ++struct sched_param ++{ ++ int sched_priority; ++}; ++# define GNULIB_defined_struct_sched_param 1 ++# endif ++ ++#endif ++ ++#if !(defined SCHED_FIFO && defined SCHED_RR && defined SCHED_OTHER) ++# define SCHED_FIFO 1 ++# define SCHED_RR 2 ++# define SCHED_OTHER 0 ++#endif ++ ++#endif /* _GL_SCHED_H */ ++#endif /* _GL_SCHED_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/signal.h gettext-0.19/gettext-tools/gnulib-lib/msvc/signal.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/signal.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/signal.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,775 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T) ++/* Special invocation convention: ++ - Inside glibc header files. ++ - On glibc systems we have a sequence of nested includes ++ -> -> . ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. ++ - On glibc systems with GCC 4.3 we have a sequence of nested includes ++ -> -> -> . ++ In this situation, some of the functions are not yet declared, therefore ++ we cannot provide the C++ aliases. */ ++ ++# include MSVC_INCLUDE(signal.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_SIGNAL_H ++ ++#define _GL_ALREADY_INCLUDING_SIGNAL_H ++ ++/* Define pid_t, uid_t. ++ Also, mingw defines sigset_t not in , but in . ++ On Solaris 10, includes , which eventually includes ++ us; so include now, before the second inclusion guard. */ ++#include ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(signal.h) ++ ++#undef _GL_ALREADY_INCLUDING_SIGNAL_H ++ ++#ifndef _GL_SIGNAL_H ++#define _GL_SIGNAL_H ++ ++/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6, Android ++ declare pthread_sigmask in , not in . ++ But avoid namespace pollution on glibc systems.*/ ++#if (0 || defined GNULIB_POSIXCHECK) \ ++ && ((defined __APPLE__ && defined __MACH__) \ ++ || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ \ ++ || defined __sun || defined __ANDROID__) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* On AIX, sig_atomic_t already includes volatile. C99 requires that ++ 'volatile sig_atomic_t' ignore the extra modifier, but C89 did not. ++ Hence, redefine this to a non-volatile type as needed. */ ++#if ! 1 ++# if !GNULIB_defined_sig_atomic_t ++typedef int rpl_sig_atomic_t; ++# undef sig_atomic_t ++# define sig_atomic_t rpl_sig_atomic_t ++# define GNULIB_defined_sig_atomic_t 1 ++# endif ++#endif ++ ++/* A set or mask of signals. */ ++#if !0 ++# if !GNULIB_defined_sigset_t ++typedef unsigned int sigset_t; ++# define GNULIB_defined_sigset_t 1 ++# endif ++#endif ++ ++/* Define sighandler_t, the type of signal handlers. A GNU extension. */ ++#if !0 ++# ifdef __cplusplus ++extern "C" { ++# endif ++# if !GNULIB_defined_sighandler_t ++typedef void (*sighandler_t) (int); ++# define GNULIB_defined_sighandler_t 1 ++# endif ++# ifdef __cplusplus ++} ++# endif ++#endif ++ ++ ++#if 1 ++# ifndef SIGPIPE ++/* Define SIGPIPE to a value that does not overlap with other signals. */ ++# define SIGPIPE 13 ++# define GNULIB_defined_SIGPIPE 1 ++/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask', ++ 'write', 'stdio'. */ ++# endif ++#endif ++ ++ ++/* Maximum signal number + 1. */ ++#ifndef NSIG ++# if defined __TANDEM ++# define NSIG 32 ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pthread_sigmask ++# define pthread_sigmask rpl_pthread_sigmask ++# endif ++_GL_FUNCDECL_RPL (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++_GL_CXXALIAS_RPL (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# endif ++_GL_CXXALIAS_SYS (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# endif ++_GL_CXXALIASWARN (pthread_sigmask); ++#elif defined GNULIB_POSIXCHECK ++# undef pthread_sigmask ++# if HAVE_RAW_DECL_PTHREAD_SIGMASK ++_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - " ++ "use gnulib module pthread_sigmask for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef raise ++# define raise rpl_raise ++# endif ++_GL_FUNCDECL_RPL (raise, int, (int sig)); ++_GL_CXXALIAS_RPL (raise, int, (int sig)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (raise, int, (int sig)); ++# endif ++_GL_CXXALIAS_SYS (raise, int, (int sig)); ++# endif ++_GL_CXXALIASWARN (raise); ++#elif defined GNULIB_POSIXCHECK ++# undef raise ++/* Assume raise is always declared. */ ++_GL_WARN_ON_USE (raise, "raise can crash on native Windows - " ++ "use gnulib module raise for portability"); ++#endif ++ ++ ++#if 1 ++# if !0 ++ ++# ifndef GNULIB_defined_signal_blocking ++# define GNULIB_defined_signal_blocking 1 ++# endif ++ ++/* Maximum signal number + 1. */ ++# ifndef NSIG ++# define NSIG 32 ++# endif ++ ++/* This code supports only 32 signals. */ ++# if !GNULIB_defined_verify_NSIG_constraint ++typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1]; ++# define GNULIB_defined_verify_NSIG_constraint 1 ++# endif ++ ++# endif ++ ++/* When also using extern inline, suppress the use of static inline in ++ standard headers of problematic Apple configurations, as Libc at ++ least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., ++ . ++ Perhaps Apple will fix this some day. */ ++#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ ++ && (defined __i386__ || defined __x86_64__)) ++# undef sigaddset ++# undef sigdelset ++# undef sigemptyset ++# undef sigfillset ++# undef sigismember ++#endif ++ ++/* Test whether a given signal is contained in a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigismember ++# endif ++# else ++_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigismember); ++ ++/* Initialize a signal set to the empty set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigemptyset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigemptyset); ++ ++/* Add a signal to a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigaddset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigaddset); ++ ++/* Remove a signal from a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigdelset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigdelset); ++ ++/* Fill a signal set with all possible signals. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigfillset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigfillset); ++ ++/* Return the set of those blocked signals that are pending. */ ++# if !0 ++_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigpending); ++ ++/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET. ++ Then, if SET is not NULL, affect the current set of blocked signals by ++ combining it with *SET as indicated in OPERATION. ++ In this implementation, you are not allowed to change a signal handler ++ while the signal is blocked. */ ++# if !0 ++# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ ++# define SIG_SETMASK 1 /* blocked_set = *set; */ ++# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ ++_GL_FUNCDECL_SYS (sigprocmask, int, ++ (int operation, const sigset_t *set, sigset_t *old_set)); ++# endif ++_GL_CXXALIAS_SYS (sigprocmask, int, ++ (int operation, const sigset_t *set, sigset_t *old_set)); ++_GL_CXXALIASWARN (sigprocmask); ++ ++/* Install the handler FUNC for signal SIG, and return the previous ++ handler. */ ++# ifdef __cplusplus ++extern "C" { ++# endif ++# if !GNULIB_defined_function_taking_int_returning_void_t ++typedef void (*_gl_function_taking_int_returning_void_t) (int); ++# define GNULIB_defined_function_taking_int_returning_void_t 1 ++# endif ++# ifdef __cplusplus ++} ++# endif ++# if !0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define signal rpl_signal ++# endif ++_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++# else ++_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++# endif ++_GL_CXXALIASWARN (signal); ++ ++# if !0 && GNULIB_defined_SIGPIPE ++/* Raise signal SIGPIPE. */ ++_GL_EXTERN_C int _gl_raise_SIGPIPE (void); ++# endif ++ ++#elif defined GNULIB_POSIXCHECK ++# undef sigaddset ++# if HAVE_RAW_DECL_SIGADDSET ++_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigdelset ++# if HAVE_RAW_DECL_SIGDELSET ++_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigemptyset ++# if HAVE_RAW_DECL_SIGEMPTYSET ++_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigfillset ++# if HAVE_RAW_DECL_SIGFILLSET ++_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigismember ++# if HAVE_RAW_DECL_SIGISMEMBER ++_GL_WARN_ON_USE (sigismember, "sigismember is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigpending ++# if HAVE_RAW_DECL_SIGPENDING ++_GL_WARN_ON_USE (sigpending, "sigpending is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigprocmask ++# if HAVE_RAW_DECL_SIGPROCMASK ++_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++#endif /* 1 */ ++ ++ ++#if 1 ++# if !0 ++ ++# if !0 ++ ++# if !GNULIB_defined_siginfo_types ++ ++/* Present to allow compilation, but unsupported by gnulib. */ ++union sigval ++{ ++ int sival_int; ++ void *sival_ptr; ++}; ++ ++/* Present to allow compilation, but unsupported by gnulib. */ ++struct siginfo_t ++{ ++ int si_signo; ++ int si_code; ++ int si_errno; ++ pid_t si_pid; ++ uid_t si_uid; ++ void *si_addr; ++ int si_status; ++ long si_band; ++ union sigval si_value; ++}; ++typedef struct siginfo_t siginfo_t; ++ ++# define GNULIB_defined_siginfo_types 1 ++# endif ++ ++# endif /* !0 */ ++ ++/* We assume that platforms which lack the sigaction() function also lack ++ the 'struct sigaction' type, and vice versa. */ ++ ++# if !GNULIB_defined_struct_sigaction ++ ++struct sigaction ++{ ++ union ++ { ++ void (*_sa_handler) (int); ++ /* Present to allow compilation, but unsupported by gnulib. POSIX ++ says that implementations may, but not must, make sa_sigaction ++ overlap with sa_handler, but we know of no implementation where ++ they do not overlap. */ ++ void (*_sa_sigaction) (int, siginfo_t *, void *); ++ } _sa_func; ++ sigset_t sa_mask; ++ /* Not all POSIX flags are supported. */ ++ int sa_flags; ++}; ++# define sa_handler _sa_func._sa_handler ++# define sa_sigaction _sa_func._sa_sigaction ++/* Unsupported flags are not present. */ ++# define SA_RESETHAND 1 ++# define SA_NODEFER 2 ++# define SA_RESTART 4 ++ ++# define GNULIB_defined_struct_sigaction 1 ++# endif ++ ++_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict, ++ struct sigaction *restrict)); ++ ++# elif !1 ++ ++# define sa_sigaction sa_handler ++ ++# endif /* !0, !1 */ ++ ++_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict, ++ struct sigaction *restrict)); ++_GL_CXXALIASWARN (sigaction); ++ ++#elif defined GNULIB_POSIXCHECK ++# undef sigaction ++# if HAVE_RAW_DECL_SIGACTION ++_GL_WARN_ON_USE (sigaction, "sigaction is unportable - " ++ "use the gnulib module sigaction for portability"); ++# endif ++#endif ++ ++/* Some systems don't have SA_NODEFER. */ ++#ifndef SA_NODEFER ++# define SA_NODEFER 0 ++#endif ++ ++ ++#endif /* _GL_SIGNAL_H */ ++#endif /* _GL_SIGNAL_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/spawn.h gettext-0.19/gettext-tools/gnulib-lib/msvc/spawn.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/spawn.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/spawn.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1193 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Definitions for POSIX spawn interface. ++ Copyright (C) 2000, 2003-2004, 2008-2016 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GL_SPAWN_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_SPAWN_H ++#define _GL_SPAWN_H ++ ++/* Get definitions of 'struct sched_param' and 'sigset_t'. ++ But avoid namespace pollution on glibc systems. */ ++#if !(defined __GLIBC__ && !defined __UCLIBC__) ++# include ++# include ++#endif ++ ++#include ++ ++#ifndef __THROW ++# define __THROW ++#endif ++ ++/* GCC 2.95 and later have "__restrict"; C99 compilers have ++ "restrict", and "configure" may have defined "restrict". ++ Other compilers use __restrict, __restrict__, and _Restrict, and ++ 'configure' might #define 'restrict' to those words, so pick a ++ different name. */ ++#ifndef _Restrict_ ++# if 199901L <= __STDC_VERSION__ ++# define _Restrict_ restrict ++# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__) ++# define _Restrict_ __restrict ++# else ++# define _Restrict_ ++# endif ++#endif ++/* gcc 3.1 and up support the [restrict] syntax. Don't trust ++ sys/cdefs.h's definition of __restrict_arr, though, as it ++ mishandles gcc -ansi -pedantic. */ ++#ifndef _Restrict_arr_ ++# if ((199901L <= __STDC_VERSION__ \ ++ || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) \ ++ && !defined __STRICT_ANSI__)) \ ++ && !defined __GNUG__) ++# define _Restrict_arr_ _Restrict_ ++# else ++# define _Restrict_arr_ ++# endif ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Data structure to contain attributes for thread creation. */ ++#if 0 ++# define posix_spawnattr_t rpl_posix_spawnattr_t ++#endif ++#if 0 || !0 ++# if !GNULIB_defined_posix_spawnattr_t ++typedef struct ++{ ++ short int _flags; ++ pid_t _pgrp; ++ sigset_t _sd; ++ sigset_t _ss; ++ struct sched_param _sp; ++ int _policy; ++ int __pad[16]; ++} posix_spawnattr_t; ++# define GNULIB_defined_posix_spawnattr_t 1 ++# endif ++#endif ++ ++ ++/* Data structure to contain information about the actions to be ++ performed in the new process with respect to file descriptors. */ ++#if 0 ++# define posix_spawn_file_actions_t rpl_posix_spawn_file_actions_t ++#endif ++#if 0 || !0 ++# if !GNULIB_defined_posix_spawn_file_actions_t ++typedef struct ++{ ++ int _allocated; ++ int _used; ++ struct __spawn_action *_actions; ++ int __pad[16]; ++} posix_spawn_file_actions_t; ++# define GNULIB_defined_posix_spawn_file_actions_t 1 ++# endif ++#endif ++ ++ ++/* Flags to be set in the 'posix_spawnattr_t'. */ ++#if 0 ++/* Use the values from the system, but provide the missing ones. */ ++# ifndef POSIX_SPAWN_SETSCHEDPARAM ++# define POSIX_SPAWN_SETSCHEDPARAM 0 ++# endif ++# ifndef POSIX_SPAWN_SETSCHEDULER ++# define POSIX_SPAWN_SETSCHEDULER 0 ++# endif ++#else ++# if 0 ++/* Use the values from the system, for better compatibility. */ ++/* But this implementation does not support AIX extensions. */ ++# undef POSIX_SPAWN_FORK_HANDLERS ++# else ++# define POSIX_SPAWN_RESETIDS 0x01 ++# define POSIX_SPAWN_SETPGROUP 0x02 ++# define POSIX_SPAWN_SETSIGDEF 0x04 ++# define POSIX_SPAWN_SETSIGMASK 0x08 ++# define POSIX_SPAWN_SETSCHEDPARAM 0x10 ++# define POSIX_SPAWN_SETSCHEDULER 0x20 ++# endif ++#endif ++/* A GNU extension. Use the next free bit position. */ ++#define POSIX_SPAWN_USEVFORK \ ++ ((POSIX_SPAWN_RESETIDS | (POSIX_SPAWN_RESETIDS - 1) \ ++ | POSIX_SPAWN_SETPGROUP | (POSIX_SPAWN_SETPGROUP - 1) \ ++ | POSIX_SPAWN_SETSIGDEF | (POSIX_SPAWN_SETSIGDEF - 1) \ ++ | POSIX_SPAWN_SETSIGMASK | (POSIX_SPAWN_SETSIGMASK - 1) \ ++ | POSIX_SPAWN_SETSCHEDPARAM \ ++ | (POSIX_SPAWN_SETSCHEDPARAM > 0 ? POSIX_SPAWN_SETSCHEDPARAM - 1 : 0) \ ++ | POSIX_SPAWN_SETSCHEDULER \ ++ | (POSIX_SPAWN_SETSCHEDULER > 0 ? POSIX_SPAWN_SETSCHEDULER - 1 : 0)) \ ++ + 1) ++#if !GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap ++typedef int verify_POSIX_SPAWN_USEVFORK_no_overlap ++ [(((POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP ++ | POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK ++ | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER) ++ & POSIX_SPAWN_USEVFORK) ++ == 0) ++ ? 1 : -1]; ++# define GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap 1 ++#endif ++ ++ ++#if 0 ++/* Spawn a new process executing PATH with the attributes describes in *ATTRP. ++ Before running the process perform the actions described in FILE-ACTIONS. ++ ++ This function is a possible cancellation points and therefore not ++ marked with __THROW. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawn rpl_posix_spawn ++# endif ++_GL_FUNCDECL_RPL (posix_spawn, int, ++ (pid_t *_Restrict_ __pid, ++ const char *_Restrict_ __path, ++ const posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ const posix_spawnattr_t *_Restrict_ __attrp, ++ char *const argv[_Restrict_arr_], ++ char *const envp[_Restrict_arr_]) ++ _GL_ARG_NONNULL ((2, 5, 6))); ++_GL_CXXALIAS_RPL (posix_spawn, int, ++ (pid_t *_Restrict_ __pid, ++ const char *_Restrict_ __path, ++ const posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ const posix_spawnattr_t *_Restrict_ __attrp, ++ char *const argv[_Restrict_arr_], ++ char *const envp[_Restrict_arr_])); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawn, int, ++ (pid_t *_Restrict_ __pid, ++ const char *_Restrict_ __path, ++ const posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ const posix_spawnattr_t *_Restrict_ __attrp, ++ char *const argv[_Restrict_arr_], ++ char *const envp[_Restrict_arr_]) ++ _GL_ARG_NONNULL ((2, 5, 6))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawn, int, ++ (pid_t *_Restrict_ __pid, ++ const char *_Restrict_ __path, ++ const posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ const posix_spawnattr_t *_Restrict_ __attrp, ++ char *const argv[_Restrict_arr_], ++ char *const envp[_Restrict_arr_])); ++# endif ++_GL_CXXALIASWARN (posix_spawn); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawn ++# if HAVE_RAW_DECL_POSIX_SPAWN ++_GL_WARN_ON_USE (posix_spawn, "posix_spawn is unportable - " ++ "use gnulib module posix_spawn for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Similar to 'posix_spawn' but search for FILE in the PATH. ++ ++ This function is a possible cancellation points and therefore not ++ marked with __THROW. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnp rpl_posix_spawnp ++# endif ++_GL_FUNCDECL_RPL (posix_spawnp, int, ++ (pid_t *__pid, const char *__file, ++ const posix_spawn_file_actions_t *__file_actions, ++ const posix_spawnattr_t *__attrp, ++ char *const argv[], char *const envp[]) ++ _GL_ARG_NONNULL ((2, 5, 6))); ++_GL_CXXALIAS_RPL (posix_spawnp, int, ++ (pid_t *__pid, const char *__file, ++ const posix_spawn_file_actions_t *__file_actions, ++ const posix_spawnattr_t *__attrp, ++ char *const argv[], char *const envp[])); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnp, int, ++ (pid_t *__pid, const char *__file, ++ const posix_spawn_file_actions_t *__file_actions, ++ const posix_spawnattr_t *__attrp, ++ char *const argv[], char *const envp[]) ++ _GL_ARG_NONNULL ((2, 5, 6))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnp, int, ++ (pid_t *__pid, const char *__file, ++ const posix_spawn_file_actions_t *__file_actions, ++ const posix_spawnattr_t *__attrp, ++ char *const argv[], char *const envp[])); ++# endif ++_GL_CXXALIASWARN (posix_spawnp); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnp ++# if HAVE_RAW_DECL_POSIX_SPAWNP ++_GL_WARN_ON_USE (posix_spawnp, "posix_spawnp is unportable - " ++ "use gnulib module posix_spawnp for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Initialize data structure with attributes for 'spawn' to default values. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_init rpl_posix_spawnattr_init ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_init, int, (posix_spawnattr_t *__attr) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawnattr_init, int, (posix_spawnattr_t *__attr)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_init, int, (posix_spawnattr_t *__attr) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_init, int, (posix_spawnattr_t *__attr)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_init); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_init ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_INIT ++_GL_WARN_ON_USE (posix_spawnattr_init, "posix_spawnattr_init is unportable - " ++ "use gnulib module posix_spawnattr_init for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Free resources associated with ATTR. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_destroy rpl_posix_spawnattr_destroy ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_destroy); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_destroy ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_DESTROY ++_GL_WARN_ON_USE (posix_spawnattr_destroy, ++ "posix_spawnattr_destroy is unportable - " ++ "use gnulib module posix_spawnattr_destroy for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store signal mask for signals with default handling from ATTR in ++ SIGDEFAULT. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_getsigdefault rpl_posix_spawnattr_getsigdefault ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_getsigdefault, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigdefault) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_getsigdefault, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigdefault)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_getsigdefault, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigdefault) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_getsigdefault, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigdefault)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_getsigdefault); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_getsigdefault ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGDEFAULT ++_GL_WARN_ON_USE (posix_spawnattr_getsigdefault, ++ "posix_spawnattr_getsigdefault is unportable - " ++ "use gnulib module posix_spawnattr_getsigdefault for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_setsigdefault rpl_posix_spawnattr_setsigdefault ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_setsigdefault, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigdefault) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_setsigdefault, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigdefault)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_setsigdefault, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigdefault) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_setsigdefault, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigdefault)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_setsigdefault); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_setsigdefault ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGDEFAULT ++_GL_WARN_ON_USE (posix_spawnattr_setsigdefault, ++ "posix_spawnattr_setsigdefault is unportable - " ++ "use gnulib module posix_spawnattr_setsigdefault for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store signal mask for the new process from ATTR in SIGMASK. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_getsigmask rpl_posix_spawnattr_getsigmask ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_getsigmask, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigmask) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_getsigmask, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigmask)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_getsigmask, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigmask) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_getsigmask, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ sigset_t *_Restrict_ __sigmask)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_getsigmask); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_getsigmask ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGMASK ++_GL_WARN_ON_USE (posix_spawnattr_getsigmask, ++ "posix_spawnattr_getsigmask is unportable - " ++ "use gnulib module posix_spawnattr_getsigmask for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Set signal mask for the new process in ATTR to SIGMASK. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_setsigmask rpl_posix_spawnattr_setsigmask ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_setsigmask, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigmask) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_setsigmask, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigmask)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_setsigmask, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigmask) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_setsigmask, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const sigset_t *_Restrict_ __sigmask)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_setsigmask); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_setsigmask ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGMASK ++_GL_WARN_ON_USE (posix_spawnattr_setsigmask, ++ "posix_spawnattr_setsigmask is unportable - " ++ "use gnulib module posix_spawnattr_setsigmask for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Get flag word from the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_getflags rpl_posix_spawnattr_getflags ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_getflags, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ short int *_Restrict_ __flags) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_getflags, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ short int *_Restrict_ __flags)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_getflags, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ short int *_Restrict_ __flags) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_getflags, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ short int *_Restrict_ __flags)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_getflags); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_getflags ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETFLAGS ++_GL_WARN_ON_USE (posix_spawnattr_getflags, ++ "posix_spawnattr_getflags is unportable - " ++ "use gnulib module posix_spawnattr_getflags for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Store flags in the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_setflags rpl_posix_spawnattr_setflags ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_setflags, int, ++ (posix_spawnattr_t *__attr, short int __flags) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawnattr_setflags, int, ++ (posix_spawnattr_t *__attr, short int __flags)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_setflags, int, ++ (posix_spawnattr_t *__attr, short int __flags) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_setflags, int, ++ (posix_spawnattr_t *__attr, short int __flags)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_setflags); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_setflags ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETFLAGS ++_GL_WARN_ON_USE (posix_spawnattr_setflags, ++ "posix_spawnattr_setflags is unportable - " ++ "use gnulib module posix_spawnattr_setflags for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Get process group ID from the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_getpgroup rpl_posix_spawnattr_getpgroup ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_getpgroup, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ pid_t *_Restrict_ __pgroup) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_getpgroup, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ pid_t *_Restrict_ __pgroup)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_getpgroup, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ pid_t *_Restrict_ __pgroup) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_getpgroup, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ pid_t *_Restrict_ __pgroup)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_getpgroup); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_getpgroup ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETPGROUP ++_GL_WARN_ON_USE (posix_spawnattr_getpgroup, ++ "posix_spawnattr_getpgroup is unportable - " ++ "use gnulib module posix_spawnattr_getpgroup for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store process group ID in the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_setpgroup rpl_posix_spawnattr_setpgroup ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_setpgroup, int, ++ (posix_spawnattr_t *__attr, pid_t __pgroup) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawnattr_setpgroup, int, ++ (posix_spawnattr_t *__attr, pid_t __pgroup)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawnattr_setpgroup, int, ++ (posix_spawnattr_t *__attr, pid_t __pgroup) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_setpgroup, int, ++ (posix_spawnattr_t *__attr, pid_t __pgroup)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_setpgroup); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_setpgroup ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETPGROUP ++_GL_WARN_ON_USE (posix_spawnattr_setpgroup, ++ "posix_spawnattr_setpgroup is unportable - " ++ "use gnulib module posix_spawnattr_setpgroup for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Get scheduling policy from the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_getschedpolicy rpl_posix_spawnattr_getschedpolicy ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_getschedpolicy, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ int *_Restrict_ __schedpolicy) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_getschedpolicy, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ int *_Restrict_ __schedpolicy)); ++# else ++# if !0 || POSIX_SPAWN_SETSCHEDULER == 0 ++_GL_FUNCDECL_SYS (posix_spawnattr_getschedpolicy, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ int *_Restrict_ __schedpolicy) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_getschedpolicy, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ int *_Restrict_ __schedpolicy)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_getschedpolicy); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_getschedpolicy ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPOLICY ++_GL_WARN_ON_USE (posix_spawnattr_getschedpolicy, ++ "posix_spawnattr_getschedpolicy is unportable - " ++ "use gnulib module posix_spawnattr_getschedpolicy for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store scheduling policy in the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_setschedpolicy rpl_posix_spawnattr_setschedpolicy ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_setschedpolicy, int, ++ (posix_spawnattr_t *__attr, int __schedpolicy) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawnattr_setschedpolicy, int, ++ (posix_spawnattr_t *__attr, int __schedpolicy)); ++# else ++# if !0 || POSIX_SPAWN_SETSCHEDULER == 0 ++_GL_FUNCDECL_SYS (posix_spawnattr_setschedpolicy, int, ++ (posix_spawnattr_t *__attr, int __schedpolicy) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_setschedpolicy, int, ++ (posix_spawnattr_t *__attr, int __schedpolicy)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_setschedpolicy); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_setschedpolicy ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPOLICY ++_GL_WARN_ON_USE (posix_spawnattr_setschedpolicy, ++ "posix_spawnattr_setschedpolicy is unportable - " ++ "use gnulib module posix_spawnattr_setschedpolicy for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Get scheduling parameters from the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_getschedparam rpl_posix_spawnattr_getschedparam ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_getschedparam, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ struct sched_param *_Restrict_ __schedparam) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_getschedparam, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ struct sched_param *_Restrict_ __schedparam)); ++# else ++# if !0 || POSIX_SPAWN_SETSCHEDPARAM == 0 ++_GL_FUNCDECL_SYS (posix_spawnattr_getschedparam, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ struct sched_param *_Restrict_ __schedparam) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_getschedparam, int, ++ (const posix_spawnattr_t *_Restrict_ __attr, ++ struct sched_param *_Restrict_ __schedparam)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_getschedparam); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_getschedparam ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPARAM ++_GL_WARN_ON_USE (posix_spawnattr_getschedparam, ++ "posix_spawnattr_getschedparam is unportable - " ++ "use gnulib module posix_spawnattr_getschedparam for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store scheduling parameters in the attribute structure. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawnattr_setschedparam rpl_posix_spawnattr_setschedparam ++# endif ++_GL_FUNCDECL_RPL (posix_spawnattr_setschedparam, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const struct sched_param *_Restrict_ __schedparam) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (posix_spawnattr_setschedparam, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const struct sched_param *_Restrict_ __schedparam)); ++# else ++# if !0 || POSIX_SPAWN_SETSCHEDPARAM == 0 ++_GL_FUNCDECL_SYS (posix_spawnattr_setschedparam, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const struct sched_param *_Restrict_ __schedparam) ++ __THROW _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawnattr_setschedparam, int, ++ (posix_spawnattr_t *_Restrict_ __attr, ++ const struct sched_param *_Restrict_ __schedparam)); ++# endif ++_GL_CXXALIASWARN (posix_spawnattr_setschedparam); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawnattr_setschedparam ++# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPARAM ++_GL_WARN_ON_USE (posix_spawnattr_setschedparam, ++ "posix_spawnattr_setschedparam is unportable - " ++ "use gnulib module posix_spawnattr_setschedparam for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Initialize data structure for file attribute for 'spawn' call. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawn_file_actions_init rpl_posix_spawn_file_actions_init ++# endif ++_GL_FUNCDECL_RPL (posix_spawn_file_actions_init, int, ++ (posix_spawn_file_actions_t *__file_actions) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawn_file_actions_init, int, ++ (posix_spawn_file_actions_t *__file_actions)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawn_file_actions_init, int, ++ (posix_spawn_file_actions_t *__file_actions) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawn_file_actions_init, int, ++ (posix_spawn_file_actions_t *__file_actions)); ++# endif ++_GL_CXXALIASWARN (posix_spawn_file_actions_init); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawn_file_actions_init ++# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_INIT ++_GL_WARN_ON_USE (posix_spawn_file_actions_init, ++ "posix_spawn_file_actions_init is unportable - " ++ "use gnulib module posix_spawn_file_actions_init for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Free resources associated with FILE-ACTIONS. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawn_file_actions_destroy rpl_posix_spawn_file_actions_destroy ++# endif ++_GL_FUNCDECL_RPL (posix_spawn_file_actions_destroy, int, ++ (posix_spawn_file_actions_t *__file_actions) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawn_file_actions_destroy, int, ++ (posix_spawn_file_actions_t *__file_actions)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawn_file_actions_destroy, int, ++ (posix_spawn_file_actions_t *__file_actions) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawn_file_actions_destroy, int, ++ (posix_spawn_file_actions_t *__file_actions)); ++# endif ++_GL_CXXALIASWARN (posix_spawn_file_actions_destroy); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawn_file_actions_destroy ++# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_DESTROY ++_GL_WARN_ON_USE (posix_spawn_file_actions_destroy, ++ "posix_spawn_file_actions_destroy is unportable - " ++ "use gnulib module posix_spawn_file_actions_destroy for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Add an action to FILE-ACTIONS which tells the implementation to call ++ 'open' for the given file during the 'spawn' call. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawn_file_actions_addopen rpl_posix_spawn_file_actions_addopen ++# endif ++_GL_FUNCDECL_RPL (posix_spawn_file_actions_addopen, int, ++ (posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ int __fd, ++ const char *_Restrict_ __path, int __oflag, mode_t __mode) ++ __THROW _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (posix_spawn_file_actions_addopen, int, ++ (posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ int __fd, ++ const char *_Restrict_ __path, int __oflag, mode_t __mode)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawn_file_actions_addopen, int, ++ (posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ int __fd, ++ const char *_Restrict_ __path, int __oflag, mode_t __mode) ++ __THROW _GL_ARG_NONNULL ((1, 3))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawn_file_actions_addopen, int, ++ (posix_spawn_file_actions_t *_Restrict_ __file_actions, ++ int __fd, ++ const char *_Restrict_ __path, int __oflag, mode_t __mode)); ++# endif ++_GL_CXXALIASWARN (posix_spawn_file_actions_addopen); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawn_file_actions_addopen ++# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN ++_GL_WARN_ON_USE (posix_spawn_file_actions_addopen, ++ "posix_spawn_file_actions_addopen is unportable - " ++ "use gnulib module posix_spawn_file_actions_addopen for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Add an action to FILE-ACTIONS which tells the implementation to call ++ 'close' for the given file descriptor during the 'spawn' call. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawn_file_actions_addclose rpl_posix_spawn_file_actions_addclose ++# endif ++_GL_FUNCDECL_RPL (posix_spawn_file_actions_addclose, int, ++ (posix_spawn_file_actions_t *__file_actions, int __fd) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawn_file_actions_addclose, int, ++ (posix_spawn_file_actions_t *__file_actions, int __fd)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawn_file_actions_addclose, int, ++ (posix_spawn_file_actions_t *__file_actions, int __fd) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawn_file_actions_addclose, int, ++ (posix_spawn_file_actions_t *__file_actions, int __fd)); ++# endif ++_GL_CXXALIASWARN (posix_spawn_file_actions_addclose); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawn_file_actions_addclose ++# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE ++_GL_WARN_ON_USE (posix_spawn_file_actions_addclose, ++ "posix_spawn_file_actions_addclose is unportable - " ++ "use gnulib module posix_spawn_file_actions_addclose for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Add an action to FILE-ACTIONS which tells the implementation to call ++ 'dup2' for the given file descriptors during the 'spawn' call. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define posix_spawn_file_actions_adddup2 rpl_posix_spawn_file_actions_adddup2 ++# endif ++_GL_FUNCDECL_RPL (posix_spawn_file_actions_adddup2, int, ++ (posix_spawn_file_actions_t *__file_actions, ++ int __fd, int __newfd) ++ __THROW _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (posix_spawn_file_actions_adddup2, int, ++ (posix_spawn_file_actions_t *__file_actions, ++ int __fd, int __newfd)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (posix_spawn_file_actions_adddup2, int, ++ (posix_spawn_file_actions_t *__file_actions, ++ int __fd, int __newfd) ++ __THROW _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (posix_spawn_file_actions_adddup2, int, ++ (posix_spawn_file_actions_t *__file_actions, ++ int __fd, int __newfd)); ++# endif ++_GL_CXXALIASWARN (posix_spawn_file_actions_adddup2); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_spawn_file_actions_adddup2 ++# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 ++_GL_WARN_ON_USE (posix_spawn_file_actions_adddup2, ++ "posix_spawn_file_actions_adddup2 is unportable - " ++ "use gnulib module posix_spawn_file_actions_adddup2 for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_SPAWN_H */ ++#endif /* _GL_SPAWN_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdbool.h gettext-0.19/gettext-tools/gnulib-lib/msvc/stdbool.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdbool.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/stdbool.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,141 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Copyright (C) 2001-2003, 2006-2016 Free Software Foundation, Inc. ++ Written by Bruno Haible , 2001. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if (_MSC_VER >= 1800) ++/* just include the stock stdbool.h for Visual Studio 2013 and later */ ++# include <../include/stdbool.h> ++#else ++ ++#ifndef _GL_STDBOOL_H ++#define _GL_STDBOOL_H ++ ++/* ISO C 99 for platforms that lack it. */ ++ ++/* Usage suggestions: ++ ++ Programs that use should be aware of some limitations ++ and standards compliance issues. ++ ++ Standards compliance: ++ ++ - must be #included before 'bool', 'false', 'true' ++ can be used. ++ ++ - You cannot assume that sizeof (bool) == 1. ++ ++ - Programs should not undefine the macros bool, true, and false, ++ as C99 lists that as an "obsolescent feature". ++ ++ Limitations of this substitute, when used in a C89 environment: ++ ++ - must be #included before the '_Bool' type can be used. ++ ++ - You cannot assume that _Bool is a typedef; it might be a macro. ++ ++ - Bit-fields of type 'bool' are not supported. Portable code ++ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. ++ ++ - In C99, casts and automatic conversions to '_Bool' or 'bool' are ++ performed in such a way that every nonzero value gets converted ++ to 'true', and zero gets converted to 'false'. This doesn't work ++ with this substitute. With this substitute, only the values 0 and 1 ++ give the expected result when converted to _Bool' or 'bool'. ++ ++ - C99 allows the use of (_Bool)0.0 in constant expressions, but ++ this substitute cannot always provide this property. ++ ++ Also, it is suggested that programs use 'bool' rather than '_Bool'; ++ this isn't required, but 'bool' is more common. */ ++ ++ ++/* 7.16. Boolean type and values */ ++ ++/* BeOS already #defines false 0, true 1. We use the same ++ definitions below, but temporarily we have to #undef them. */ ++#if defined __BEOS__ && !defined __HAIKU__ ++# include /* defines bool but not _Bool */ ++# undef false ++# undef true ++#endif ++ ++#ifdef __cplusplus ++# if (_MSC_VER < 1600) ++# define _Bool bool ++# define bool bool ++# endif ++#else ++# if defined __BEOS__ && !defined __HAIKU__ ++ /* A compiler known to have 'bool'. */ ++ /* If the compiler already has both 'bool' and '_Bool', we can assume they ++ are the same types. */ ++# if !0 ++typedef bool _Bool; ++# endif ++# else ++# if !defined __GNUC__ ++ /* If 0: ++ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when ++ the built-in _Bool type is used. See ++ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html ++ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html ++ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html ++ Similar bugs are likely with other compilers as well; this file ++ wouldn't be used if was working. ++ So we override the _Bool type. ++ If !0: ++ Need to define _Bool ourselves. As 'signed char' or as an enum type? ++ Use of a typedef, with SunPRO C, leads to a stupid ++ "warning: _Bool is a keyword in ISO C99". ++ Use of an enum type, with IRIX cc, leads to a stupid ++ "warning(1185): enumerated type mixed with another type". ++ Even the existence of an enum type, without a typedef, ++ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. ++ The only benefit of the enum, debuggability, is not important ++ with these compilers. So use 'signed char' and no enum. */ ++# define _Bool signed char ++# else ++ /* With this compiler, trust the _Bool type if the compiler has it. */ ++# if !0 ++ /* For the sake of symbolic names in gdb, define true and false as ++ enum constants, not only as macros. ++ It is tempting to write ++ typedef enum { false = 0, true = 1 } _Bool; ++ so that gdb prints values of type 'bool' symbolically. But then ++ values of type '_Bool' might promote to 'int' or 'unsigned int' ++ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' ++ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the ++ enum; this ensures that '_Bool' promotes to 'int'. */ ++typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; ++# endif ++# endif ++# endif ++# define bool _Bool ++#endif ++ ++/* The other macros must be usable in preprocessor directives. */ ++#ifdef __cplusplus ++# define false false ++# define true true ++#else ++# define false 0 ++# define true 1 ++#endif ++ ++#define __bool_true_false_are_defined 1 ++ ++#endif /* _GL_STDBOOL_H */ ++#endif /* _MSC_VER < 1800 */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stddef.h gettext-0.19/gettext-tools/gnulib-lib/msvc/stddef.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stddef.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/stddef.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,111 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for POSIX 2008 , for platforms that have issues. ++ ++ Copyright (C) 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake. */ ++ ++/* ++ * POSIX 2008 for platforms that have issues. ++ * ++ */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_wchar_t || defined __need_size_t \ ++ || defined __need_ptrdiff_t || defined __need_NULL \ ++ || defined __need_wint_t ++/* Special invocation convention inside gcc header files. In ++ particular, gcc provides a version of that blindly ++ redefines NULL even when __need_wint_t was defined, even though ++ wint_t is not normally provided by . Hence, we must ++ remember if special invocation has ever been used to obtain wint_t, ++ in which case we need to clean up NULL yet again. */ ++ ++# if !(defined _GL_STDDEF_H && defined _GL_STDDEF_WINT_T) ++# ifdef __need_wint_t ++# define _GL_STDDEF_WINT_T ++# endif ++# include MSVC_INCLUDE(stddef.h) ++# endif ++ ++#else ++/* Normal invocation convention. */ ++ ++# ifndef _GL_STDDEF_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++ ++# include MSVC_INCLUDE(stddef.h) ++ ++/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ ++# if (0 \ ++ && (!defined _GL_STDDEF_H || defined _GL_STDDEF_WINT_T)) ++# undef NULL ++# ifdef __cplusplus ++ /* ISO C++ says that the macro NULL must expand to an integer constant ++ expression, hence '((void *) 0)' is not allowed in C++. */ ++# if __GNUG__ >= 3 ++ /* GNU C++ has a __null macro that behaves like an integer ('int' or ++ 'long') but has the same size as a pointer. Use that, to avoid ++ warnings. */ ++# define NULL __null ++# else ++# define NULL 0L ++# endif ++# else ++# define NULL ((void *) 0) ++# endif ++# endif ++ ++# ifndef _GL_STDDEF_H ++# define _GL_STDDEF_H ++ ++/* Some platforms lack wchar_t. */ ++#if !1 ++# define wchar_t int ++#endif ++ ++/* Some platforms lack max_align_t. The check for _GCC_MAX_ALIGN_T is ++ a hack in case the configure-time test was done with g++ even though ++ we are currently compiling with gcc. */ ++#if ! (0 || defined _GCC_MAX_ALIGN_T) ++/* On the x86, the maximum storage alignment of double, long, etc. is 4, ++ but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8, ++ and the C11 standard allows this. Work around this problem by ++ using __alignof__ (which returns 8 for double) rather than _Alignof ++ (which returns 4), and align each union member accordingly. */ ++# ifdef __GNUC__ ++# define _GL_STDDEF_ALIGNAS(type) \ ++ __attribute__ ((__aligned__ (__alignof__ (type)))) ++# else ++# define _GL_STDDEF_ALIGNAS(type) /* */ ++# endif ++typedef union ++{ ++ char *__p _GL_STDDEF_ALIGNAS (char *); ++ double __d _GL_STDDEF_ALIGNAS (double); ++ long double __ld _GL_STDDEF_ALIGNAS (long double); ++ long int __i _GL_STDDEF_ALIGNAS (long int); ++} max_align_t; ++#endif ++ ++# endif /* _GL_STDDEF_H */ ++# endif /* _GL_STDDEF_H */ ++#endif /* __need_XXX */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdint.h gettext-0.19/gettext-tools/gnulib-lib/msvc/stdint.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/stdint.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,661 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Copyright (C) 2001-2002, 2004-2016 Free Software Foundation, Inc. ++ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. ++ This file is part of gnulib. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* ++ * ISO C 99 for platforms that lack it. ++ * ++ */ ++ ++#if (_MSC_VER >= 1700) ++/* just include the stock stdint.h for Visual Studio 2012 and later */ ++# include <../include/stdint.h> ++#else ++ ++#ifndef _GL_STDINT_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* When including a system file that in turn includes , ++ use the system , not our substitute. This avoids ++ problems with (for example) VMS, whose includes ++ . */ ++#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H ++ ++/* On Android (Bionic libc), includes this file before ++ having defined 'time_t'. Therefore in this case avoid including ++ other system header files; just include the system's . ++ Ideally we should test __BIONIC__ here, but it is only defined after ++ has been included; hence test __ANDROID__ instead. */ ++#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H ++# if (_MSC_VER >= 1600) ++# include <../include/stdint.h> ++# else ++# include ++# endif ++#else ++ ++/* Get those types that are already defined in other system include ++ files, so that we can "#define int8_t signed char" below without ++ worrying about a later system include file containing a "typedef ++ signed char int8_t;" that will get messed up by our macro. Our ++ macros should all be consistent with the system versions, except ++ for the "fast" types and macros, which we recommend against using ++ in public interfaces due to compiler differences. */ ++ ++#if (_MSC_VER >= 1600) ++# if defined __sgi && ! defined __c99 ++ /* Bypass IRIX's if in C89 mode, since it merely annoys users ++ with "This header file is to be used only for c99 mode compilations" ++ diagnostics. */ ++# define __STDINT_H__ ++# endif ++ ++ /* Some pre-C++11 implementations need this. */ ++# ifdef __cplusplus ++# ifndef __STDC_CONSTANT_MACROS ++# define __STDC_CONSTANT_MACROS 1 ++# endif ++# ifndef __STDC_LIMIT_MACROS ++# define __STDC_LIMIT_MACROS 1 ++# endif ++# endif ++ ++ /* Other systems may have an incomplete or buggy . ++ Include it before , since any "#include " ++ in would reinclude us, skipping our contents because ++ _GL_STDINT_H is defined. ++ The include_next requires a split double-inclusion guard. */ ++# if (_MSC_VER >= 1600) ++# include <../include/stdint.h> ++# else ++# include ++# endif ++#endif ++ ++#if ! defined _GL_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H ++#define _GL_STDINT_H ++ ++/* defines some of the stdint.h types as well, on glibc, ++ IRIX 6.5, and OpenBSD 3.8 (via ). ++ AIX 5.2 isn't needed and causes troubles. ++ Mac OS X 10.4.6 includes (which is us), but ++ relies on the system definitions, so include ++ after . */ ++#if 1 && ! defined _AIX ++# include ++#endif ++ ++/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, ++ LONG_MIN, LONG_MAX, ULONG_MAX. */ ++#include ++ ++#if 0 ++ /* In OpenBSD 3.8, includes , which defines ++ int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. ++ also defines intptr_t and uintptr_t. */ ++# include ++#elif 0 ++ /* Solaris 7 has the types except the *_fast*_t types, and ++ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ ++# include ++#endif ++ ++#if 0 && ! defined __BIT_TYPES_DEFINED__ ++ /* Linux libc4 >= 4.6.7 and libc5 have a that defines ++ int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is ++ included by . */ ++# include ++#endif ++ ++#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H ++ ++/* Minimum and maximum values for an integer type under the usual assumption. ++ Return an unspecified value if BITS == 0, adding a check to pacify ++ picky compilers. */ ++ ++#define _STDINT_MIN(signed, bits, zero) \ ++ ((signed) ? ~ _STDINT_MAX (signed, bits, zero) : (zero)) ++ ++#define _STDINT_MAX(signed, bits, zero) \ ++ (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) ++ ++#if !GNULIB_defined_stdint_types ++ ++/* 7.18.1.1. Exact-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. */ ++ ++#undef int8_t ++#undef uint8_t ++typedef signed char gl_int8_t; ++typedef unsigned char gl_uint8_t; ++#define int8_t gl_int8_t ++#define uint8_t gl_uint8_t ++ ++#undef int16_t ++#undef uint16_t ++typedef short int gl_int16_t; ++typedef unsigned short int gl_uint16_t; ++#define int16_t gl_int16_t ++#define uint16_t gl_uint16_t ++ ++#undef int32_t ++#undef uint32_t ++typedef int gl_int32_t; ++typedef unsigned int gl_uint32_t; ++#define int32_t gl_int32_t ++#define uint32_t gl_uint32_t ++ ++/* If the system defines INT64_MAX, assume int64_t works. That way, ++ if the underlying platform defines int64_t to be a 64-bit long long ++ int, the code below won't mistakenly define it to be a 64-bit long ++ int, which would mess up C++ name mangling. We must use #ifdef ++ rather than #if, to avoid an error with HP-UX 10.20 cc. */ ++ ++#ifdef INT64_MAX ++# define GL_INT64_T ++#else ++/* Do not undefine int64_t if gnulib is not being used with 64-bit ++ types, since otherwise it breaks platforms like Tandem/NSK. */ ++# if LONG_MAX >> 31 >> 31 == 1 ++# undef int64_t ++typedef long int gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# elif defined _MSC_VER ++# undef int64_t ++typedef __int64 gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# elif 1 ++# undef int64_t ++typedef long long int gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# endif ++#endif ++ ++#ifdef UINT64_MAX ++# define GL_UINT64_T ++#else ++# if ULONG_MAX >> 31 >> 31 >> 1 == 1 ++# undef uint64_t ++typedef unsigned long int gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# elif defined _MSC_VER ++# undef uint64_t ++typedef unsigned __int64 gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# elif 1 ++# undef uint64_t ++typedef unsigned long long int gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# endif ++#endif ++ ++/* Avoid collision with Solaris 2.5.1 etc. */ ++#define _UINT8_T ++#define _UINT32_T ++#define _UINT64_T ++ ++ ++/* 7.18.1.2. Minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types ++ are the same as the corresponding N_t types. */ ++ ++#undef int_least8_t ++#undef uint_least8_t ++#undef int_least16_t ++#undef uint_least16_t ++#undef int_least32_t ++#undef uint_least32_t ++#undef int_least64_t ++#undef uint_least64_t ++#define int_least8_t int8_t ++#define uint_least8_t uint8_t ++#define int_least16_t int16_t ++#define uint_least16_t uint16_t ++#define int_least32_t int32_t ++#define uint_least32_t uint32_t ++#ifdef GL_INT64_T ++# define int_least64_t int64_t ++#endif ++#ifdef GL_UINT64_T ++# define uint_least64_t uint64_t ++#endif ++ ++/* 7.18.1.3. Fastest minimum-width integer types */ ++ ++/* Note: Other substitutes may define these types differently. ++ It is not recommended to use these types in public header files. */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types ++ are taken from the same list of types. The following code normally ++ uses types consistent with glibc, as that lessens the chance of ++ incompatibility with older GNU hosts. */ ++ ++#undef int_fast8_t ++#undef uint_fast8_t ++#undef int_fast16_t ++#undef uint_fast16_t ++#undef int_fast32_t ++#undef uint_fast32_t ++#undef int_fast64_t ++#undef uint_fast64_t ++typedef signed char gl_int_fast8_t; ++typedef unsigned char gl_uint_fast8_t; ++ ++#ifdef __sun ++/* Define types compatible with SunOS 5.10, so that code compiled under ++ earlier SunOS versions works with code compiled under SunOS 5.10. */ ++typedef int gl_int_fast32_t; ++typedef unsigned int gl_uint_fast32_t; ++#else ++typedef long int gl_int_fast32_t; ++typedef unsigned long int gl_uint_fast32_t; ++#endif ++typedef gl_int_fast32_t gl_int_fast16_t; ++typedef gl_uint_fast32_t gl_uint_fast16_t; ++ ++#define int_fast8_t gl_int_fast8_t ++#define uint_fast8_t gl_uint_fast8_t ++#define int_fast16_t gl_int_fast16_t ++#define uint_fast16_t gl_uint_fast16_t ++#define int_fast32_t gl_int_fast32_t ++#define uint_fast32_t gl_uint_fast32_t ++#ifdef GL_INT64_T ++# define int_fast64_t int64_t ++#endif ++#ifdef GL_UINT64_T ++# define uint_fast64_t uint64_t ++#endif ++ ++/* 7.18.1.4. Integer types capable of holding object pointers */ ++ ++/* kLIBC's stdint.h defines _INTPTR_T_DECLARED and needs its own ++ definitions of intptr_t and uintptr_t (which use int and unsigned) ++ to avoid clashes with declarations of system functions like sbrk. */ ++#ifndef _INTPTR_T_DECLARED ++#undef intptr_t ++#undef uintptr_t ++typedef long int gl_intptr_t; ++typedef unsigned long int gl_uintptr_t; ++#define intptr_t gl_intptr_t ++#define uintptr_t gl_uintptr_t ++#endif ++ ++/* 7.18.1.5. Greatest-width integer types */ ++ ++/* Note: These types are compiler dependent. It may be unwise to use them in ++ public header files. */ ++ ++/* If the system defines INTMAX_MAX, assume that intmax_t works, and ++ similarly for UINTMAX_MAX and uintmax_t. This avoids problems with ++ assuming one type where another is used by the system. */ ++ ++#ifndef INTMAX_MAX ++# undef INTMAX_C ++# undef intmax_t ++# if 1 && LONG_MAX >> 30 == 1 ++typedef long long int gl_intmax_t; ++# define intmax_t gl_intmax_t ++# elif defined GL_INT64_T ++# define intmax_t int64_t ++# else ++typedef long int gl_intmax_t; ++# define intmax_t gl_intmax_t ++# endif ++#endif ++ ++#ifndef UINTMAX_MAX ++# undef UINTMAX_C ++# undef uintmax_t ++# if 1 && ULONG_MAX >> 31 == 1 ++typedef unsigned long long int gl_uintmax_t; ++# define uintmax_t gl_uintmax_t ++# elif defined GL_UINT64_T ++# define uintmax_t uint64_t ++# else ++typedef unsigned long int gl_uintmax_t; ++# define uintmax_t gl_uintmax_t ++# endif ++#endif ++ ++/* Verify that intmax_t and uintmax_t have the same size. Too much code ++ breaks if this is not the case. If this check fails, the reason is likely ++ to be found in the autoconf macros. */ ++typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ++ ? 1 : -1]; ++ ++#define GNULIB_defined_stdint_types 1 ++#endif /* !GNULIB_defined_stdint_types */ ++ ++/* 7.18.2. Limits of specified-width integer types */ ++ ++/* 7.18.2.1. Limits of exact-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. */ ++ ++#undef INT8_MIN ++#undef INT8_MAX ++#undef UINT8_MAX ++#define INT8_MIN (~ INT8_MAX) ++#define INT8_MAX 127 ++#define UINT8_MAX 255 ++ ++#undef INT16_MIN ++#undef INT16_MAX ++#undef UINT16_MAX ++#define INT16_MIN (~ INT16_MAX) ++#define INT16_MAX 32767 ++#define UINT16_MAX 65535 ++ ++#undef INT32_MIN ++#undef INT32_MAX ++#undef UINT32_MAX ++#define INT32_MIN (~ INT32_MAX) ++#define INT32_MAX 2147483647 ++#define UINT32_MAX 4294967295U ++ ++#if defined GL_INT64_T && ! defined INT64_MAX ++/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 ++ evaluates the latter incorrectly in preprocessor expressions. */ ++# define INT64_MIN (- INTMAX_C (1) << 63) ++# define INT64_MAX INTMAX_C (9223372036854775807) ++#endif ++ ++#if defined GL_UINT64_T && ! defined UINT64_MAX ++# define UINT64_MAX UINTMAX_C (18446744073709551615) ++#endif ++ ++/* 7.18.2.2. Limits of minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types ++ are the same as the corresponding N_t types. */ ++ ++#undef INT_LEAST8_MIN ++#undef INT_LEAST8_MAX ++#undef UINT_LEAST8_MAX ++#define INT_LEAST8_MIN INT8_MIN ++#define INT_LEAST8_MAX INT8_MAX ++#define UINT_LEAST8_MAX UINT8_MAX ++ ++#undef INT_LEAST16_MIN ++#undef INT_LEAST16_MAX ++#undef UINT_LEAST16_MAX ++#define INT_LEAST16_MIN INT16_MIN ++#define INT_LEAST16_MAX INT16_MAX ++#define UINT_LEAST16_MAX UINT16_MAX ++ ++#undef INT_LEAST32_MIN ++#undef INT_LEAST32_MAX ++#undef UINT_LEAST32_MAX ++#define INT_LEAST32_MIN INT32_MIN ++#define INT_LEAST32_MAX INT32_MAX ++#define UINT_LEAST32_MAX UINT32_MAX ++ ++#undef INT_LEAST64_MIN ++#undef INT_LEAST64_MAX ++#ifdef GL_INT64_T ++# define INT_LEAST64_MIN INT64_MIN ++# define INT_LEAST64_MAX INT64_MAX ++#endif ++ ++#undef UINT_LEAST64_MAX ++#ifdef GL_UINT64_T ++# define UINT_LEAST64_MAX UINT64_MAX ++#endif ++ ++/* 7.18.2.3. Limits of fastest minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types ++ are taken from the same list of types. */ ++ ++#undef INT_FAST8_MIN ++#undef INT_FAST8_MAX ++#undef UINT_FAST8_MAX ++#define INT_FAST8_MIN SCHAR_MIN ++#define INT_FAST8_MAX SCHAR_MAX ++#define UINT_FAST8_MAX UCHAR_MAX ++ ++#undef INT_FAST16_MIN ++#undef INT_FAST16_MAX ++#undef UINT_FAST16_MAX ++#define INT_FAST16_MIN INT_FAST32_MIN ++#define INT_FAST16_MAX INT_FAST32_MAX ++#define UINT_FAST16_MAX UINT_FAST32_MAX ++ ++#undef INT_FAST32_MIN ++#undef INT_FAST32_MAX ++#undef UINT_FAST32_MAX ++#ifdef __sun ++# define INT_FAST32_MIN INT_MIN ++# define INT_FAST32_MAX INT_MAX ++# define UINT_FAST32_MAX UINT_MAX ++#else ++# define INT_FAST32_MIN LONG_MIN ++# define INT_FAST32_MAX LONG_MAX ++# define UINT_FAST32_MAX ULONG_MAX ++#endif ++ ++#undef INT_FAST64_MIN ++#undef INT_FAST64_MAX ++#ifdef GL_INT64_T ++# define INT_FAST64_MIN INT64_MIN ++# define INT_FAST64_MAX INT64_MAX ++#endif ++ ++#undef UINT_FAST64_MAX ++#ifdef GL_UINT64_T ++# define UINT_FAST64_MAX UINT64_MAX ++#endif ++ ++/* 7.18.2.4. Limits of integer types capable of holding object pointers */ ++ ++#undef INTPTR_MIN ++#undef INTPTR_MAX ++#undef UINTPTR_MAX ++#define INTPTR_MIN LONG_MIN ++#define INTPTR_MAX LONG_MAX ++#define UINTPTR_MAX ULONG_MAX ++ ++/* 7.18.2.5. Limits of greatest-width integer types */ ++ ++#ifndef INTMAX_MAX ++# undef INTMAX_MIN ++# ifdef INT64_MAX ++# define INTMAX_MIN INT64_MIN ++# define INTMAX_MAX INT64_MAX ++# else ++# define INTMAX_MIN INT32_MIN ++# define INTMAX_MAX INT32_MAX ++# endif ++#endif ++ ++#ifndef UINTMAX_MAX ++# ifdef UINT64_MAX ++# define UINTMAX_MAX UINT64_MAX ++# else ++# define UINTMAX_MAX UINT32_MAX ++# endif ++#endif ++ ++/* 7.18.3. Limits of other integer types */ ++ ++/* ptrdiff_t limits */ ++#undef PTRDIFF_MIN ++#undef PTRDIFF_MAX ++#if 0 ++# ifdef _LP64 ++# define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) ++# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) ++# else ++# define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) ++# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) ++# endif ++#else ++# ifdef _WIN64 ++# define PTRDIFF_MIN \ ++ _STDINT_MIN (1, 64, 0ll) ++# define PTRDIFF_MAX \ ++ _STDINT_MAX (1, 64, 0ll) ++# else ++# define PTRDIFF_MIN \ ++ _STDINT_MIN (1, 32, 0) ++# define PTRDIFF_MAX \ ++ _STDINT_MAX (1, 32, 0) ++# endif ++#endif ++ ++/* sig_atomic_t limits */ ++#undef SIG_ATOMIC_MIN ++#undef SIG_ATOMIC_MAX ++#define SIG_ATOMIC_MIN \ ++ _STDINT_MIN (1, 32, \ ++ 0) ++#define SIG_ATOMIC_MAX \ ++ _STDINT_MAX (1, 32, \ ++ 0) ++ ++ ++/* size_t limit */ ++#undef SIZE_MAX ++#if 0 ++# ifdef _LP64 ++# define SIZE_MAX _STDINT_MAX (0, 64, 0ul) ++# else ++# define SIZE_MAX _STDINT_MAX (0, 32, 0ul) ++# endif ++#else ++# ifdef _WIN64 ++# define SIZE_MAX _STDINT_MAX (0, 64, 0ull) ++# else ++# define SIZE_MAX _STDINT_MAX (0, 32, 0u) ++# endif ++#endif ++ ++/* wchar_t limits */ ++/* Get WCHAR_MIN, WCHAR_MAX. ++ This include is not on the top, above, because on OSF/1 4.0 we have a ++ sequence of nested includes ++ -> -> -> , and the latter includes ++ and assumes its types are already defined. */ ++#if 1 && ! (defined WCHAR_MIN && defined WCHAR_MAX) ++ /* BSD/OS 4.0.1 has a bug: , and must be ++ included before . */ ++# include ++# include ++# include ++# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H ++# include ++# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H ++#endif ++#undef WCHAR_MIN ++#undef WCHAR_MAX ++#define WCHAR_MIN \ ++ _STDINT_MIN (0, 16, 0) ++#define WCHAR_MAX \ ++ _STDINT_MAX (0, 16, 0) ++ ++/* wint_t limits */ ++#undef WINT_MIN ++#undef WINT_MAX ++#define WINT_MIN \ ++ _STDINT_MIN (0, 32, 0) ++#define WINT_MAX \ ++ _STDINT_MAX (0, 32, 0) ++ ++/* 7.18.4. Macros for integer constants */ ++ ++/* 7.18.4.1. Macros for minimum-width integer constants */ ++/* According to ISO C 99 Technical Corrigendum 1 */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ ++ ++#undef INT8_C ++#undef UINT8_C ++#define INT8_C(x) x ++#define UINT8_C(x) x ++ ++#undef INT16_C ++#undef UINT16_C ++#define INT16_C(x) x ++#define UINT16_C(x) x ++ ++#undef INT32_C ++#undef UINT32_C ++#define INT32_C(x) x ++#define UINT32_C(x) x ## U ++ ++#undef INT64_C ++#undef UINT64_C ++#if LONG_MAX >> 31 >> 31 == 1 ++# define INT64_C(x) x##L ++#elif defined _MSC_VER ++# define INT64_C(x) x##i64 ++#elif 1 ++# define INT64_C(x) x##LL ++#endif ++#if ULONG_MAX >> 31 >> 31 >> 1 == 1 ++# define UINT64_C(x) x##UL ++#elif defined _MSC_VER ++# define UINT64_C(x) x##ui64 ++#elif 1 ++# define UINT64_C(x) x##ULL ++#endif ++ ++/* 7.18.4.2. Macros for greatest-width integer constants */ ++ ++#ifndef INTMAX_C ++# if 1 && LONG_MAX >> 30 == 1 ++# define INTMAX_C(x) x##LL ++# elif defined GL_INT64_T ++# define INTMAX_C(x) INT64_C(x) ++# else ++# define INTMAX_C(x) x##L ++# endif ++#endif ++ ++#ifndef UINTMAX_C ++# if 1 && ULONG_MAX >> 31 == 1 ++# define UINTMAX_C(x) x##ULL ++# elif defined GL_UINT64_T ++# define UINTMAX_C(x) UINT64_C(x) ++# else ++# define UINTMAX_C(x) x##UL ++# endif ++#endif ++ ++#endif /* _GL_STDINT_H */ ++#endif /* !(defined __ANDROID__ && ...) */ ++#endif /* !defined _GL_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ ++#endif /* _MSC_VER < 1700 */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdio.h gettext-0.19/gettext-tools/gnulib-lib/msvc/stdio.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdio.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/stdio.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1669 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2004, 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H ++/* Special invocation convention: ++ - Inside glibc header files. ++ - On OSF/1 5.1 we have a sequence of nested includes ++ -> -> -> -> ++ -> -> -> . ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. */ ++ ++#include MSVC_INCLUDE(stdio.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_STDIO_H ++ ++#define _GL_ALREADY_INCLUDING_STDIO_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(stdio.h) ++ ++#undef _GL_ALREADY_INCLUDING_STDIO_H ++ ++#ifndef _GL_STDIO_H ++#define _GL_STDIO_H ++ ++/* Get va_list. Needed on many systems, including glibc 2.8. */ ++#include ++ ++#include ++ ++/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 ++ and eglibc 2.11.2. ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The __-protected variants of the attributes 'format' and 'printf' are ++ accepted by gcc versions 2.6.4 (effectively 2.7) and later. ++ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because ++ gnulib and libintl do '#define printf __printf__' when they override ++ the 'printf' function. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) ++#else ++# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_PRINTF ++ indicates to GCC that the function takes a format string and arguments, ++ where the format string directives are the ones standardized by ISO C99 ++ and POSIX. */ ++#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) ++# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) ++#else ++# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, ++ except that it indicates to GCC that the supported format string directives ++ are the ones of the system printf(), rather than the ones standardized by ++ ISO C99 and POSIX. */ ++#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU ++# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument) ++#else ++# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_SCANF ++ indicates to GCC that the function takes a format string and arguments, ++ where the format string directives are the ones standardized by ISO C99 ++ and POSIX. */ ++#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) ++# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) ++#else ++# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, ++ except that it indicates to GCC that the supported format string directives ++ are the ones of the system scanf(), rather than the ones standardized by ++ ISO C99 and POSIX. */ ++#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) ++ ++/* Solaris 10 declares renameat in , not in . */ ++/* But in any case avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __sun \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Macros for stringification. */ ++#define _GL_STDIO_STRINGIZE(token) #token ++#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) ++ ++/* When also using extern inline, suppress the use of static inline in ++ standard headers of problematic Apple configurations, as Libc at ++ least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., ++ . ++ Perhaps Apple will fix this some day. */ ++#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ ++ && defined __GNUC__ && defined __STDC__) ++# undef putc_unlocked ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dprintf rpl_dprintf ++# endif ++_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (dprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef dprintf ++# if HAVE_RAW_DECL_DPRINTF ++_GL_WARN_ON_USE (dprintf, "dprintf is unportable - " ++ "use gnulib module dprintf for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Close STREAM and its underlying file descriptor. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fclose rpl_fclose ++# endif ++_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fclose); ++#elif defined GNULIB_POSIXCHECK ++# undef fclose ++/* Assume fclose is always declared. */ ++_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " ++ "use gnulib module fclose for portable POSIX compliance"); ++#endif ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fdopen ++# define fdopen rpl_fdopen ++# endif ++_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); ++# else ++_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); ++# endif ++_GL_CXXALIASWARN (fdopen); ++#elif defined GNULIB_POSIXCHECK ++# undef fdopen ++/* Assume fdopen is always declared. */ ++_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module fdopen for portability"); ++#endif ++ ++#if 0 ++/* Flush all pending data on STREAM according to POSIX rules. Both ++ output and seekable input streams are supported. ++ Note! LOSS OF DATA can occur if fflush is applied on an input stream ++ that is _not_seekable_ or on an update stream that is _not_seekable_ ++ and in which the most recent operation was input. Seekability can ++ be tested with lseek(fileno(fp),0,SEEK_CUR). */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fflush rpl_fflush ++# endif ++_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); ++_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); ++# else ++_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); ++# endif ++_GL_CXXALIASWARN (fflush); ++#elif defined GNULIB_POSIXCHECK ++# undef fflush ++/* Assume fflush is always declared. */ ++_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " ++ "use gnulib module fflush for portable POSIX compliance"); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fgetc ++# define fgetc rpl_fgetc ++# endif ++_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fgetc); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fgets ++# define fgets rpl_fgets ++# endif ++_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fgets); ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fopen ++# define fopen rpl_fopen ++# endif ++_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); ++# else ++_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); ++# endif ++_GL_CXXALIASWARN (fopen); ++#elif defined GNULIB_POSIXCHECK ++# undef fopen ++/* Assume fopen is always declared. */ ++_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module fopen for portability"); ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fprintf rpl_fprintf ++# endif ++# define GNULIB_overrides_fprintf 1 ++# if 0 || 0 ++_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# else ++_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (fprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_fprintf ++# undef fprintf ++# endif ++/* Assume fprintf is always declared. */ ++_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " ++ "use gnulib module fprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++/* Discard all pending buffered I/O data on STREAM. ++ STREAM must not be wide-character oriented. ++ When discarding pending output, the file position is set back to where it ++ was before the write calls. When discarding pending input, the file ++ position is advanced to match the end of the previously read input. ++ Return 0 if successful. Upon error, return -1 and set errno. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fpurge rpl_fpurge ++# endif ++_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); ++# endif ++_GL_CXXALIASWARN (fpurge); ++#elif defined GNULIB_POSIXCHECK ++# undef fpurge ++# if HAVE_RAW_DECL_FPURGE ++_GL_WARN_ON_USE (fpurge, "fpurge is not always present - " ++ "use gnulib module fpurge for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fputc ++# define fputc rpl_fputc ++# endif ++_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fputc); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fputs ++# define fputs rpl_fputs ++# endif ++_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fputs); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fread ++# define fread rpl_fread ++# endif ++_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) ++ _GL_ARG_NONNULL ((4))); ++_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fread); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef freopen ++# define freopen rpl_freopen ++# endif ++_GL_FUNCDECL_RPL (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (freopen); ++#elif defined GNULIB_POSIXCHECK ++# undef freopen ++/* Assume freopen is always declared. */ ++_GL_WARN_ON_USE (freopen, ++ "freopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module freopen for portability"); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fscanf ++# define fscanf rpl_fscanf ++# endif ++_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (fscanf); ++#endif ++ ++ ++/* Set up the following warnings, based on which modules are in use. ++ GNU Coding Standards discourage the use of fseek, since it imposes ++ an arbitrary limitation on some 32-bit hosts. Remember that the ++ fseek module depends on the fseeko module, so we only have three ++ cases to consider: ++ ++ 1. The developer is not using either module. Issue a warning under ++ GNULIB_POSIXCHECK for both functions, to remind them that both ++ functions have bugs on some systems. _GL_NO_LARGE_FILES has no ++ impact on this warning. ++ ++ 2. The developer is using both modules. They may be unaware of the ++ arbitrary limitations of fseek, so issue a warning under ++ GNULIB_POSIXCHECK. On the other hand, they may be using both ++ modules intentionally, so the developer can define ++ _GL_NO_LARGE_FILES in the compilation units where the use of fseek ++ is safe, to silence the warning. ++ ++ 3. The developer is using the fseeko module, but not fseek. Gnulib ++ guarantees that fseek will still work around platform bugs in that ++ case, but we presume that the developer is aware of the pitfalls of ++ fseek and was trying to avoid it, so issue a warning even when ++ GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be ++ defined to silence the warning in particular compilation units. ++ In C++ compilations with GNULIB_NAMESPACE, in order to avoid that ++ fseek gets defined as a macro, it is recommended that the developer ++ uses the fseek module, even if he is not calling the fseek function. ++ ++ Most gnulib clients that perform stream operations should fall into ++ category 3. */ ++ ++#if 0 ++# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES ++# define _GL_FSEEK_WARN /* Category 2, above. */ ++# undef fseek ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fseek ++# define fseek rpl_fseek ++# endif ++_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); ++# else ++_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); ++# endif ++_GL_CXXALIASWARN (fseek); ++#endif ++ ++#if 0 ++# if !0 && !defined _GL_NO_LARGE_FILES ++# define _GL_FSEEK_WARN /* Category 3, above. */ ++# undef fseek ++# endif ++# if 0 ++/* Provide an fseeko function that is aware of a preceding fflush(), and which ++ detects pipes. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fseeko ++# define fseeko rpl_fseeko ++# endif ++_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); ++# endif ++_GL_CXXALIASWARN (fseeko); ++#elif defined GNULIB_POSIXCHECK ++# define _GL_FSEEK_WARN /* Category 1, above. */ ++# undef fseek ++# undef fseeko ++# if HAVE_RAW_DECL_FSEEKO ++_GL_WARN_ON_USE (fseeko, "fseeko is unportable - " ++ "use gnulib module fseeko for portability"); ++# endif ++#endif ++ ++#ifdef _GL_FSEEK_WARN ++# undef _GL_FSEEK_WARN ++/* Here, either fseek is undefined (but C89 guarantees that it is ++ declared), or it is defined as rpl_fseek (declared above). */ ++_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " ++ "on 32-bit platforms - " ++ "use fseeko function for handling of large files"); ++#endif ++ ++ ++/* ftell, ftello. See the comments on fseek/fseeko. */ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES ++# define _GL_FTELL_WARN /* Category 2, above. */ ++# undef ftell ++# endif ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftell ++# define ftell rpl_ftell ++# endif ++_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); ++# else ++_GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); ++# endif ++_GL_CXXALIASWARN (ftell); ++#endif ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if !IN_GETTEXT_TOOLS_GNULIB_TESTS && !defined _GL_NO_LARGE_FILES ++# define _GL_FTELL_WARN /* Category 3, above. */ ++# undef ftell ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftello ++# define ftello rpl_ftello ++# endif ++_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); ++# else ++# if ! 0 ++_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); ++# endif ++_GL_CXXALIASWARN (ftello); ++#elif defined GNULIB_POSIXCHECK ++# define _GL_FTELL_WARN /* Category 1, above. */ ++# undef ftell ++# undef ftello ++# if HAVE_RAW_DECL_FTELLO ++_GL_WARN_ON_USE (ftello, "ftello is unportable - " ++ "use gnulib module ftello for portability"); ++# endif ++#endif ++ ++#ifdef _GL_FTELL_WARN ++# undef _GL_FTELL_WARN ++/* Here, either ftell is undefined (but C89 guarantees that it is ++ declared), or it is defined as rpl_ftell (declared above). */ ++_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " ++ "on 32-bit platforms - " ++ "use ftello function for handling of large files"); ++#endif ++ ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fwrite ++# define fwrite rpl_fwrite ++# endif ++_GL_FUNCDECL_RPL (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream) ++ _GL_ARG_NONNULL ((1, 4))); ++_GL_CXXALIAS_RPL (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream)); ++ ++/* Work around bug 11959 when fortifying glibc 2.4 through 2.15 ++ , ++ which sometimes causes an unwanted diagnostic for fwrite calls. ++ This affects only function declaration attributes under certain ++ versions of gcc and clang, and is not needed for C++. */ ++# if (0 < __USE_FORTIFY_LEVEL \ ++ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ ++ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ ++ && !defined __cplusplus) ++# undef fwrite ++# undef fwrite_unlocked ++extern size_t __REDIRECT (rpl_fwrite, ++ (const void *__restrict, size_t, size_t, ++ FILE *__restrict), ++ fwrite); ++extern size_t __REDIRECT (rpl_fwrite_unlocked, ++ (const void *__restrict, size_t, size_t, ++ FILE *__restrict), ++ fwrite_unlocked); ++# define fwrite rpl_fwrite ++# define fwrite_unlocked rpl_fwrite_unlocked ++# endif ++# endif ++_GL_CXXALIASWARN (fwrite); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getc ++# define getc rpl_fgetc ++# endif ++_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (getc, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (getc); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getchar ++# define getchar rpl_getchar ++# endif ++_GL_FUNCDECL_RPL (getchar, int, (void)); ++_GL_CXXALIAS_RPL (getchar, int, (void)); ++# else ++_GL_CXXALIAS_SYS (getchar, int, (void)); ++# endif ++_GL_CXXALIASWARN (getchar); ++#endif ++ ++#if 1 ++/* Read input, up to (and including) the next occurrence of DELIMITER, from ++ STREAM, store it in *LINEPTR (and NUL-terminate it). ++ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE ++ bytes of space. It is realloc'd as necessary. ++ Return the number of bytes read and stored at *LINEPTR (not including the ++ NUL terminator), or -1 on error or EOF. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdelim ++# define getdelim rpl_getdelim ++# endif ++_GL_FUNCDECL_RPL (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 4))); ++_GL_CXXALIAS_RPL (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 4))); ++# endif ++_GL_CXXALIAS_SYS (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream)); ++# endif ++_GL_CXXALIASWARN (getdelim); ++#elif defined GNULIB_POSIXCHECK ++# undef getdelim ++# if HAVE_RAW_DECL_GETDELIM ++_GL_WARN_ON_USE (getdelim, "getdelim is unportable - " ++ "use gnulib module getdelim for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Read a line, up to (and including) the next newline, from STREAM, store it ++ in *LINEPTR (and NUL-terminate it). ++ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE ++ bytes of space. It is realloc'd as necessary. ++ Return the number of bytes read and stored at *LINEPTR (not including the ++ NUL terminator), or -1 on error or EOF. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getline ++# define getline rpl_getline ++# endif ++_GL_FUNCDECL_RPL (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++_GL_CXXALIAS_RPL (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream)); ++# endif ++# if 0 ++_GL_CXXALIASWARN (getline); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef getline ++# if HAVE_RAW_DECL_GETLINE ++_GL_WARN_ON_USE (getline, "getline is unportable - " ++ "use gnulib module getline for portability"); ++# endif ++#endif ++ ++/* It is very rare that the developer ever has full control of stdin, ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS && !defined __cplusplus ++_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ++#endif ++ ++#if 0 || 0 ++struct obstack; ++/* Grow an obstack with formatted output. Return the number of ++ bytes added to OBS. No trailing nul byte is added, and the ++ object should be closed with obstack_finish before use. Upon ++ memory allocation error, call obstack_alloc_failed_handler. Upon ++ other error, return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define obstack_printf rpl_obstack_printf ++# endif ++_GL_FUNCDECL_RPL (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (obstack_printf); ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define obstack_vprintf rpl_obstack_vprintf ++# endif ++_GL_FUNCDECL_RPL (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (obstack_vprintf); ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); ++_GL_CXXALIASWARN (pclose); ++#elif defined GNULIB_POSIXCHECK ++# undef pclose ++# if HAVE_RAW_DECL_PCLOSE ++_GL_WARN_ON_USE (pclose, "pclose is unportable - " ++ "use gnulib module pclose for more portability"); ++# endif ++#endif ++ ++#if 0 ++/* Print a message to standard error, describing the value of ERRNO, ++ (if STRING is not NULL and not empty) prefixed with STRING and ": ", ++ and terminated with a newline. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define perror rpl_perror ++# endif ++_GL_FUNCDECL_RPL (perror, void, (const char *string)); ++_GL_CXXALIAS_RPL (perror, void, (const char *string)); ++# else ++_GL_CXXALIAS_SYS (perror, void, (const char *string)); ++# endif ++_GL_CXXALIASWARN (perror); ++#elif defined GNULIB_POSIXCHECK ++# undef perror ++/* Assume perror is always declared. */ ++_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " ++ "use gnulib module perror for portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef popen ++# define popen rpl_popen ++# endif ++_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); ++# endif ++_GL_CXXALIASWARN (popen); ++#elif defined GNULIB_POSIXCHECK ++# undef popen ++# if HAVE_RAW_DECL_POPEN ++_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " ++ "use gnulib module popen or pipe for more portability"); ++# endif ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if defined __GNUC__ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++/* Don't break __attribute__((format(printf,M,N))). */ ++# define printf __printf__ ++# endif ++# if 0 || 0 ++_GL_FUNCDECL_RPL_1 (__printf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) ++ _GL_ARG_NONNULL ((1))); ++# else ++_GL_FUNCDECL_RPL_1 (__printf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); ++# else ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define printf rpl_printf ++# endif ++_GL_FUNCDECL_RPL (printf, int, ++ (const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); ++# endif ++# define GNULIB_overrides_printf 1 ++# else ++_GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (printf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_printf ++# undef printf ++# endif ++/* Assume printf is always declared. */ ++_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " ++ "use gnulib module printf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putc ++# define putc rpl_fputc ++# endif ++_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (putc); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putchar ++# define putchar rpl_putchar ++# endif ++_GL_FUNCDECL_RPL (putchar, int, (int c)); ++_GL_CXXALIAS_RPL (putchar, int, (int c)); ++# else ++_GL_CXXALIAS_SYS (putchar, int, (int c)); ++# endif ++_GL_CXXALIASWARN (putchar); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef puts ++# define puts rpl_puts ++# endif ++_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (puts, int, (const char *string)); ++# else ++_GL_CXXALIAS_SYS (puts, int, (const char *string)); ++# endif ++_GL_CXXALIASWARN (puts); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef remove ++# define remove rpl_remove ++# endif ++_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (remove, int, (const char *name)); ++# else ++_GL_CXXALIAS_SYS (remove, int, (const char *name)); ++# endif ++_GL_CXXALIASWARN (remove); ++#elif defined GNULIB_POSIXCHECK ++# undef remove ++/* Assume remove is always declared. */ ++_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " ++ "use gnulib module remove for more portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef rename ++# define rename rpl_rename ++# endif ++_GL_FUNCDECL_RPL (rename, int, ++ (const char *old_filename, const char *new_filename) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (rename, int, ++ (const char *old_filename, const char *new_filename)); ++# else ++_GL_CXXALIAS_SYS (rename, int, ++ (const char *old_filename, const char *new_filename)); ++# endif ++_GL_CXXALIASWARN (rename); ++#elif defined GNULIB_POSIXCHECK ++# undef rename ++/* Assume rename is always declared. */ ++_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " ++ "use gnulib module rename for more portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef renameat ++# define renameat rpl_renameat ++# endif ++_GL_FUNCDECL_RPL (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2)); ++# endif ++_GL_CXXALIASWARN (renameat); ++#elif defined GNULIB_POSIXCHECK ++# undef renameat ++# if HAVE_RAW_DECL_RENAMEAT ++_GL_WARN_ON_USE (renameat, "renameat is not portable - " ++ "use gnulib module renameat for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if defined __GNUC__ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef scanf ++/* Don't break __attribute__((format(scanf,M,N))). */ ++# define scanf __scanf__ ++# endif ++_GL_FUNCDECL_RPL_1 (__scanf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); ++# else ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef scanf ++# define scanf rpl_scanf ++# endif ++_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); ++# endif ++# else ++_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (scanf); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define snprintf rpl_snprintf ++# endif ++_GL_FUNCDECL_RPL (snprintf, int, ++ (char *str, size_t size, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) ++ _GL_ARG_NONNULL ((3))); ++_GL_CXXALIAS_RPL (snprintf, int, ++ (char *str, size_t size, const char *format, ...)); ++# else ++# if (_MSC_VER < 1900) ++_GL_FUNCDECL_SYS (snprintf, int, ++ (char *str, size_t size, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) ++ _GL_ARG_NONNULL ((3))); ++# endif ++_GL_CXXALIAS_SYS (snprintf, int, ++ (char *str, size_t size, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (snprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef snprintf ++# if HAVE_RAW_DECL_SNPRINTF ++_GL_WARN_ON_USE (snprintf, "snprintf is unportable - " ++ "use gnulib module snprintf for portability"); ++# endif ++#endif ++ ++/* Some people would argue that all sprintf uses should be warned about ++ (for example, OpenBSD issues a link warning for it), ++ since it can cause security holes due to buffer overruns. ++ However, we believe that sprintf can be used safely, and is more ++ efficient than snprintf in those safe cases; and as proof of our ++ belief, we use sprintf in several gnulib modules. So this header ++ intentionally avoids adding a warning to sprintf except when ++ GNULIB_POSIXCHECK is defined. */ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define sprintf rpl_sprintf ++# endif ++_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (sprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef sprintf ++/* Assume sprintf is always declared. */ ++_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " ++ "use gnulib module sprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define tmpfile rpl_tmpfile ++# endif ++_GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); ++_GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); ++# else ++_GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); ++# endif ++_GL_CXXALIASWARN (tmpfile); ++#elif defined GNULIB_POSIXCHECK ++# undef tmpfile ++# if HAVE_RAW_DECL_TMPFILE ++_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " ++ "use gnulib module tmpfile for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Write formatted output to a string dynamically allocated with malloc(). ++ If the memory allocation succeeds, store the address of the string in ++ *RESULT and return the number of resulting bytes, excluding the trailing ++ NUL. Upon memory allocation error, or some other error, return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define asprintf rpl_asprintf ++# endif ++_GL_FUNCDECL_RPL (asprintf, int, ++ (char **result, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (asprintf, int, ++ (char **result, const char *format, ...)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (asprintf, int, ++ (char **result, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (asprintf, int, ++ (char **result, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (asprintf); ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vasprintf rpl_vasprintf ++# endif ++_GL_FUNCDECL_RPL (vasprintf, int, ++ (char **result, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vasprintf, int, ++ (char **result, const char *format, va_list args)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (vasprintf, int, ++ (char **result, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (vasprintf, int, ++ (char **result, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vasprintf); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vdprintf rpl_vdprintf ++# endif ++_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((2))); ++# endif ++/* Need to cast, because on Solaris, the third parameter will likely be ++ __va_list args. */ ++_GL_CXXALIAS_SYS_CAST (vdprintf, int, ++ (int fd, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vdprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vdprintf ++# if HAVE_RAW_DECL_VDPRINTF ++_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " ++ "use gnulib module vdprintf for portability"); ++# endif ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vfprintf rpl_vfprintf ++# endif ++# define GNULIB_overrides_vfprintf 1 ++# if 0 ++_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# else ++_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the third parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vfprintf, int, ++ (FILE *fp, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vfprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_vfprintf ++# undef vfprintf ++# endif ++/* Assume vfprintf is always declared. */ ++_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " ++ "use gnulib module vfprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef vfscanf ++# define vfscanf rpl_vfscanf ++# endif ++_GL_FUNCDECL_RPL (vfscanf, int, ++ (FILE *stream, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vfscanf, int, ++ (FILE *stream, const char *format, va_list args)); ++# else ++_GL_CXXALIAS_SYS (vfscanf, int, ++ (FILE *stream, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vfscanf); ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vprintf rpl_vprintf ++# endif ++# define GNULIB_overrides_vprintf 1 ++# if 0 || 0 ++_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) ++ _GL_ARG_NONNULL ((1))); ++# else ++_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the second parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_vprintf ++# undef vprintf ++# endif ++/* Assume vprintf is always declared. */ ++_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " ++ "use gnulib module vprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef vscanf ++# define vscanf rpl_vscanf ++# endif ++_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); ++# else ++_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vscanf); ++#endif ++ ++#if 1 ++# if (_MSC_VER < 1900) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vsnprintf rpl_vsnprintf ++# endif ++_GL_FUNCDECL_RPL (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) ++ _GL_ARG_NONNULL ((3))); ++_GL_CXXALIAS_RPL (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) ++ _GL_ARG_NONNULL ((3))); ++# endif ++_GL_CXXALIAS_SYS (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vsnprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vsnprintf ++# if HAVE_RAW_DECL_VSNPRINTF ++_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " ++ "use gnulib module vsnprintf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vsprintf rpl_vsprintf ++# endif ++_GL_FUNCDECL_RPL (vsprintf, int, ++ (char *str, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vsprintf, int, ++ (char *str, const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the third parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vsprintf, int, ++ (char *str, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vsprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vsprintf ++/* Assume vsprintf is always declared. */ ++_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " ++ "use gnulib module vsprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#endif /* _GL_STDIO_H */ ++#endif /* _GL_STDIO_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdlib.h gettext-0.19/gettext-tools/gnulib-lib/msvc/stdlib.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/stdlib.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/stdlib.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1299 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 1995, 2001-2004, 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc ++/* Special invocation conventions inside some gnulib header files, ++ and inside some glibc header files, respectively. */ ++ ++#include MSVC_INCLUDE(stdlib.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_STDLIB_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(stdlib.h) ++ ++#ifndef _GL_STDLIB_H ++#define _GL_STDLIB_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* MirBSD 10 defines WEXITSTATUS in , not in . */ ++#if 0 && !defined WEXITSTATUS ++# include ++#endif ++ ++/* Solaris declares getloadavg() in . */ ++#if (0 || defined GNULIB_POSIXCHECK) && 0 ++# include ++#endif ++ ++/* Native Windows platforms declare mktemp() in . */ ++#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++#if 0 ++ ++/* OSF/1 5.1 declares 'struct random_data' in , which is included ++ from if _REENTRANT is defined. Include it whenever we need ++ 'struct random_data'. */ ++# if 1 ++# include ++# endif ++ ++# if !1 || 0 || !1 ++# include ++# endif ++ ++# if !1 ++/* Define 'struct random_data'. ++ But allow multiple gnulib generated replacements to coexist. */ ++# if !GNULIB_defined_struct_random_data ++struct random_data ++{ ++ int32_t *fptr; /* Front pointer. */ ++ int32_t *rptr; /* Rear pointer. */ ++ int32_t *state; /* Array of state values. */ ++ int rand_type; /* Type of random number generator. */ ++ int rand_deg; /* Degree of random number generator. */ ++ int rand_sep; /* Distance between front and rear. */ ++ int32_t *end_ptr; /* Pointer behind state table. */ ++}; ++# define GNULIB_defined_struct_random_data 1 ++# endif ++# endif ++#endif ++ ++#if (0 || 0 || 0 || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++/* On Mac OS X 10.3, only declares mkstemp. */ ++/* On Mac OS X 10.5, only declares mkstemps. */ ++/* On Cygwin 1.7.1, only declares getsubopt. */ ++/* But avoid namespace pollution on glibc systems and native Windows. */ ++# include ++#endif ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The definition of _Noreturn is copied here. */ ++#if !defined _Noreturn && __STDC_VERSION__ < 201112 ++# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ ++ || 0x5110 <= __SUNPRO_C) ++# define _Noreturn __attribute__ ((__noreturn__)) ++# elif 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn ++# endif ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Some systems do not define EXIT_*, despite otherwise supporting C89. */ ++#ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++#endif ++/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere ++ with proper operation of xargs. */ ++#ifndef EXIT_FAILURE ++# define EXIT_FAILURE 1 ++#elif EXIT_FAILURE != 1 ++# undef EXIT_FAILURE ++# define EXIT_FAILURE 1 ++#endif ++ ++ ++#if 0 ++/* Terminate the current process with the given return code, without running ++ the 'atexit' handlers. */ ++# if !1 ++_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); ++# endif ++_GL_CXXALIAS_SYS (_Exit, void, (int status)); ++_GL_CXXALIASWARN (_Exit); ++#elif defined GNULIB_POSIXCHECK ++# undef _Exit ++# if HAVE_RAW_DECL__EXIT ++_GL_WARN_ON_USE (_Exit, "_Exit is unportable - " ++ "use gnulib module _Exit for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Parse a signed decimal integer. ++ Returns the value of the integer. Errors are not detected. */ ++# if !1 ++_GL_FUNCDECL_SYS (atoll, long long, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (atoll, long long, (const char *string)); ++_GL_CXXALIASWARN (atoll); ++#elif defined GNULIB_POSIXCHECK ++# undef atoll ++# if HAVE_RAW_DECL_ATOLL ++_GL_WARN_ON_USE (atoll, "atoll is unportable - " ++ "use gnulib module atoll for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef calloc ++# define calloc rpl_calloc ++# endif ++_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); ++_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); ++# else ++_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); ++# endif ++_GL_CXXALIASWARN (calloc); ++#elif defined GNULIB_POSIXCHECK ++# undef calloc ++/* Assume calloc is always declared. */ ++_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " ++ "use gnulib module calloc-posix for portability"); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define canonicalize_file_name rpl_canonicalize_file_name ++# endif ++_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); ++# endif ++_GL_CXXALIASWARN (canonicalize_file_name); ++#elif defined GNULIB_POSIXCHECK ++# undef canonicalize_file_name ++# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME ++_GL_WARN_ON_USE (canonicalize_file_name, ++ "canonicalize_file_name is unportable - " ++ "use gnulib module canonicalize-lgpl for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store max(NELEM,3) load average numbers in LOADAVG[]. ++ The three numbers are the load average of the last 1 minute, the last 5 ++ minutes, and the last 15 minutes, respectively. ++ LOADAVG is an array of NELEM numbers. */ ++# if !1 ++_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); ++_GL_CXXALIASWARN (getloadavg); ++#elif defined GNULIB_POSIXCHECK ++# undef getloadavg ++# if HAVE_RAW_DECL_GETLOADAVG ++_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " ++ "use gnulib module getloadavg for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Assuming *OPTIONP is a comma separated list of elements of the form ++ "token" or "token=value", getsubopt parses the first of these elements. ++ If the first element refers to a "token" that is member of the given ++ NULL-terminated array of tokens: ++ - It replaces the comma with a NUL byte, updates *OPTIONP to point past ++ the first option and the comma, sets *VALUEP to the value of the ++ element (or NULL if it doesn't contain an "=" sign), ++ - It returns the index of the "token" in the given array of tokens. ++ Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. ++ For more details see the POSIX:2001 specification. ++ http://www.opengroup.org/susv3xsh/getsubopt.html */ ++# if !1 ++_GL_FUNCDECL_SYS (getsubopt, int, ++ (char **optionp, char *const *tokens, char **valuep) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (getsubopt, int, ++ (char **optionp, char *const *tokens, char **valuep)); ++_GL_CXXALIASWARN (getsubopt); ++#elif defined GNULIB_POSIXCHECK ++# undef getsubopt ++# if HAVE_RAW_DECL_GETSUBOPT ++_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " ++ "use gnulib module getsubopt for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Change the ownership and access permission of the slave side of the ++ pseudo-terminal whose master side is specified by FD. */ ++# if !1 ++_GL_FUNCDECL_SYS (grantpt, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (grantpt, int, (int fd)); ++_GL_CXXALIASWARN (grantpt); ++#elif defined GNULIB_POSIXCHECK ++# undef grantpt ++# if HAVE_RAW_DECL_GRANTPT ++_GL_WARN_ON_USE (grantpt, "grantpt is not portable - " ++ "use gnulib module grantpt for portability"); ++# endif ++#endif ++ ++/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not ++ rely on GNU or POSIX semantics for malloc and realloc (for example, ++ by never specifying a zero size), so it does not need malloc or ++ realloc to be redefined. */ ++#if 1 ++# if 1 ++# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ ++ || _GL_USE_STDLIB_ALLOC) ++# undef malloc ++# define malloc rpl_malloc ++# endif ++_GL_FUNCDECL_RPL (malloc, void *, (size_t size)); ++_GL_CXXALIAS_RPL (malloc, void *, (size_t size)); ++# else ++_GL_CXXALIAS_SYS (malloc, void *, (size_t size)); ++# endif ++_GL_CXXALIASWARN (malloc); ++#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC ++# undef malloc ++/* Assume malloc is always declared. */ ++_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " ++ "use gnulib module malloc-posix for portability"); ++#endif ++ ++/* Convert a multibyte character to a wide character. */ ++#if (IN_GETTEXT_TOOLS_GNULIB_TESTS || IN_GETTEXT_TOOLS_LIBGREP) ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbtowc ++# define mbtowc rpl_mbtowc ++# endif ++_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++# else ++_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++# endif ++_GL_CXXALIASWARN (mbtowc); ++#endif ++ ++#if 1 ++/* Create a unique temporary directory from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the directory name unique. ++ Returns TEMPLATE, or a null pointer if it cannot get a unique name. ++ The directory is created mode 700. */ ++# if !0 ++_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); ++_GL_CXXALIASWARN (mkdtemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkdtemp ++# if HAVE_RAW_DECL_MKDTEMP ++_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " ++ "use gnulib module mkdtemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ The file is then created, with the specified flags, ensuring it didn't exist ++ before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); ++_GL_CXXALIASWARN (mkostemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkostemp ++# if HAVE_RAW_DECL_MKOSTEMP ++_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " ++ "use gnulib module mkostemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE before a suffix of length ++ SUFFIXLEN must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ The file is then created, with the specified flags, ensuring it didn't exist ++ before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkostemps, int, ++ (char * /*template*/, int /*suffixlen*/, int /*flags*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkostemps, int, ++ (char * /*template*/, int /*suffixlen*/, int /*flags*/)); ++_GL_CXXALIASWARN (mkostemps); ++#elif defined GNULIB_POSIXCHECK ++# undef mkostemps ++# if HAVE_RAW_DECL_MKOSTEMPS ++_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " ++ "use gnulib module mkostemps for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The file is then created, ensuring it didn't exist before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mkstemp rpl_mkstemp ++# endif ++_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); ++# endif ++_GL_CXXALIASWARN (mkstemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkstemp ++# if HAVE_RAW_DECL_MKSTEMP ++_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " ++ "use gnulib module mkstemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE prior to a suffix of length ++ SUFFIXLEN must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The file is then created, ensuring it didn't exist before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); ++_GL_CXXALIASWARN (mkstemps); ++#elif defined GNULIB_POSIXCHECK ++# undef mkstemps ++# if HAVE_RAW_DECL_MKSTEMPS ++_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " ++ "use gnulib module mkstemps for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Return an FD open to the master side of a pseudo-terminal. Flags should ++ include O_RDWR, and may also include O_NOCTTY. */ ++# if !1 ++_GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); ++# endif ++_GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); ++_GL_CXXALIASWARN (posix_openpt); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_openpt ++# if HAVE_RAW_DECL_POSIX_OPENPT ++_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " ++ "use gnulib module posix_openpt for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Return the pathname of the pseudo-terminal slave associated with ++ the master FD is open on, or NULL on errors. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ptsname ++# define ptsname rpl_ptsname ++# endif ++_GL_FUNCDECL_RPL (ptsname, char *, (int fd)); ++_GL_CXXALIAS_RPL (ptsname, char *, (int fd)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ptsname, char *, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (ptsname, char *, (int fd)); ++# endif ++_GL_CXXALIASWARN (ptsname); ++#elif defined GNULIB_POSIXCHECK ++# undef ptsname ++# if HAVE_RAW_DECL_PTSNAME ++_GL_WARN_ON_USE (ptsname, "ptsname is not portable - " ++ "use gnulib module ptsname for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Set the pathname of the pseudo-terminal slave associated with ++ the master FD is open on and return 0, or set errno and return ++ non-zero on errors. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ptsname_r ++# define ptsname_r rpl_ptsname_r ++# endif ++_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); ++_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); ++# endif ++_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); ++# endif ++_GL_CXXALIASWARN (ptsname_r); ++#elif defined GNULIB_POSIXCHECK ++# undef ptsname_r ++# if HAVE_RAW_DECL_PTSNAME_R ++_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " ++ "use gnulib module ptsname_r for portability"); ++# endif ++#endif ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putenv ++# define putenv rpl_putenv ++# endif ++_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (putenv, int, (char *string)); ++# else ++_GL_CXXALIAS_SYS (putenv, int, (char *string)); ++# endif ++_GL_CXXALIASWARN (putenv); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef qsort_r ++# define qsort_r rpl_qsort_r ++# endif ++_GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg) _GL_ARG_NONNULL ((1, 4))); ++_GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg)); ++# else ++_GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg)); ++# endif ++_GL_CXXALIASWARN (qsort_r); ++#endif ++ ++ ++#if 0 ++# if !1 ++# ifndef RAND_MAX ++# define RAND_MAX 2147483647 ++# endif ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (random, long, (void)); ++# endif ++_GL_CXXALIAS_SYS (random, long, (void)); ++_GL_CXXALIASWARN (random); ++#elif defined GNULIB_POSIXCHECK ++# undef random ++# if HAVE_RAW_DECL_RANDOM ++_GL_WARN_ON_USE (random, "random is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); ++# endif ++_GL_CXXALIAS_SYS (srandom, void, (unsigned int seed)); ++_GL_CXXALIASWARN (srandom); ++#elif defined GNULIB_POSIXCHECK ++# undef srandom ++# if HAVE_RAW_DECL_SRANDOM ++_GL_WARN_ON_USE (srandom, "srandom is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (initstate, char *, ++ (unsigned int seed, char *buf, size_t buf_size) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (initstate, char *, ++ (unsigned int seed, char *buf, size_t buf_size)); ++_GL_CXXALIASWARN (initstate); ++#elif defined GNULIB_POSIXCHECK ++# undef initstate ++# if HAVE_RAW_DECL_INITSTATE_R ++_GL_WARN_ON_USE (initstate, "initstate is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (setstate, char *, (char *arg_state)); ++_GL_CXXALIASWARN (setstate); ++#elif defined GNULIB_POSIXCHECK ++# undef setstate ++# if HAVE_RAW_DECL_SETSTATE_R ++_GL_WARN_ON_USE (setstate, "setstate is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef random_r ++# define random_r rpl_random_r ++# endif ++_GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); ++# endif ++_GL_CXXALIASWARN (random_r); ++#elif defined GNULIB_POSIXCHECK ++# undef random_r ++# if HAVE_RAW_DECL_RANDOM_R ++_GL_WARN_ON_USE (random_r, "random_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef srandom_r ++# define srandom_r rpl_srandom_r ++# endif ++_GL_FUNCDECL_RPL (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (srandom_r); ++#elif defined GNULIB_POSIXCHECK ++# undef srandom_r ++# if HAVE_RAW_DECL_SRANDOM_R ++_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef initstate_r ++# define initstate_r rpl_initstate_r ++# endif ++_GL_FUNCDECL_RPL (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (initstate_r); ++#elif defined GNULIB_POSIXCHECK ++# undef initstate_r ++# if HAVE_RAW_DECL_INITSTATE_R ++_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setstate_r ++# define setstate_r rpl_setstate_r ++# endif ++_GL_FUNCDECL_RPL (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (setstate_r); ++#elif defined GNULIB_POSIXCHECK ++# undef setstate_r ++# if HAVE_RAW_DECL_SETSTATE_R ++_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ ++ || _GL_USE_STDLIB_ALLOC) ++# undef realloc ++# define realloc rpl_realloc ++# endif ++_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); ++_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); ++# else ++_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); ++# endif ++_GL_CXXALIASWARN (realloc); ++#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC ++# undef realloc ++/* Assume realloc is always declared. */ ++_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " ++ "use gnulib module realloc-posix for portability"); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define realpath rpl_realpath ++# endif ++_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved)); ++# endif ++_GL_CXXALIASWARN (realpath); ++#elif defined GNULIB_POSIXCHECK ++# undef realpath ++# if HAVE_RAW_DECL_REALPATH ++_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " ++ "canonicalize or canonicalize-lgpl for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Test a user response to a question. ++ Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ ++# if !1 ++_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); ++_GL_CXXALIASWARN (rpmatch); ++#elif defined GNULIB_POSIXCHECK ++# undef rpmatch ++# if HAVE_RAW_DECL_RPMATCH ++_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " ++ "use gnulib module rpmatch for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Look up NAME in the environment, returning 0 in insecure situations. */ ++# if !0 ++_GL_FUNCDECL_SYS (secure_getenv, char *, ++ (char const *name) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); ++_GL_CXXALIASWARN (secure_getenv); ++#elif defined GNULIB_POSIXCHECK ++# undef secure_getenv ++# if HAVE_RAW_DECL_SECURE_GETENV ++_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " ++ "use gnulib module secure_getenv for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Set NAME to VALUE in the environment. ++ If REPLACE is nonzero, overwrite an existing value. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setenv ++# define setenv rpl_setenv ++# endif ++_GL_FUNCDECL_RPL (setenv, int, ++ (const char *name, const char *value, int replace) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (setenv, int, ++ (const char *name, const char *value, int replace)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (setenv, int, ++ (const char *name, const char *value, int replace) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (setenv, int, ++ (const char *name, const char *value, int replace)); ++# endif ++# if !(0 && !0) ++_GL_CXXALIASWARN (setenv); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef setenv ++# if HAVE_RAW_DECL_SETENV ++_GL_WARN_ON_USE (setenv, "setenv is unportable - " ++ "use gnulib module setenv for portability"); ++# endif ++#endif ++ ++#if 0 ++ /* Parse a double from STRING, updating ENDP if appropriate. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strtod rpl_strtod ++# endif ++_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp)); ++# endif ++_GL_CXXALIASWARN (strtod); ++#elif defined GNULIB_POSIXCHECK ++# undef strtod ++# if HAVE_RAW_DECL_STRTOD ++_GL_WARN_ON_USE (strtod, "strtod is unportable - " ++ "use gnulib module strtod for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Parse a signed integer whose textual representation starts at STRING. ++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, ++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix ++ "0x"). ++ If ENDPTR is not NULL, the address of the first byte after the integer is ++ stored in *ENDPTR. ++ Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set ++ to ERANGE. */ ++# if !1 ++_GL_FUNCDECL_SYS (strtoll, long long, ++ (const char *string, char **endptr, int base) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtoll, long long, ++ (const char *string, char **endptr, int base)); ++_GL_CXXALIASWARN (strtoll); ++#elif defined GNULIB_POSIXCHECK ++# undef strtoll ++# if HAVE_RAW_DECL_STRTOLL ++_GL_WARN_ON_USE (strtoll, "strtoll is unportable - " ++ "use gnulib module strtoll for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Parse an unsigned integer whose textual representation starts at STRING. ++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, ++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix ++ "0x"). ++ If ENDPTR is not NULL, the address of the first byte after the integer is ++ stored in *ENDPTR. ++ Upon overflow, the return value is ULLONG_MAX, and errno is set to ++ ERANGE. */ ++# if !1 ++_GL_FUNCDECL_SYS (strtoull, unsigned long long, ++ (const char *string, char **endptr, int base) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtoull, unsigned long long, ++ (const char *string, char **endptr, int base)); ++_GL_CXXALIASWARN (strtoull); ++#elif defined GNULIB_POSIXCHECK ++# undef strtoull ++# if HAVE_RAW_DECL_STRTOULL ++_GL_WARN_ON_USE (strtoull, "strtoull is unportable - " ++ "use gnulib module strtoull for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Unlock the slave side of the pseudo-terminal whose master side is specified ++ by FD, so that it can be opened. */ ++# if !1 ++_GL_FUNCDECL_SYS (unlockpt, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (unlockpt, int, (int fd)); ++_GL_CXXALIASWARN (unlockpt); ++#elif defined GNULIB_POSIXCHECK ++# undef unlockpt ++# if HAVE_RAW_DECL_UNLOCKPT ++_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " ++ "use gnulib module unlockpt for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Remove the variable NAME from the environment. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unsetenv ++# define unsetenv rpl_unsetenv ++# endif ++_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); ++# endif ++# if !(0 && !0) ++_GL_CXXALIASWARN (unsetenv); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef unsetenv ++# if HAVE_RAW_DECL_UNSETENV ++_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " ++ "use gnulib module unsetenv for portability"); ++# endif ++#endif ++ ++/* Convert a wide character to a multibyte character. */ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wctomb ++# define wctomb rpl_wctomb ++# endif ++_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); ++_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); ++# else ++_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); ++# endif ++_GL_CXXALIASWARN (wctomb); ++#endif ++ ++ ++#endif /* _GL_STDLIB_H */ ++#endif /* _GL_STDLIB_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/string.h gettext-0.19/gettext-tools/gnulib-lib/msvc/string.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/string.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/string.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1358 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 1995-1996, 2001-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined _GL_ALREADY_INCLUDING_STRING_H ++/* Special invocation convention: ++ - On OS X/NetBSD we have a sequence of nested includes ++ -> -> "string.h" ++ In this situation system _chk variants due to -D_FORTIFY_SOURCE ++ might be used after any replacements defined here. */ ++ ++#include MSVC_INCLUDE(string.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_STRING_H ++ ++#define _GL_ALREADY_INCLUDING_STRING_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(string.h) ++ ++#undef _GL_ALREADY_INCLUDING_STRING_H ++ ++#ifndef _GL_STRING_H ++#define _GL_STRING_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* MirBSD defines mbslen as a macro. */ ++#if 1 && defined __MirBSD__ ++# include ++#endif ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* NetBSD 5.0 declares strsignal in , not in . */ ++/* But in any case avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Find the index of the least-significant set bit. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (ffsl, int, (long int i)); ++# endif ++_GL_CXXALIAS_SYS (ffsl, int, (long int i)); ++_GL_CXXALIASWARN (ffsl); ++#elif defined GNULIB_POSIXCHECK ++# undef ffsl ++# if HAVE_RAW_DECL_FFSL ++_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); ++# endif ++#endif ++ ++ ++/* Find the index of the least-significant set bit. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (ffsll, int, (long long int i)); ++# endif ++_GL_CXXALIAS_SYS (ffsll, int, (long long int i)); ++_GL_CXXALIASWARN (ffsll); ++#elif defined GNULIB_POSIXCHECK ++# undef ffsll ++# if HAVE_RAW_DECL_FFSLL ++_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); ++# endif ++#endif ++ ++ ++/* Return the first instance of C within N bytes of S, or NULL. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define memchr rpl_memchr ++# endif ++_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C" { const void * std::memchr (const void *, int, size_t); } ++ extern "C++" { void * std::memchr (void *, int, size_t); } */ ++_GL_CXXALIAS_SYS_CAST2 (memchr, ++ void *, (void const *__s, int __c, size_t __n), ++ void const *, (void const *__s, int __c, size_t __n)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); ++_GL_CXXALIASWARN1 (memchr, void const *, ++ (void const *__s, int __c, size_t __n)); ++# else ++_GL_CXXALIASWARN (memchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef memchr ++/* Assume memchr is always declared. */ ++_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " ++ "use gnulib module memchr for portability" ); ++#endif ++ ++/* Return the first occurrence of NEEDLE in HAYSTACK. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define memmem rpl_memmem ++# endif ++_GL_FUNCDECL_RPL (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 3))); ++# endif ++_GL_CXXALIAS_SYS (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len)); ++# endif ++_GL_CXXALIASWARN (memmem); ++#elif defined GNULIB_POSIXCHECK ++# undef memmem ++# if HAVE_RAW_DECL_MEMMEM ++_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " ++ "use gnulib module memmem-simple for portability, " ++ "and module memmem for speed" ); ++# endif ++#endif ++ ++/* Copy N bytes of SRC to DEST, return pointer to bytes after the ++ last written byte. */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (mempcpy, void *, ++ (void *restrict __dest, void const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (mempcpy, void *, ++ (void *restrict __dest, void const *restrict __src, ++ size_t __n)); ++_GL_CXXALIASWARN (mempcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef mempcpy ++# if HAVE_RAW_DECL_MEMPCPY ++_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " ++ "use gnulib module mempcpy for portability"); ++# endif ++#endif ++ ++/* Search backwards through a block for a byte (specified as an int). */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const void * std::memrchr (const void *, int, size_t); } ++ extern "C++" { void * std::memrchr (void *, int, size_t); } */ ++_GL_CXXALIAS_SYS_CAST2 (memrchr, ++ void *, (void const *, int, size_t), ++ void const *, (void const *, int, size_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); ++_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); ++# else ++_GL_CXXALIASWARN (memrchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef memrchr ++# if HAVE_RAW_DECL_MEMRCHR ++_GL_WARN_ON_USE (memrchr, "memrchr is unportable - " ++ "use gnulib module memrchr for portability"); ++# endif ++#endif ++ ++/* Find the first occurrence of C in S. More efficient than ++ memchr(S,C,N), at the expense of undefined behavior if C does not ++ occur within N bytes. */ ++#if 1 ++# if ! 0 ++_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const void * std::rawmemchr (const void *, int); } ++ extern "C++" { void * std::rawmemchr (void *, int); } */ ++_GL_CXXALIAS_SYS_CAST2 (rawmemchr, ++ void *, (void const *__s, int __c_in), ++ void const *, (void const *__s, int __c_in)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); ++_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); ++# else ++_GL_CXXALIASWARN (rawmemchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef rawmemchr ++# if HAVE_RAW_DECL_RAWMEMCHR ++_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " ++ "use gnulib module rawmemchr for portability"); ++# endif ++#endif ++ ++/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ ++#if 1 ++# if ! 0 ++_GL_FUNCDECL_SYS (stpcpy, char *, ++ (char *restrict __dst, char const *restrict __src) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (stpcpy, char *, ++ (char *restrict __dst, char const *restrict __src)); ++_GL_CXXALIASWARN (stpcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef stpcpy ++# if HAVE_RAW_DECL_STPCPY ++_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " ++ "use gnulib module stpcpy for portability"); ++# endif ++#endif ++ ++/* Copy no more than N bytes of SRC to DST, returning a pointer past the ++ last non-NUL byte written into DST. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef stpncpy ++# define stpncpy rpl_stpncpy ++# endif ++_GL_FUNCDECL_RPL (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n)); ++# else ++# if ! 0 ++_GL_FUNCDECL_SYS (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n)); ++# endif ++_GL_CXXALIASWARN (stpncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef stpncpy ++# if HAVE_RAW_DECL_STPNCPY ++_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " ++ "use gnulib module stpncpy for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strchr() does not work with multibyte strings if the locale encoding is ++ GB18030 and the character to be searched is a digit. */ ++# undef strchr ++/* Assume strchr is always declared. */ ++_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " ++ "in some multibyte locales - " ++ "use mbschr if you care about internationalization"); ++#endif ++ ++/* Find the first occurrence of C in S or the final NUL byte. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strchrnul rpl_strchrnul ++# endif ++_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strchrnul, char *, ++ (const char *str, int ch)); ++# else ++# if ! 0 ++_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * std::strchrnul (const char *, int); } ++ extern "C++" { char * std::strchrnul (char *, int); } */ ++_GL_CXXALIAS_SYS_CAST2 (strchrnul, ++ char *, (char const *__s, int __c_in), ++ char const *, (char const *__s, int __c_in)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); ++_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); ++# else ++_GL_CXXALIASWARN (strchrnul); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strchrnul ++# if HAVE_RAW_DECL_STRCHRNUL ++_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " ++ "use gnulib module strchrnul for portability"); ++# endif ++#endif ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strdup ++# define strdup rpl_strdup ++# endif ++_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); ++# else ++# if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup ++ /* strdup exists as a function and as a macro. Get rid of the macro. */ ++# undef strdup ++# endif ++# if !(1 || defined strdup) ++_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); ++# endif ++_GL_CXXALIASWARN (strdup); ++#elif defined GNULIB_POSIXCHECK ++# undef strdup ++# if HAVE_RAW_DECL_STRDUP ++_GL_WARN_ON_USE (strdup, "strdup is unportable - " ++ "use gnulib module strdup for portability"); ++# endif ++#endif ++ ++/* Append no more than N characters from SRC onto DEST. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strncat ++# define strncat rpl_strncat ++# endif ++_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); ++# else ++_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); ++# endif ++_GL_CXXALIASWARN (strncat); ++#elif defined GNULIB_POSIXCHECK ++# undef strncat ++# if HAVE_RAW_DECL_STRNCAT ++_GL_WARN_ON_USE (strncat, "strncat is unportable - " ++ "use gnulib module strncat for portability"); ++# endif ++#endif ++ ++/* Return a newly allocated copy of at most N bytes of STRING. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strndup ++# define strndup rpl_strndup ++# endif ++_GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); ++# endif ++_GL_CXXALIASWARN (strndup); ++#elif defined GNULIB_POSIXCHECK ++# undef strndup ++# if HAVE_RAW_DECL_STRNDUP ++_GL_WARN_ON_USE (strndup, "strndup is unportable - " ++ "use gnulib module strndup for portability"); ++# endif ++#endif ++ ++/* Find the length (number of bytes) of STRING, but scan at most ++ MAXLEN bytes. If no '\0' terminator is found in that many bytes, ++ return MAXLEN. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strnlen ++# define strnlen rpl_strnlen ++# endif ++_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); ++# endif ++_GL_CXXALIASWARN (strnlen); ++#elif defined GNULIB_POSIXCHECK ++# undef strnlen ++# if HAVE_RAW_DECL_STRNLEN ++_GL_WARN_ON_USE (strnlen, "strnlen is unportable - " ++ "use gnulib module strnlen for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strcspn() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it does not work with multibyte strings if the ++ locale encoding is GB18030 and one of the characters to be searched is a ++ digit. */ ++# undef strcspn ++/* Assume strcspn is always declared. */ ++_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbscspn if you care about internationalization"); ++#endif ++ ++/* Find the first occurrence in S of any character in ACCEPT. */ ++#if 1 ++# if ! 1 ++_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C" { const char * strpbrk (const char *, const char *); } ++ extern "C++" { char * strpbrk (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strpbrk, ++ char *, (char const *__s, char const *__accept), ++ const char *, (char const *__s, char const *__accept)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); ++_GL_CXXALIASWARN1 (strpbrk, char const *, ++ (char const *__s, char const *__accept)); ++# else ++_GL_CXXALIASWARN (strpbrk); ++# endif ++# if defined GNULIB_POSIXCHECK ++/* strpbrk() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it does not work with multibyte strings if the ++ locale encoding is GB18030 and one of the characters to be searched is a ++ digit. */ ++# undef strpbrk ++_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbspbrk if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strpbrk ++# if HAVE_RAW_DECL_STRPBRK ++_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " ++ "use gnulib module strpbrk for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strspn() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it cannot work with multibyte strings. */ ++# undef strspn ++/* Assume strspn is always declared. */ ++_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbsspn if you care about internationalization"); ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strrchr() does not work with multibyte strings if the locale encoding is ++ GB18030 and the character to be searched is a digit. */ ++# undef strrchr ++/* Assume strrchr is always declared. */ ++_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " ++ "in some multibyte locales - " ++ "use mbsrchr if you care about internationalization"); ++#endif ++ ++/* Search the next delimiter (char listed in DELIM) starting at *STRINGP. ++ If one is found, overwrite it with a NUL, and advance *STRINGP ++ to point to the next char after it. Otherwise, set *STRINGP to NULL. ++ If *STRINGP was already NULL, nothing happens. ++ Return the old value of *STRINGP. ++ ++ This is a variant of strtok() that is multithread-safe and supports ++ empty fields. ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ Caveat: It doesn't work with multibyte strings unless all of the delimiter ++ characters are ASCII characters < 0x30. ++ ++ See also strtok_r(). */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (strsep, char *, ++ (char **restrict __stringp, char const *restrict __delim) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (strsep, char *, ++ (char **restrict __stringp, char const *restrict __delim)); ++_GL_CXXALIASWARN (strsep); ++# if defined GNULIB_POSIXCHECK ++# undef strsep ++_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbssep if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strsep ++# if HAVE_RAW_DECL_STRSEP ++_GL_WARN_ON_USE (strsep, "strsep is unportable - " ++ "use gnulib module strsep for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strstr rpl_strstr ++# endif ++_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); ++# else ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * strstr (const char *, const char *); } ++ extern "C++" { char * strstr (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strstr, ++ char *, (const char *haystack, const char *needle), ++ const char *, (const char *haystack, const char *needle)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); ++_GL_CXXALIASWARN1 (strstr, const char *, ++ (const char *haystack, const char *needle)); ++# else ++_GL_CXXALIASWARN (strstr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++/* strstr() does not work with multibyte strings if the locale encoding is ++ different from UTF-8: ++ POSIX says that it operates on "strings", and "string" in POSIX is defined ++ as a sequence of bytes, not of characters. */ ++# undef strstr ++/* Assume strstr is always declared. */ ++_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " ++ "work correctly on character strings in most " ++ "multibyte locales - " ++ "use mbsstr if you care about internationalization, " ++ "or use strstr if you care about speed"); ++#endif ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive ++ comparison. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strcasestr rpl_strcasestr ++# endif ++_GL_FUNCDECL_RPL (strcasestr, char *, ++ (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strcasestr, char *, ++ (const char *haystack, const char *needle)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strcasestr, char *, ++ (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * strcasestr (const char *, const char *); } ++ extern "C++" { char * strcasestr (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strcasestr, ++ char *, (const char *haystack, const char *needle), ++ const char *, (const char *haystack, const char *needle)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); ++_GL_CXXALIASWARN1 (strcasestr, const char *, ++ (const char *haystack, const char *needle)); ++# else ++_GL_CXXALIASWARN (strcasestr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++/* strcasestr() does not work with multibyte strings: ++ It is a glibc extension, and glibc implements it only for unibyte ++ locales. */ ++# undef strcasestr ++# if HAVE_RAW_DECL_STRCASESTR ++_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " ++ "strings in multibyte locales - " ++ "use mbscasestr if you care about " ++ "internationalization, or use c-strcasestr if you want " ++ "a locale independent function"); ++# endif ++#endif ++ ++/* Parse S into tokens separated by characters in DELIM. ++ If S is NULL, the saved pointer in SAVE_PTR is used as ++ the next starting point. For example: ++ char s[] = "-abc-=-def"; ++ char *sp; ++ x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" ++ x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL ++ x = strtok_r(NULL, "=", &sp); // x = NULL ++ // s = "abc\0-def\0" ++ ++ This is a variant of strtok() that is multithread-safe. ++ ++ For the POSIX documentation for this function, see: ++ http://www.opengroup.org/susv3xsh/strtok.html ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ Caveat: It doesn't work with multibyte strings unless all of the delimiter ++ characters are ASCII characters < 0x30. ++ ++ See also strsep(). */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strtok_r ++# define strtok_r rpl_strtok_r ++# endif ++_GL_FUNCDECL_RPL (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr)); ++# else ++# if 0 || defined GNULIB_POSIXCHECK ++# undef strtok_r ++# endif ++# if ! 1 ++_GL_FUNCDECL_SYS (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr)); ++# endif ++_GL_CXXALIASWARN (strtok_r); ++# if defined GNULIB_POSIXCHECK ++_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " ++ "strings in multibyte locales - " ++ "use mbstok_r if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strtok_r ++# if HAVE_RAW_DECL_STRTOK_R ++_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " ++ "use gnulib module strtok_r for portability"); ++# endif ++#endif ++ ++ ++/* The following functions are not specified by POSIX. They are gnulib ++ extensions. */ ++ ++#if 1 ++/* Return the number of multibyte characters in the character string STRING. ++ This considers multibyte characters, unlike strlen, which counts bytes. */ ++# ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ ++# undef mbslen ++# endif ++# if 0 /* AIX, OSF/1, MirBSD define mbslen already in libc. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbslen rpl_mbslen ++# endif ++_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); ++# else ++_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); ++# endif ++_GL_CXXALIASWARN (mbslen); ++#endif ++ ++#if 0 ++/* Return the number of multibyte characters in the character string starting ++ at STRING and ending at STRING + LEN. */ ++_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1)); ++#endif ++ ++#if 0 ++/* Locate the first single-byte character C in the character string STRING, ++ and return a pointer to it. Return NULL if C is not found in STRING. ++ Unlike strchr(), this function works correctly in multibyte locales with ++ encodings such as GB18030. */ ++# if defined __hpux ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbschr rpl_mbschr /* avoid collision with HP-UX function */ ++# endif ++_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); ++# else ++_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); ++# endif ++_GL_CXXALIASWARN (mbschr); ++#endif ++ ++#if 0 ++/* Locate the last single-byte character C in the character string STRING, ++ and return a pointer to it. Return NULL if C is not found in STRING. ++ Unlike strrchr(), this function works correctly in multibyte locales with ++ encodings such as GB18030. */ ++# if defined __hpux || defined __INTERIX ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbsrchr rpl_mbsrchr /* avoid collision with system function */ ++# endif ++_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); ++# else ++_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); ++# endif ++_GL_CXXALIASWARN (mbsrchr); ++#endif ++ ++#if 1 ++/* Find the first occurrence of the character string NEEDLE in the character ++ string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. ++ Unlike strstr(), this function works correctly in multibyte locales with ++ encodings different from UTF-8. */ ++_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the character strings S1 and S2, ignoring case, returning less than, ++ equal to or greater than zero if S1 is lexicographically less than, equal to ++ or greater than S2. ++ Note: This function may, in multibyte locales, return 0 for strings of ++ different lengths! ++ Unlike strcasecmp(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the initial segment of the character string S1 consisting of at most ++ N characters with the initial segment of the character string S2 consisting ++ of at most N characters, ignoring case, returning less than, equal to or ++ greater than zero if the initial segment of S1 is lexicographically less ++ than, equal to or greater than the initial segment of S2. ++ Note: This function may, in multibyte locales, return 0 for initial segments ++ of different lengths! ++ Unlike strncasecmp(), this function works correctly in multibyte locales. ++ But beware that N is not a byte count but a character count! */ ++_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the initial segment of the character string STRING consisting of ++ at most mbslen (PREFIX) characters with the character string PREFIX, ++ ignoring case. If the two match, return a pointer to the first byte ++ after this prefix in STRING. Otherwise, return NULL. ++ Note: This function may, in multibyte locales, return non-NULL if STRING ++ is of smaller length than PREFIX! ++ Unlike strncasecmp(), this function works correctly in multibyte ++ locales. */ ++_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence of the character string NEEDLE in the character ++ string HAYSTACK, using case-insensitive comparison. ++ Note: This function may, in multibyte locales, return success even if ++ strlen (haystack) < strlen (needle) ! ++ Unlike strcasestr(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ in the character string ACCEPT. Return the number of bytes from the ++ beginning of the string to this occurrence, or to the end of the string ++ if none exists. ++ Unlike strcspn(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ in the character string ACCEPT. Return the pointer to it, or NULL if none ++ exists. ++ Unlike strpbrk(), this function works correctly in multibyte locales. */ ++# if defined __hpux ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ ++# endif ++_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); ++# else ++_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); ++# endif ++_GL_CXXALIASWARN (mbspbrk); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ not in the character string REJECT. Return the number of bytes from the ++ beginning of the string to this occurrence, or to the end of the string ++ if none exists. ++ Unlike strspn(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Search the next delimiter (multibyte character listed in the character ++ string DELIM) starting at the character string *STRINGP. ++ If one is found, overwrite it with a NUL, and advance *STRINGP to point ++ to the next multibyte character after it. Otherwise, set *STRINGP to NULL. ++ If *STRINGP was already NULL, nothing happens. ++ Return the old value of *STRINGP. ++ ++ This is a variant of mbstok_r() that supports empty fields. ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ ++ See also mbstok_r(). */ ++_GL_EXTERN_C char * mbssep (char **stringp, const char *delim) ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Parse the character string STRING into tokens separated by characters in ++ the character string DELIM. ++ If STRING is NULL, the saved pointer in SAVE_PTR is used as ++ the next starting point. For example: ++ char s[] = "-abc-=-def"; ++ char *sp; ++ x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" ++ x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL ++ x = mbstok_r(NULL, "=", &sp); // x = NULL ++ // s = "abc\0-def\0" ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ ++ See also mbssep(). */ ++_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) ++ _GL_ARG_NONNULL ((2, 3)); ++#endif ++ ++/* Map any int, typically from errno, into an error message. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strerror ++# define strerror rpl_strerror ++# endif ++_GL_FUNCDECL_RPL (strerror, char *, (int)); ++_GL_CXXALIAS_RPL (strerror, char *, (int)); ++# else ++_GL_CXXALIAS_SYS (strerror, char *, (int)); ++# endif ++_GL_CXXALIASWARN (strerror); ++#elif defined GNULIB_POSIXCHECK ++# undef strerror ++/* Assume strerror is always declared. */ ++_GL_WARN_ON_USE (strerror, "strerror is unportable - " ++ "use gnulib module strerror to guarantee non-NULL result"); ++#endif ++ ++/* Map any int, typically from errno, into an error message. Multithread-safe. ++ Uses the POSIX declaration, not the glibc declaration. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strerror_r ++# define strerror_r rpl_strerror_r ++# endif ++_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (strerror_r); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strerror_r ++# if HAVE_RAW_DECL_STRERROR_R ++_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " ++ "use gnulib module strerror_r-posix for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strsignal rpl_strsignal ++# endif ++_GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); ++_GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); ++# endif ++/* Need to cast, because on Cygwin 1.5.x systems, the return type is ++ 'const char *'. */ ++_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); ++# endif ++_GL_CXXALIASWARN (strsignal); ++#elif defined GNULIB_POSIXCHECK ++# undef strsignal ++# if HAVE_RAW_DECL_STRSIGNAL ++_GL_WARN_ON_USE (strsignal, "strsignal is unportable - " ++ "use gnulib module strsignal for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); ++_GL_CXXALIASWARN (strverscmp); ++#elif defined GNULIB_POSIXCHECK ++# undef strverscmp ++# if HAVE_RAW_DECL_STRVERSCMP ++_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " ++ "use gnulib module strverscmp for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_STRING_H */ ++#endif /* _GL_STRING_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/select.h gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/select.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/select.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/select.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,621 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Substitute for . ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++# if __GNUC__ >= 3 ++ ++# endif ++ ++ ++/* On OSF/1 and Solaris 2.6, and ++ both include . ++ On Cygwin, includes . ++ Simply delegate to the system's header in this case. */ ++#if (0 \ ++ && !defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TYPES_H \ ++ && ((defined __osf__ && defined _SYS_TYPES_H_ \ ++ && defined _OSF_SOURCE) \ ++ || (defined __sun && defined _SYS_TYPES_H \ ++ && (! (defined _XOPEN_SOURCE || defined _POSIX_C_SOURCE) \ ++ || defined __EXTENSIONS__)))) ++ ++# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TYPES_H ++# include ++ ++#elif (0 \ ++ && (defined _CYGWIN_SYS_TIME_H \ ++ || (!defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TIME_H \ ++ && ((defined __osf__ && defined _SYS_TIME_H_ \ ++ && defined _OSF_SOURCE) \ ++ || (defined __sun && defined _SYS_TIME_H \ ++ && (! (defined _XOPEN_SOURCE \ ++ || defined _POSIX_C_SOURCE) \ ++ || defined __EXTENSIONS__)))))) ++ ++# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_TIME_H ++# include ++ ++/* On IRIX 6.5, includes , which includes ++ , which includes . At this point we cannot ++ include , because that includes , which ++ gives a syntax error because has not been completely ++ processed. Simply delegate to the system's header in this case. */ ++#elif 0 && defined __sgi && (defined _SYS_BSD_TYPES_H && !defined _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_BSD_TYPES_H) ++ ++# define _GL_SYS_SELECT_H_REDIRECT_FROM_SYS_BSD_TYPES_H ++# include ++ ++/* On OpenBSD 5.0, includes , which includes ++ . At this point we cannot include , because that ++ includes gnulib's pthread.h override, which gives a syntax error because ++ /usr/include/pthread.h has not been completely processed. Simply delegate ++ to the system's header in this case. */ ++#elif 0 && defined __OpenBSD__ && (defined _PTHREAD_H_ && !defined PTHREAD_MUTEX_INITIALIZER) ++ ++# include ++ ++#else ++ ++#ifndef _GL_SYS_SELECT_H ++ ++/* On many platforms, assumes prior inclusion of ++ . Also, mingw defines sigset_t there, instead of ++ in where it belongs. */ ++#include ++ ++#if 0 ++ ++/* On OSF/1 4.0, provides only a forward declaration ++ of 'struct timeval', and no definition of this type. ++ Also, Mac OS X, AIX, HP-UX, IRIX, Solaris, Interix declare select() ++ in . ++ But avoid namespace pollution on glibc systems and "unknown type ++ name" problems on Cygwin. */ ++# if !(defined __GLIBC__ || defined __CYGWIN__) ++# include ++# endif ++ ++/* On AIX 7 and Solaris 10, provides an FD_ZERO implementation ++ that relies on memset(), but without including . ++ But in any case avoid namespace pollution on glibc systems. */ ++# if (defined __OpenBSD__ || defined _AIX || defined __sun || defined __osf__ || defined __BEOS__) \ ++ && ! defined __GLIBC__ ++# include ++# endif ++ ++/* The include_next requires a split double-inclusion guard. */ ++# include ++ ++#endif ++ ++/* Get definition of 'sigset_t'. ++ But avoid namespace pollution on glibc systems and "unknown type ++ name" problems on Cygwin. ++ Do this after the include_next (for the sake of OpenBSD 5.0) but before ++ the split double-inclusion guard (for the sake of Solaris). */ ++#if !((defined __GLIBC__ || defined __CYGWIN__) && !defined __UCLIBC__) ++# include ++#endif ++ ++#ifndef _GL_SYS_SELECT_H ++#define _GL_SYS_SELECT_H ++ ++#if !0 ++/* A platform that lacks . */ ++/* Get the 'struct timeval' and 'fd_set' types and the FD_* macros ++ on most platforms. */ ++# include ++/* On HP-UX 11, provides an FD_ZERO implementation ++ that relies on memset(), but without including . */ ++# if defined __hpux ++# include ++# endif ++/* On native Windows platforms: ++ Get the 'fd_set' type. ++ Get the close() declaration before we override it. */ ++# if 1 ++# if !defined _GL_INCLUDING_WINSOCK2_H ++# define _GL_INCLUDING_WINSOCK2_H ++# include ++# undef _GL_INCLUDING_WINSOCK2_H ++# endif ++# include ++# endif ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Fix some definitions from . */ ++ ++#if 1 ++ ++# if !GNULIB_defined_rpl_fd_isset ++ ++/* Re-define FD_ISSET to avoid a WSA call while we are not using ++ network sockets. */ ++static int ++rpl_fd_isset (SOCKET fd, fd_set * set) ++{ ++ u_int i; ++ if (set == NULL) ++ return 0; ++ ++ for (i = 0; i < set->fd_count; i++) ++ if (set->fd_array[i] == fd) ++ return 1; ++ ++ return 0; ++} ++ ++# define GNULIB_defined_rpl_fd_isset 1 ++# endif ++ ++# undef FD_ISSET ++# define FD_ISSET(fd, set) rpl_fd_isset(fd, set) ++ ++#endif ++ ++/* Hide some function declarations from . */ ++ ++#if 1 ++# if !defined _GL_UNISTD_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef close ++# define close close_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (close, ++ "close() used without including "); ++# endif ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gethostname ++# define gethostname gethostname_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (gethostname, ++ "gethostname() used without including "); ++# endif ++# endif ++# if !defined _GL_SYS_SOCKET_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef socket ++# define socket socket_used_without_including_sys_socket_h ++# undef connect ++# define connect connect_used_without_including_sys_socket_h ++# undef accept ++# define accept accept_used_without_including_sys_socket_h ++# undef bind ++# define bind bind_used_without_including_sys_socket_h ++# undef getpeername ++# define getpeername getpeername_used_without_including_sys_socket_h ++# undef getsockname ++# define getsockname getsockname_used_without_including_sys_socket_h ++# undef getsockopt ++# define getsockopt getsockopt_used_without_including_sys_socket_h ++# undef listen ++# define listen listen_used_without_including_sys_socket_h ++# undef recv ++# define recv recv_used_without_including_sys_socket_h ++# undef send ++# define send send_used_without_including_sys_socket_h ++# undef recvfrom ++# define recvfrom recvfrom_used_without_including_sys_socket_h ++# undef sendto ++# define sendto sendto_used_without_including_sys_socket_h ++# undef setsockopt ++# define setsockopt setsockopt_used_without_including_sys_socket_h ++# undef shutdown ++# define shutdown shutdown_used_without_including_sys_socket_h ++# else ++ _GL_WARN_ON_USE (socket, ++ "socket() used without including "); ++ _GL_WARN_ON_USE (connect, ++ "connect() used without including "); ++ _GL_WARN_ON_USE (accept, ++ "accept() used without including "); ++ _GL_WARN_ON_USE (bind, ++ "bind() used without including "); ++ _GL_WARN_ON_USE (getpeername, ++ "getpeername() used without including "); ++ _GL_WARN_ON_USE (getsockname, ++ "getsockname() used without including "); ++ _GL_WARN_ON_USE (getsockopt, ++ "getsockopt() used without including "); ++ _GL_WARN_ON_USE (listen, ++ "listen() used without including "); ++ _GL_WARN_ON_USE (recv, ++ "recv() used without including "); ++ _GL_WARN_ON_USE (send, ++ "send() used without including "); ++ _GL_WARN_ON_USE (recvfrom, ++ "recvfrom() used without including "); ++ _GL_WARN_ON_USE (sendto, ++ "sendto() used without including "); ++ _GL_WARN_ON_USE (setsockopt, ++ "setsockopt() used without including "); ++ _GL_WARN_ON_USE (shutdown, ++ "shutdown() used without including "); ++# endif ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pselect ++# define pselect rpl_pselect ++# endif ++_GL_FUNCDECL_RPL (pselect, int, ++ (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, ++ struct timespec const *restrict, const sigset_t *restrict)); ++_GL_CXXALIAS_RPL (pselect, int, ++ (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, ++ struct timespec const *restrict, const sigset_t *restrict)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pselect, int, ++ (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, ++ struct timespec const *restrict, const sigset_t *restrict)); ++# endif ++_GL_CXXALIAS_SYS (pselect, int, ++ (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, ++ struct timespec const *restrict, const sigset_t *restrict)); ++# endif ++_GL_CXXALIASWARN (pselect); ++#elif defined GNULIB_POSIXCHECK ++# undef pselect ++# if HAVE_RAW_DECL_PSELECT ++_GL_WARN_ON_USE (pselect, "pselect is not portable - " ++ "use gnulib module pselect for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef select ++# define select rpl_select ++# endif ++_GL_FUNCDECL_RPL (select, int, ++ (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, ++ struct timeval *restrict)); ++_GL_CXXALIAS_RPL (select, int, ++ (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, ++ struct timeval *restrict)); ++# else ++_GL_CXXALIAS_SYS (select, int, ++ (int, fd_set *restrict, fd_set *restrict, fd_set *restrict, ++ struct timeval *restrict)); ++# endif ++_GL_CXXALIASWARN (select); ++#elif 1 ++# undef select ++# define select select_used_without_requesting_gnulib_module_select ++#elif defined GNULIB_POSIXCHECK ++# undef select ++# if HAVE_RAW_DECL_SELECT ++_GL_WARN_ON_USE (select, "select is not always POSIX compliant - " ++ "use gnulib module select for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_SYS_SELECT_H */ ++#endif /* _GL_SYS_SELECT_H */ ++#endif /* OSF/1 */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/stat.h gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/stat.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/stat.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/stat.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1044 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/stat header file. ++ Copyright (C) 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ ++ ++/* This file is supposed to be used on platforms where is ++ incomplete. It is intended to provide definitions and prototypes ++ needed by an application. Start with what the system provides. */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_sys_stat_h ++/* Special invocation convention. */ ++ ++#include MSVC_INCLUDE(sys/stat.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_SYS_STAT_H ++ ++/* Get nlink_t. ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++ ++/* Get struct timespec. */ ++#include ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(sys/stat.h) ++ ++#ifndef _GL_SYS_STAT_H ++#define _GL_SYS_STAT_H ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Before doing "#define mkdir rpl_mkdir" below, we need to include all ++ headers that may declare mkdir(). Native Windows platforms declare mkdir ++ in and/or , not in . */ ++#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++# include /* mingw32, mingw64 */ ++# include /* mingw64, MSVC 9 */ ++#endif ++ ++/* Native Windows platforms declare umask() in . */ ++#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++/* Large File Support on native Windows. */ ++#if 1 ++# define stat _stati64 ++#endif ++ ++#ifndef S_IFIFO ++# ifdef _S_IFIFO ++# define S_IFIFO _S_IFIFO ++# endif ++#endif ++ ++#ifndef S_IFMT ++# define S_IFMT 0170000 ++#endif ++ ++#if STAT_MACROS_BROKEN ++# undef S_ISBLK ++# undef S_ISCHR ++# undef S_ISDIR ++# undef S_ISFIFO ++# undef S_ISLNK ++# undef S_ISNAM ++# undef S_ISMPB ++# undef S_ISMPC ++# undef S_ISNWK ++# undef S_ISREG ++# undef S_ISSOCK ++#endif ++ ++#ifndef S_ISBLK ++# ifdef S_IFBLK ++# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) ++# else ++# define S_ISBLK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISCHR ++# ifdef S_IFCHR ++# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) ++# else ++# define S_ISCHR(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISDIR ++# ifdef S_IFDIR ++# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) ++# else ++# define S_ISDIR(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISDOOR /* Solaris 2.5 and up */ ++# define S_ISDOOR(m) 0 ++#endif ++ ++#ifndef S_ISFIFO ++# ifdef S_IFIFO ++# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) ++# else ++# define S_ISFIFO(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISLNK ++# ifdef S_IFLNK ++# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) ++# else ++# define S_ISLNK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISMPB /* V7 */ ++# ifdef S_IFMPB ++# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) ++# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) ++# else ++# define S_ISMPB(m) 0 ++# define S_ISMPC(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISMPX /* AIX */ ++# define S_ISMPX(m) 0 ++#endif ++ ++#ifndef S_ISNAM /* Xenix */ ++# ifdef S_IFNAM ++# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) ++# else ++# define S_ISNAM(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISNWK /* HP/UX */ ++# ifdef S_IFNWK ++# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) ++# else ++# define S_ISNWK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISPORT /* Solaris 10 and up */ ++# define S_ISPORT(m) 0 ++#endif ++ ++#ifndef S_ISREG ++# ifdef S_IFREG ++# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) ++# else ++# define S_ISREG(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISSOCK ++# ifdef S_IFSOCK ++# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) ++# else ++# define S_ISSOCK(m) 0 ++# endif ++#endif ++ ++ ++#ifndef S_TYPEISMQ ++# define S_TYPEISMQ(p) 0 ++#endif ++ ++#ifndef S_TYPEISTMO ++# define S_TYPEISTMO(p) 0 ++#endif ++ ++ ++#ifndef S_TYPEISSEM ++# ifdef S_INSEM ++# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) ++# else ++# define S_TYPEISSEM(p) 0 ++# endif ++#endif ++ ++#ifndef S_TYPEISSHM ++# ifdef S_INSHD ++# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) ++# else ++# define S_TYPEISSHM(p) 0 ++# endif ++#endif ++ ++/* high performance ("contiguous data") */ ++#ifndef S_ISCTG ++# define S_ISCTG(p) 0 ++#endif ++ ++/* Cray DMF (data migration facility): off line, with data */ ++#ifndef S_ISOFD ++# define S_ISOFD(p) 0 ++#endif ++ ++/* Cray DMF (data migration facility): off line, with no data */ ++#ifndef S_ISOFL ++# define S_ISOFL(p) 0 ++#endif ++ ++/* 4.4BSD whiteout */ ++#ifndef S_ISWHT ++# define S_ISWHT(m) 0 ++#endif ++ ++/* If any of the following are undefined, ++ define them to their de facto standard values. */ ++#if !S_ISUID ++# define S_ISUID 04000 ++#endif ++#if !S_ISGID ++# define S_ISGID 02000 ++#endif ++ ++/* S_ISVTX is a common extension to POSIX. */ ++#ifndef S_ISVTX ++# define S_ISVTX 01000 ++#endif ++ ++#if !S_IRUSR && S_IREAD ++# define S_IRUSR S_IREAD ++#endif ++#if !S_IRUSR ++# define S_IRUSR 00400 ++#endif ++#if !S_IRGRP ++# define S_IRGRP (S_IRUSR >> 3) ++#endif ++#if !S_IROTH ++# define S_IROTH (S_IRUSR >> 6) ++#endif ++ ++#if !S_IWUSR && S_IWRITE ++# define S_IWUSR S_IWRITE ++#endif ++#if !S_IWUSR ++# define S_IWUSR 00200 ++#endif ++#if !S_IWGRP ++# define S_IWGRP (S_IWUSR >> 3) ++#endif ++#if !S_IWOTH ++# define S_IWOTH (S_IWUSR >> 6) ++#endif ++ ++#if !S_IXUSR && S_IEXEC ++# define S_IXUSR S_IEXEC ++#endif ++#if !S_IXUSR ++# define S_IXUSR 00100 ++#endif ++#if !S_IXGRP ++# define S_IXGRP (S_IXUSR >> 3) ++#endif ++#if !S_IXOTH ++# define S_IXOTH (S_IXUSR >> 6) ++#endif ++ ++#if !S_IRWXU ++# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) ++#endif ++#if !S_IRWXG ++# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) ++#endif ++#if !S_IRWXO ++# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) ++#endif ++ ++/* S_IXUGO is a common extension to POSIX. */ ++#if !S_IXUGO ++# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) ++#endif ++ ++#ifndef S_IRWXUGO ++# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) ++#endif ++ ++/* Macros for futimens and utimensat. */ ++#ifndef UTIME_NOW ++# define UTIME_NOW (-1) ++# define UTIME_OMIT (-2) ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (fchmodat, int, ++ (int fd, char const *file, mode_t mode, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (fchmodat, int, ++ (int fd, char const *file, mode_t mode, int flag)); ++_GL_CXXALIASWARN (fchmodat); ++#elif defined GNULIB_POSIXCHECK ++# undef fchmodat ++# if HAVE_RAW_DECL_FCHMODAT ++_GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fstat ++# define fstat rpl_fstat ++# endif ++_GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); ++# else ++_GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); ++# endif ++_GL_CXXALIASWARN (fstat); ++#elif 1 ++/* Above, we define stat to _stati64. */ ++# define fstat _fstati64 ++#elif defined GNULIB_POSIXCHECK ++# undef fstat ++# if HAVE_RAW_DECL_FSTAT ++_GL_WARN_ON_USE (fstat, "fstat has portability problems - " ++ "use gnulib module fstat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fstatat ++# define fstatat rpl_fstatat ++# endif ++_GL_FUNCDECL_RPL (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags)); ++# endif ++_GL_CXXALIASWARN (fstatat); ++#elif defined GNULIB_POSIXCHECK ++# undef fstatat ++# if HAVE_RAW_DECL_FSTATAT ++_GL_WARN_ON_USE (fstatat, "fstatat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens ++ implementation relies on futimesat, which on Solaris 10 makes an invocation ++ to futimens that is meant to invoke the libc's futimens(), not gnulib's ++ futimens(). */ ++# if 0 || (!1 && defined __sun) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef futimens ++# define futimens rpl_futimens ++# endif ++_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); ++_GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); ++# endif ++_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); ++# endif ++# if 1 ++_GL_CXXALIASWARN (futimens); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef futimens ++# if HAVE_RAW_DECL_FUTIMENS ++_GL_WARN_ON_USE (futimens, "futimens is not portable - " ++ "use gnulib module futimens for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME ++ denotes a symbolic link. */ ++# if !1 ++/* The lchmod replacement follows symbolic links. Callers should take ++ this into account; lchmod should be applied only to arguments that ++ are known to not be symbolic links. On hosts that lack lchmod, ++ this can lead to race conditions between the check and the ++ invocation of lchmod, but we know of no workarounds that are ++ reliable in general. You might try requesting support for lchmod ++ from your operating system supplier. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lchmod chmod ++# endif ++/* Need to cast, because on mingw, the second parameter of chmod is ++ int mode. */ ++_GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int, ++ (const char *filename, mode_t mode)); ++# else ++# if 0 /* assume already declared */ ++_GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (lchmod); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef lchmod ++# if HAVE_RAW_DECL_LCHMOD ++_GL_WARN_ON_USE (lchmod, "lchmod is unportable - " ++ "use gnulib module lchmod for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if ! 0 ++/* mingw does not support symlinks, therefore it does not have lstat. But ++ without links, stat does just fine. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lstat stat ++# endif ++_GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf)); ++# elif 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef lstat ++# define lstat rpl_lstat ++# endif ++_GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf)); ++# else ++_GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf)); ++# endif ++# if 0 ++_GL_CXXALIASWARN (lstat); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef lstat ++# if HAVE_RAW_DECL_LSTAT ++_GL_WARN_ON_USE (lstat, "lstat is unportable - " ++ "use gnulib module lstat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mkdir ++# define mkdir rpl_mkdir ++# endif ++_GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); ++#else ++/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. ++ Additionally, it declares _mkdir (and depending on compile flags, an ++ alias mkdir), only in the nonstandard includes and , ++ which are included above. */ ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++# if !GNULIB_defined_rpl_mkdir ++static int ++rpl_mkdir (char const *name, mode_t mode) ++{ ++ return _mkdir (name); ++} ++# define GNULIB_defined_rpl_mkdir 1 ++# endif ++ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mkdir rpl_mkdir ++# endif ++_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); ++# else ++_GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); ++# endif ++#endif ++_GL_CXXALIASWARN (mkdir); ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); ++_GL_CXXALIASWARN (mkdirat); ++#elif defined GNULIB_POSIXCHECK ++# undef mkdirat ++# if HAVE_RAW_DECL_MKDIRAT ++_GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mkfifo ++# define mkfifo rpl_mkfifo ++# endif ++_GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); ++# endif ++_GL_CXXALIASWARN (mkfifo); ++#elif defined GNULIB_POSIXCHECK ++# undef mkfifo ++# if HAVE_RAW_DECL_MKFIFO ++_GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " ++ "use gnulib module mkfifo for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); ++_GL_CXXALIASWARN (mkfifoat); ++#elif defined GNULIB_POSIXCHECK ++# undef mkfifoat ++# if HAVE_RAW_DECL_MKFIFOAT ++_GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " ++ "use gnulib module mkfifoat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mknod ++# define mknod rpl_mknod ++# endif ++_GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ ++_GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); ++# endif ++_GL_CXXALIASWARN (mknod); ++#elif defined GNULIB_POSIXCHECK ++# undef mknod ++# if HAVE_RAW_DECL_MKNOD ++_GL_WARN_ON_USE (mknod, "mknod is not portable - " ++ "use gnulib module mknod for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mknodat, int, ++ (int fd, char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mknodat, int, ++ (int fd, char const *file, mode_t mode, dev_t dev)); ++_GL_CXXALIASWARN (mknodat); ++#elif defined GNULIB_POSIXCHECK ++# undef mknodat ++# if HAVE_RAW_DECL_MKNODAT ++_GL_WARN_ON_USE (mknodat, "mknodat is not portable - " ++ "use gnulib module mkfifoat for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if (_MSC_VER < 1900) ++/* We can't use the object-like #define stat rpl_stat, because of ++ struct stat. This means that rpl_stat will not be used if the user ++ does (stat)(a,b). Oh well. */ ++# if defined _AIX && defined stat && defined _LARGE_FILES ++ /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, ++ so we have to replace stat64() instead of stat(). */ ++# undef stat64 ++# define stat64(name, st) rpl_stat (name, st) ++# elif 1 ++ /* Above, we define stat to _stati64. */ ++# if defined __MINGW32__ && defined _stati64 ++# ifndef _USE_32BIT_TIME_T ++ /* The system headers define _stati64 to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# elif defined _MSC_VER && defined _stati64 ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define _stati64 to _stat32i64. */ ++# undef _stat32i64 ++# define _stat32i64(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define _stati64 to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# else ++# undef _stati64 ++# define _stati64(name, st) rpl_stat (name, st) ++# endif ++# elif defined __MINGW32__ && defined stat ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define stat to _stat32i64. */ ++# undef _stat32i64 ++# define _stat32i64(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define stat to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# elif defined _MSC_VER && defined stat ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define stat to _stat32. */ ++# undef _stat32 ++# define _stat32(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define stat to _stat64i32. */ ++# undef _stat64i32 ++# define _stat64i32(name, st) rpl_stat (name, st) ++# endif ++# else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ ++# undef stat ++# define stat(name, st) rpl_stat (name, st) ++# endif /* !_LARGE_FILES */ ++_GL_EXTERN_C int stat (const char *name, struct stat *buf) ++ _GL_ARG_NONNULL ((1, 2)); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef stat ++# if HAVE_RAW_DECL_STAT ++_GL_WARN_ON_USE (stat, "stat is unportable - " ++ "use gnulib module stat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat ++ implementation relies on futimesat, which on Solaris 10 makes an invocation ++ to utimensat that is meant to invoke the libc's utimensat(), not gnulib's ++ utimensat(). */ ++# if 0 || (!1 && defined __sun) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef utimensat ++# define utimensat rpl_utimensat ++# endif ++_GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (utimensat); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef utimensat ++# if HAVE_RAW_DECL_UTIMENSAT ++_GL_WARN_ON_USE (utimensat, "utimensat is not portable - " ++ "use gnulib module utimensat for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_SYS_STAT_H */ ++#endif /* _GL_SYS_STAT_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/time.h gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/time.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/time.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,525 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/time.h. ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Paul Eggert. */ ++ ++#ifndef _GL_SYS_TIME_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* On Cygwin and on many BSDish systems, includes itself ++ recursively via . ++ Simply delegate to the system's header in this case; it is a no-op. ++ Without this extra ifdef, the C++ gettimeofday declaration below ++ would be a forward declaration in gnulib's nested . */ ++#if defined _CYGWIN_SYS_TIME_H || defined _SYS_TIME_H || defined _SYS_TIME_H_ ++# include ++#else ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_SYS_TIME_H ++#define _GL_SYS_TIME_H ++ ++#if ! 0 ++# include ++#endif ++ ++/* On native Windows with MSVC, get the 'struct timeval' type. ++ Also, on native Windows with a 64-bit time_t, where we are overriding the ++ 'struct timeval' type, get all declarations of system functions whose ++ signature contains 'struct timeval'. */ ++#if (defined _MSC_VER || 1) && 1 && !defined _GL_INCLUDING_WINSOCK2_H ++# define _GL_INCLUDING_WINSOCK2_H ++# include ++# undef _GL_INCLUDING_WINSOCK2_H ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#if !1 || 1 ++ ++# if 1 ++# define timeval rpl_timeval ++# endif ++ ++# if !GNULIB_defined_struct_timeval ++struct timeval ++{ ++ time_t tv_sec; ++ long int tv_usec; ++}; ++# define GNULIB_defined_struct_timeval 1 ++# endif ++ ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gettimeofday ++# define gettimeofday rpl_gettimeofday ++# endif ++_GL_FUNCDECL_RPL (gettimeofday, int, ++ (struct timeval *restrict, void *restrict) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gettimeofday, int, ++ (struct timeval *restrict, void *restrict)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (gettimeofday, int, ++ (struct timeval *restrict, void *restrict) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on glibc systems, by default, the second argument is ++ struct timezone *. */ ++_GL_CXXALIAS_SYS_CAST (gettimeofday, int, ++ (struct timeval *restrict, void *restrict)); ++# endif ++_GL_CXXALIASWARN (gettimeofday); ++#elif defined GNULIB_POSIXCHECK ++# undef gettimeofday ++# if HAVE_RAW_DECL_GETTIMEOFDAY ++_GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - " ++ "use gnulib module gettimeofday for portability"); ++# endif ++#endif ++ ++/* Hide some function declarations from . */ ++ ++#if defined _MSC_VER && 1 ++# if !defined _GL_UNISTD_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef close ++# define close close_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (close, ++ "close() used without including "); ++# endif ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gethostname ++# define gethostname gethostname_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (gethostname, ++ "gethostname() used without including "); ++# endif ++# endif ++# if !defined _GL_SYS_SOCKET_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef socket ++# define socket socket_used_without_including_sys_socket_h ++# undef connect ++# define connect connect_used_without_including_sys_socket_h ++# undef accept ++# define accept accept_used_without_including_sys_socket_h ++# undef bind ++# define bind bind_used_without_including_sys_socket_h ++# undef getpeername ++# define getpeername getpeername_used_without_including_sys_socket_h ++# undef getsockname ++# define getsockname getsockname_used_without_including_sys_socket_h ++# undef getsockopt ++# define getsockopt getsockopt_used_without_including_sys_socket_h ++# undef listen ++# define listen listen_used_without_including_sys_socket_h ++# undef recv ++# define recv recv_used_without_including_sys_socket_h ++# undef send ++# define send send_used_without_including_sys_socket_h ++# undef recvfrom ++# define recvfrom recvfrom_used_without_including_sys_socket_h ++# undef sendto ++# define sendto sendto_used_without_including_sys_socket_h ++# undef setsockopt ++# define setsockopt setsockopt_used_without_including_sys_socket_h ++# undef shutdown ++# define shutdown shutdown_used_without_including_sys_socket_h ++# else ++ _GL_WARN_ON_USE (socket, ++ "socket() used without including "); ++ _GL_WARN_ON_USE (connect, ++ "connect() used without including "); ++ _GL_WARN_ON_USE (accept, ++ "accept() used without including "); ++ _GL_WARN_ON_USE (bind, ++ "bind() used without including "); ++ _GL_WARN_ON_USE (getpeername, ++ "getpeername() used without including "); ++ _GL_WARN_ON_USE (getsockname, ++ "getsockname() used without including "); ++ _GL_WARN_ON_USE (getsockopt, ++ "getsockopt() used without including "); ++ _GL_WARN_ON_USE (listen, ++ "listen() used without including "); ++ _GL_WARN_ON_USE (recv, ++ "recv() used without including "); ++ _GL_WARN_ON_USE (send, ++ "send() used without including "); ++ _GL_WARN_ON_USE (recvfrom, ++ "recvfrom() used without including "); ++ _GL_WARN_ON_USE (sendto, ++ "sendto() used without including "); ++ _GL_WARN_ON_USE (setsockopt, ++ "setsockopt() used without including "); ++ _GL_WARN_ON_USE (shutdown, ++ "shutdown() used without including "); ++# endif ++# endif ++# if !defined _GL_SYS_SELECT_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef select ++# define select select_used_without_including_sys_select_h ++# else ++ _GL_WARN_ON_USE (select, ++ "select() used without including "); ++# endif ++# endif ++#endif ++ ++#endif /* _GL_SYS_TIME_H */ ++#endif /* _CYGWIN_SYS_TIME_H */ ++#endif /* _GL_SYS_TIME_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/types.h gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/types.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/types.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/types.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,54 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/types.h. ++ ++ Copyright (C) 2011-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifndef _GL_SYS_TYPES_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++# define _GL_INCLUDING_SYS_TYPES_H ++#include MSVC_INCLUDE(sys/types.h) ++# undef _GL_INCLUDING_SYS_TYPES_H ++ ++#ifndef _GL_SYS_TYPES_H ++#define _GL_SYS_TYPES_H ++ ++/* Override off_t if Large File Support is requested on native Windows. */ ++#if 1 ++/* Same as int64_t in . */ ++# if defined _MSC_VER ++# define off_t __int64 ++# else ++# define off_t long long int ++# endif ++/* Indicator, for gnulib internal purposes. */ ++# define _GL_WINDOWS_64_BIT_OFF_T 1 ++#endif ++ ++/* MSVC 9 defines size_t in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++#endif /* _GL_SYS_TYPES_H */ ++#endif /* _GL_SYS_TYPES_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/wait.h gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/wait.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/sys/wait.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/sys/wait.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,431 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A POSIX-like . ++ Copyright (C) 2001-2003, 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++ ++#ifndef _GL_SYS_WAIT_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++#ifndef _GL_SYS_WAIT_H ++#define _GL_SYS_WAIT_H ++ ++/* Get pid_t. */ ++#include ++ ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++#if !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++/* Unix API. */ ++ ++/* The following macros apply to an argument x, that is a status of a process, ++ as returned by waitpid(). ++ On nearly all systems, including Linux/x86, WEXITSTATUS are bits 15..8 and ++ WTERMSIG are bits 7..0, while BeOS uses the opposite. Therefore programs ++ have to use the abstract macros. */ ++ ++/* For valid x, exactly one of WIFSIGNALED(x), WIFEXITED(x), WIFSTOPPED(x) ++ is true. */ ++# ifndef WIFSIGNALED ++# define WIFSIGNALED(x) (WTERMSIG (x) != 0 && WTERMSIG(x) != 0x7f) ++# endif ++# ifndef WIFEXITED ++# define WIFEXITED(x) (WTERMSIG (x) == 0) ++# endif ++# ifndef WIFSTOPPED ++# define WIFSTOPPED(x) (WTERMSIG (x) == 0x7f) ++# endif ++ ++/* The termination signal. Only to be accessed if WIFSIGNALED(x) is true. */ ++# ifndef WTERMSIG ++# define WTERMSIG(x) ((x) & 0x7f) ++# endif ++ ++/* The exit status. Only to be accessed if WIFEXITED(x) is true. */ ++# ifndef WEXITSTATUS ++# define WEXITSTATUS(x) (((x) >> 8) & 0xff) ++# endif ++ ++/* The stopping signal. Only to be accessed if WIFSTOPPED(x) is true. */ ++# ifndef WSTOPSIG ++# define WSTOPSIG(x) (((x) >> 8) & 0x7f) ++# endif ++ ++/* True if the process dumped core. Not standardized by POSIX. */ ++# ifndef WCOREDUMP ++# define WCOREDUMP(x) ((x) & 0x80) ++# endif ++ ++#else ++/* Native Windows API. */ ++ ++# include /* for SIGTERM */ ++ ++/* The following macros apply to an argument x, that is a status of a process, ++ as returned by waitpid() or, equivalently, _cwait() or GetExitCodeProcess(). ++ This value is simply an 'int', not composed of bit fields. */ ++ ++/* When an unhandled fatal signal terminates a process, the exit code is 3. */ ++# define WIFSIGNALED(x) ((x) == 3) ++# define WIFEXITED(x) ((x) != 3) ++# define WIFSTOPPED(x) 0 ++ ++/* The signal that terminated a process is not known posthum. */ ++# define WTERMSIG(x) SIGTERM ++ ++# define WEXITSTATUS(x) (x) ++ ++/* There are no stopping signals. */ ++# define WSTOPSIG(x) 0 ++ ++/* There are no core dumps. */ ++# define WCOREDUMP(x) 0 ++ ++#endif ++ ++ ++/* Declarations of functions. */ ++ ++#if 1 ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++_GL_FUNCDECL_SYS (waitpid, pid_t, (pid_t pid, int *statusp, int options)); ++# endif ++_GL_CXXALIAS_SYS (waitpid, pid_t, (pid_t pid, int *statusp, int options)); ++_GL_CXXALIASWARN (waitpid); ++#elif defined GNULIB_POSIXCHECK ++# undef waitpid ++# if HAVE_RAW_DECL_WAITPID ++_GL_WARN_ON_USE (waitpid, "waitpid is unportable - " ++ "use gnulib module sys_wait for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_SYS_WAIT_H */ ++#endif /* _GL_SYS_WAIT_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/time.h gettext-0.19/gettext-tools/gnulib-lib/msvc/time.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/time.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,609 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A more-standard . ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* Don't get in the way of glibc when it includes time.h merely to ++ declare a few standard symbols, rather than to declare all the ++ symbols. (However, skip this for MinGW as it treats __need_time_t ++ incompatibly.) Also, Solaris 8 eventually includes itself ++ recursively; if that is happening, just include the system ++ without adding our own declarations. */ ++#if (((defined __need_time_t || defined __need_clock_t \ ++ || defined __need_timespec) \ ++ && !defined __MINGW32__) \ ++ || defined _GL_TIME_H) ++ ++# include MSVC_INCLUDE(time.h) ++ ++#else ++ ++# define _GL_TIME_H ++ ++# include MSVC_INCLUDE(time.h) ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++# include ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). ++ Or they define it with the wrong member names or define it in ++ (e.g., FreeBSD circa 1997). Stock Mingw prior to 3.0 does not define it, ++ but the pthreads-win32 library defines it in . */ ++# if (_MSC_VER < 1900) ++# if 0 ++# include ++# elif 0 ++# include ++# elif 0 ++# include ++# else ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# if !GNULIB_defined_struct_timespec ++# undef timespec ++# define timespec rpl_timespec ++struct timespec ++{ ++ time_t tv_sec; ++ long int tv_nsec; ++}; ++# define GNULIB_defined_struct_timespec 1 ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++ ++# endif ++# endif ++ ++# if !GNULIB_defined_struct_time_t_must_be_integral ++/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires ++ time_t to be an integer type, even though C99 permits floating ++ point. We don't know of any implementation that uses floating ++ point, and it is much easier to write code that doesn't have to ++ worry about that corner case, so we force the issue. */ ++struct __time_t_must_be_integral { ++ unsigned int __floating_time_t_unsupported : (time_t) 1; ++}; ++# define GNULIB_defined_struct_time_t_must_be_integral 1 ++# endif ++ ++/* Sleep for at least RQTP seconds unless interrupted, If interrupted, ++ return -1 and store the remaining time into RMTP. See ++ . */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define nanosleep rpl_nanosleep ++# endif ++_GL_FUNCDECL_RPL (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp)); ++# endif ++_GL_CXXALIASWARN (nanosleep); ++# endif ++ ++/* Return the 'time_t' representation of TP and normalize TP. */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mktime rpl_mktime ++# endif ++_GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); ++# else ++_GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); ++# endif ++_GL_CXXALIASWARN (mktime); ++# endif ++ ++/* Convert TIMER to RESULT, assuming local time and UTC respectively. See ++ and ++ . */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localtime_r ++# define localtime_r rpl_localtime_r ++# endif ++_GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (localtime_r); ++# endif ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gmtime_r ++# define gmtime_r rpl_gmtime_r ++# endif ++_GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (gmtime_r); ++# endif ++# endif ++ ++/* Convert TIMER to RESULT, assuming local time and UTC respectively. See ++ and ++ . */ ++# if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localtime ++# define localtime rpl_localtime ++# endif ++_GL_FUNCDECL_RPL (localtime, struct tm *, (time_t const *__timer) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (localtime, struct tm *, (time_t const *__timer)); ++# else ++_GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer)); ++# endif ++_GL_CXXALIASWARN (localtime); ++# endif ++ ++# if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gmtime ++# define gmtime rpl_gmtime ++# endif ++_GL_FUNCDECL_RPL (gmtime, struct tm *, (time_t const *__timer) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gmtime, struct tm *, (time_t const *__timer)); ++# else ++_GL_CXXALIAS_SYS (gmtime, struct tm *, (time_t const *__timer)); ++# endif ++_GL_CXXALIASWARN (gmtime); ++# endif ++ ++/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store ++ the resulting broken-down time into TM. See ++ . */ ++# if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, ++ char const *restrict __format, ++ struct tm *restrict __tm) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, ++ char const *restrict __format, ++ struct tm *restrict __tm)); ++_GL_CXXALIASWARN (strptime); ++# endif ++ ++# if defined _GNU_SOURCE && 0 && ! 0 ++typedef struct tm_zone *timezone_t; ++_GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name)); ++_GL_CXXALIAS_SYS (tzalloc, timezone_t, (char const *__name)); ++_GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz)); ++_GL_CXXALIAS_SYS (tzfree, void, (timezone_t __tz)); ++_GL_FUNCDECL_SYS (localtime_rz, struct tm *, ++ (timezone_t __tz, time_t const *restrict __timer, ++ struct tm *restrict __result) _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_SYS (localtime_rz, struct tm *, ++ (timezone_t __tz, time_t const *restrict __timer, ++ struct tm *restrict __result)); ++_GL_FUNCDECL_SYS (mktime_z, time_t, ++ (timezone_t __tz, struct tm *restrict __result) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_SYS (mktime_z, time_t, ++ (timezone_t __tz, struct tm *restrict __result)); ++# endif ++ ++/* Convert TM to a time_t value, assuming UTC. */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef timegm ++# define timegm rpl_timegm ++# endif ++_GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); ++# endif ++_GL_CXXALIASWARN (timegm); ++# endif ++ ++/* Encourage applications to avoid unsafe functions that can overrun ++ buffers when given outlandish struct tm values. Portable ++ applications should use strftime (or even sprintf) instead. */ ++# if defined GNULIB_POSIXCHECK ++# undef asctime ++_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef asctime_r ++_GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef ctime ++_GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef ctime_r ++_GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/uniconv.h gettext-0.19/gettext-tools/gnulib-lib/msvc/uniconv.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/uniconv.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/uniconv.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,173 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Conversions between Unicode and legacy encodings. ++ Copyright (C) 2002, 2005, 2007, 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNICONV_H ++#define _UNICONV_H ++ ++/* Get size_t. */ ++#include ++ ++#include "unitypes.h" ++ ++/* Get enum iconv_ilseq_handler. */ ++#include "iconveh.h" ++ ++/* Get uniconv_register_autodetect() declaration. */ ++#include "striconveha.h" ++ ++/* Get locale_charset() declaration. */ ++#include "localcharset.h" ++ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Converts an entire string, possibly including NUL bytes, from one encoding ++ to a Unicode encoding. ++ Converts a memory region given in encoding FROMCODE. FROMCODE is as for ++ iconv_open(3). ++ The input is in the memory region between SRC (inclusive) and SRC + SRCLEN ++ (exclusive). ++ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this ++ array is filled with offsets into the result, i.e. the character starting ++ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]], ++ and other offsets are set to (size_t)(-1). ++ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size, ++ or *RESULTBUF can be NULL. ++ May erase the contents of the memory at RESULTBUF. ++ If successful: The resulting Unicode string (non-NULL) is returned and its ++ length stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic ++ memory allocation was necessary, or a freshly allocated memory block ++ otherwise. ++ In case of error: NULL is returned and errno is set. Particular errno ++ values: EINVAL, EILSEQ, ENOMEM. */ ++extern uint8_t * ++ u8_conv_from_encoding (const char *fromcode, ++ enum iconv_ilseq_handler handler, ++ const char *src, size_t srclen, ++ size_t *offsets, ++ uint8_t *resultbuf, size_t *lengthp); ++extern uint16_t * ++ u16_conv_from_encoding (const char *fromcode, ++ enum iconv_ilseq_handler handler, ++ const char *src, size_t srclen, ++ size_t *offsets, ++ uint16_t *resultbuf, size_t *lengthp); ++extern uint32_t * ++ u32_conv_from_encoding (const char *fromcode, ++ enum iconv_ilseq_handler handler, ++ const char *src, size_t srclen, ++ size_t *offsets, ++ uint32_t *resultbuf, size_t *lengthp); ++ ++/* Converts an entire Unicode string, possibly including NUL units, from a ++ Unicode encoding to a given encoding. ++ Converts a memory region to encoding TOCODE. TOCODE is as for ++ iconv_open(3). ++ The input is in the memory region between SRC (inclusive) and SRC + SRCLEN ++ (exclusive). ++ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this ++ array is filled with offsets into the result, i.e. the character starting ++ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]], ++ and other offsets are set to (size_t)(-1). ++ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size, ++ or RESULTBUF can be NULL. ++ May erase the contents of the memory at RESULTBUF. ++ If successful: The resulting string (non-NULL) is returned and its length ++ stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic memory ++ allocation was necessary, or a freshly allocated memory block otherwise. ++ In case of error: NULL is returned and errno is set. Particular errno ++ values: EINVAL, EILSEQ, ENOMEM. */ ++extern char * ++ u8_conv_to_encoding (const char *tocode, ++ enum iconv_ilseq_handler handler, ++ const uint8_t *src, size_t srclen, ++ size_t *offsets, ++ char *resultbuf, size_t *lengthp); ++extern char * ++ u16_conv_to_encoding (const char *tocode, ++ enum iconv_ilseq_handler handler, ++ const uint16_t *src, size_t srclen, ++ size_t *offsets, ++ char *resultbuf, size_t *lengthp); ++extern char * ++ u32_conv_to_encoding (const char *tocode, ++ enum iconv_ilseq_handler handler, ++ const uint32_t *src, size_t srclen, ++ size_t *offsets, ++ char *resultbuf, size_t *lengthp); ++ ++/* Converts a NUL terminated string from a given encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: EILSEQ, ENOMEM. */ ++extern uint8_t * ++ u8_strconv_from_encoding (const char *string, ++ const char *fromcode, ++ enum iconv_ilseq_handler handler); ++extern uint16_t * ++ u16_strconv_from_encoding (const char *string, ++ const char *fromcode, ++ enum iconv_ilseq_handler handler); ++extern uint32_t * ++ u32_strconv_from_encoding (const char *string, ++ const char *fromcode, ++ enum iconv_ilseq_handler handler); ++ ++/* Converts a NUL terminated string to a given encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: EILSEQ, ENOMEM. */ ++extern char * ++ u8_strconv_to_encoding (const uint8_t *string, ++ const char *tocode, ++ enum iconv_ilseq_handler handler); ++extern char * ++ u16_strconv_to_encoding (const uint16_t *string, ++ const char *tocode, ++ enum iconv_ilseq_handler handler); ++extern char * ++ u32_strconv_to_encoding (const uint32_t *string, ++ const char *tocode, ++ enum iconv_ilseq_handler handler); ++ ++/* Converts a NUL terminated string from the locale encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: ENOMEM. */ ++extern uint8_t * ++ u8_strconv_from_locale (const char *string); ++extern uint16_t * ++ u16_strconv_from_locale (const char *string); ++extern uint32_t * ++ u32_strconv_from_locale (const char *string); ++ ++/* Converts a NUL terminated string to the locale encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: ENOMEM. */ ++extern char * ++ u8_strconv_to_locale (const uint8_t *string); ++extern char * ++ u16_strconv_to_locale (const uint16_t *string); ++extern char * ++ u32_strconv_to_locale (const uint32_t *string); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNICONV_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unictype.h gettext-0.19/gettext-tools/gnulib-lib/msvc/unictype.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unictype.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/unictype.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1051 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Unicode character classification and properties. ++ Copyright (C) 2002, 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNICTYPE_H ++#define _UNICTYPE_H ++ ++#include "unitypes.h" ++ ++/* Get bool. */ ++#include ++ ++/* Get size_t. */ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* ========================================================================= */ ++ ++/* Field 1 of Unicode Character Database: Character name. ++ See "uniname.h". */ ++ ++/* ========================================================================= */ ++ ++/* Field 2 of Unicode Character Database: General category. */ ++ ++/* Data type denoting a General category value. This is not just a bitmask, ++ but rather a bitmask and a pointer to the lookup table, so that programs ++ that use only the predefined bitmasks (i.e. don't combine bitmasks with & ++ and |) don't have a link-time dependency towards the big general table. */ ++typedef struct ++{ ++ uint32_t bitmask : 31; ++ /*bool*/ unsigned int generic : 1; ++ union ++ { ++ const void *table; /* when generic is 0 */ ++ bool (*lookup_fn) (ucs4_t uc, uint32_t bitmask); /* when generic is 1 */ ++ } lookup; ++} ++uc_general_category_t; ++ ++/* Bits and bit masks denoting General category values. UnicodeData-3.2.0.html ++ says a 32-bit integer will always suffice to represent them. ++ These bit masks can only be used with the uc_is_general_category_withtable ++ function. */ ++enum ++{ ++ UC_CATEGORY_MASK_L = 0x0000001f, ++ UC_CATEGORY_MASK_LC = 0x00000007, ++ UC_CATEGORY_MASK_Lu = 0x00000001, ++ UC_CATEGORY_MASK_Ll = 0x00000002, ++ UC_CATEGORY_MASK_Lt = 0x00000004, ++ UC_CATEGORY_MASK_Lm = 0x00000008, ++ UC_CATEGORY_MASK_Lo = 0x00000010, ++ UC_CATEGORY_MASK_M = 0x000000e0, ++ UC_CATEGORY_MASK_Mn = 0x00000020, ++ UC_CATEGORY_MASK_Mc = 0x00000040, ++ UC_CATEGORY_MASK_Me = 0x00000080, ++ UC_CATEGORY_MASK_N = 0x00000700, ++ UC_CATEGORY_MASK_Nd = 0x00000100, ++ UC_CATEGORY_MASK_Nl = 0x00000200, ++ UC_CATEGORY_MASK_No = 0x00000400, ++ UC_CATEGORY_MASK_P = 0x0003f800, ++ UC_CATEGORY_MASK_Pc = 0x00000800, ++ UC_CATEGORY_MASK_Pd = 0x00001000, ++ UC_CATEGORY_MASK_Ps = 0x00002000, ++ UC_CATEGORY_MASK_Pe = 0x00004000, ++ UC_CATEGORY_MASK_Pi = 0x00008000, ++ UC_CATEGORY_MASK_Pf = 0x00010000, ++ UC_CATEGORY_MASK_Po = 0x00020000, ++ UC_CATEGORY_MASK_S = 0x003c0000, ++ UC_CATEGORY_MASK_Sm = 0x00040000, ++ UC_CATEGORY_MASK_Sc = 0x00080000, ++ UC_CATEGORY_MASK_Sk = 0x00100000, ++ UC_CATEGORY_MASK_So = 0x00200000, ++ UC_CATEGORY_MASK_Z = 0x01c00000, ++ UC_CATEGORY_MASK_Zs = 0x00400000, ++ UC_CATEGORY_MASK_Zl = 0x00800000, ++ UC_CATEGORY_MASK_Zp = 0x01000000, ++ UC_CATEGORY_MASK_C = 0x3e000000, ++ UC_CATEGORY_MASK_Cc = 0x02000000, ++ UC_CATEGORY_MASK_Cf = 0x04000000, ++ UC_CATEGORY_MASK_Cs = 0x08000000, ++ UC_CATEGORY_MASK_Co = 0x10000000, ++ UC_CATEGORY_MASK_Cn = 0x20000000 ++}; ++ ++/* Predefined General category values. */ ++extern const uc_general_category_t UC_CATEGORY_L; ++extern const uc_general_category_t UC_CATEGORY_LC; ++extern const uc_general_category_t UC_CATEGORY_Lu; ++extern const uc_general_category_t UC_CATEGORY_Ll; ++extern const uc_general_category_t UC_CATEGORY_Lt; ++extern const uc_general_category_t UC_CATEGORY_Lm; ++extern const uc_general_category_t UC_CATEGORY_Lo; ++extern const uc_general_category_t UC_CATEGORY_M; ++extern const uc_general_category_t UC_CATEGORY_Mn; ++extern const uc_general_category_t UC_CATEGORY_Mc; ++extern const uc_general_category_t UC_CATEGORY_Me; ++extern const uc_general_category_t UC_CATEGORY_N; ++extern const uc_general_category_t UC_CATEGORY_Nd; ++extern const uc_general_category_t UC_CATEGORY_Nl; ++extern const uc_general_category_t UC_CATEGORY_No; ++extern const uc_general_category_t UC_CATEGORY_P; ++extern const uc_general_category_t UC_CATEGORY_Pc; ++extern const uc_general_category_t UC_CATEGORY_Pd; ++extern const uc_general_category_t UC_CATEGORY_Ps; ++extern const uc_general_category_t UC_CATEGORY_Pe; ++extern const uc_general_category_t UC_CATEGORY_Pi; ++extern const uc_general_category_t UC_CATEGORY_Pf; ++extern const uc_general_category_t UC_CATEGORY_Po; ++extern const uc_general_category_t UC_CATEGORY_S; ++extern const uc_general_category_t UC_CATEGORY_Sm; ++extern const uc_general_category_t UC_CATEGORY_Sc; ++extern const uc_general_category_t UC_CATEGORY_Sk; ++extern const uc_general_category_t UC_CATEGORY_So; ++extern const uc_general_category_t UC_CATEGORY_Z; ++extern const uc_general_category_t UC_CATEGORY_Zs; ++extern const uc_general_category_t UC_CATEGORY_Zl; ++extern const uc_general_category_t UC_CATEGORY_Zp; ++extern const uc_general_category_t UC_CATEGORY_C; ++extern const uc_general_category_t UC_CATEGORY_Cc; ++extern const uc_general_category_t UC_CATEGORY_Cf; ++extern const uc_general_category_t UC_CATEGORY_Cs; ++extern const uc_general_category_t UC_CATEGORY_Co; ++extern const uc_general_category_t UC_CATEGORY_Cn; ++/* Non-public. */ ++extern const uc_general_category_t _UC_CATEGORY_NONE; ++ ++/* Alias names for predefined General category values. */ ++#define UC_LETTER UC_CATEGORY_L ++#define UC_CASED_LETTER UC_CATEGORY_LC ++#define UC_UPPERCASE_LETTER UC_CATEGORY_Lu ++#define UC_LOWERCASE_LETTER UC_CATEGORY_Ll ++#define UC_TITLECASE_LETTER UC_CATEGORY_Lt ++#define UC_MODIFIER_LETTER UC_CATEGORY_Lm ++#define UC_OTHER_LETTER UC_CATEGORY_Lo ++#define UC_MARK UC_CATEGORY_M ++#define UC_NON_SPACING_MARK UC_CATEGORY_Mn ++#define UC_COMBINING_SPACING_MARK UC_CATEGORY_Mc ++#define UC_ENCLOSING_MARK UC_CATEGORY_Me ++#define UC_NUMBER UC_CATEGORY_N ++#define UC_DECIMAL_DIGIT_NUMBER UC_CATEGORY_Nd ++#define UC_LETTER_NUMBER UC_CATEGORY_Nl ++#define UC_OTHER_NUMBER UC_CATEGORY_No ++#define UC_PUNCTUATION UC_CATEGORY_P ++#define UC_CONNECTOR_PUNCTUATION UC_CATEGORY_Pc ++#define UC_DASH_PUNCTUATION UC_CATEGORY_Pd ++#define UC_OPEN_PUNCTUATION UC_CATEGORY_Ps /* a.k.a. UC_START_PUNCTUATION */ ++#define UC_CLOSE_PUNCTUATION UC_CATEGORY_Pe /* a.k.a. UC_END_PUNCTUATION */ ++#define UC_INITIAL_QUOTE_PUNCTUATION UC_CATEGORY_Pi ++#define UC_FINAL_QUOTE_PUNCTUATION UC_CATEGORY_Pf ++#define UC_OTHER_PUNCTUATION UC_CATEGORY_Po ++#define UC_SYMBOL UC_CATEGORY_S ++#define UC_MATH_SYMBOL UC_CATEGORY_Sm ++#define UC_CURRENCY_SYMBOL UC_CATEGORY_Sc ++#define UC_MODIFIER_SYMBOL UC_CATEGORY_Sk ++#define UC_OTHER_SYMBOL UC_CATEGORY_So ++#define UC_SEPARATOR UC_CATEGORY_Z ++#define UC_SPACE_SEPARATOR UC_CATEGORY_Zs ++#define UC_LINE_SEPARATOR UC_CATEGORY_Zl ++#define UC_PARAGRAPH_SEPARATOR UC_CATEGORY_Zp ++#define UC_OTHER UC_CATEGORY_C ++#define UC_CONTROL UC_CATEGORY_Cc ++#define UC_FORMAT UC_CATEGORY_Cf ++#define UC_SURROGATE UC_CATEGORY_Cs /* all of them are invalid characters */ ++#define UC_PRIVATE_USE UC_CATEGORY_Co ++#define UC_UNASSIGNED UC_CATEGORY_Cn /* some of them are invalid characters */ ++ ++/* Return the union of two general categories. ++ This corresponds to the unions of the two sets of characters. */ ++extern uc_general_category_t ++ uc_general_category_or (uc_general_category_t category1, ++ uc_general_category_t category2); ++ ++/* Return the intersection of two general categories as bit masks. ++ This *does*not* correspond to the intersection of the two sets of ++ characters. */ ++extern uc_general_category_t ++ uc_general_category_and (uc_general_category_t category1, ++ uc_general_category_t category2); ++ ++/* Return the intersection of a general category with the complement of a ++ second general category, as bit masks. ++ This *does*not* correspond to the intersection with complement, when ++ viewing the categories as sets of characters. */ ++extern uc_general_category_t ++ uc_general_category_and_not (uc_general_category_t category1, ++ uc_general_category_t category2); ++ ++/* Return the name of a general category. */ ++extern const char * ++ uc_general_category_name (uc_general_category_t category) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the long name of a general category. */ ++extern const char * ++ uc_general_category_long_name (uc_general_category_t category) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the general category given by name, e.g. "Lu", or by long name, ++ e.g. "Uppercase Letter". */ ++extern uc_general_category_t ++ uc_general_category_byname (const char *category_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the general category of a Unicode character. */ ++extern uc_general_category_t ++ uc_general_category (ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether a Unicode character belongs to a given category. ++ The CATEGORY argument can be the combination of several predefined ++ general categories. */ ++extern bool ++ uc_is_general_category (ucs4_t uc, uc_general_category_t category) ++ _UC_ATTRIBUTE_PURE; ++/* Likewise. This function uses a big table comprising all categories. */ ++extern bool ++ uc_is_general_category_withtable (ucs4_t uc, uint32_t bitmask) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 3 of Unicode Character Database: Canonical combining class. */ ++ ++/* The possible results of uc_combining_class (0..255) are described in ++ UCD.html. The list here is not definitive; more values can be added ++ in future versions. */ ++enum ++{ ++ UC_CCC_NR = 0, /* Not Reordered */ ++ UC_CCC_OV = 1, /* Overlay */ ++ UC_CCC_NK = 7, /* Nukta */ ++ UC_CCC_KV = 8, /* Kana Voicing */ ++ UC_CCC_VR = 9, /* Virama */ ++ UC_CCC_ATBL = 200, /* Attached Below Left */ ++ UC_CCC_ATB = 202, /* Attached Below */ ++ UC_CCC_ATA = 214, /* Attached Above */ ++ UC_CCC_ATAR = 216, /* Attached Above Right */ ++ UC_CCC_BL = 218, /* Below Left */ ++ UC_CCC_B = 220, /* Below */ ++ UC_CCC_BR = 222, /* Below Right */ ++ UC_CCC_L = 224, /* Left */ ++ UC_CCC_R = 226, /* Right */ ++ UC_CCC_AL = 228, /* Above Left */ ++ UC_CCC_A = 230, /* Above */ ++ UC_CCC_AR = 232, /* Above Right */ ++ UC_CCC_DB = 233, /* Double Below */ ++ UC_CCC_DA = 234, /* Double Above */ ++ UC_CCC_IS = 240 /* Iota Subscript */ ++}; ++ ++/* Return the canonical combining class of a Unicode character. */ ++extern int ++ uc_combining_class (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the name of a canonical combining class. */ ++extern const char * ++ uc_combining_class_name (int ccc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the long name of a canonical combining class. */ ++extern const char * ++ uc_combining_class_long_name (int ccc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the canonical combining class given by name, e.g. "BL", or by long ++ name, e.g. "Below Left". */ ++extern int ++ uc_combining_class_byname (const char *ccc_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* ========================================================================= */ ++ ++/* Field 4 of Unicode Character Database: Bidi class. ++ Before Unicode 4.0, this field was called "Bidirectional category". */ ++ ++enum ++{ ++ UC_BIDI_L, /* Left-to-Right */ ++ UC_BIDI_LRE, /* Left-to-Right Embedding */ ++ UC_BIDI_LRO, /* Left-to-Right Override */ ++ UC_BIDI_R, /* Right-to-Left */ ++ UC_BIDI_AL, /* Right-to-Left Arabic */ ++ UC_BIDI_RLE, /* Right-to-Left Embedding */ ++ UC_BIDI_RLO, /* Right-to-Left Override */ ++ UC_BIDI_PDF, /* Pop Directional Format */ ++ UC_BIDI_EN, /* European Number */ ++ UC_BIDI_ES, /* European Number Separator */ ++ UC_BIDI_ET, /* European Number Terminator */ ++ UC_BIDI_AN, /* Arabic Number */ ++ UC_BIDI_CS, /* Common Number Separator */ ++ UC_BIDI_NSM, /* Non-Spacing Mark */ ++ UC_BIDI_BN, /* Boundary Neutral */ ++ UC_BIDI_B, /* Paragraph Separator */ ++ UC_BIDI_S, /* Segment Separator */ ++ UC_BIDI_WS, /* Whitespace */ ++ UC_BIDI_ON, /* Other Neutral */ ++ UC_BIDI_LRI, /* Left-to-Right Isolate */ ++ UC_BIDI_RLI, /* Right-to-Left Isolate */ ++ UC_BIDI_FSI, /* First Strong Isolate */ ++ UC_BIDI_PDI /* Pop Directional Isolate */ ++}; ++ ++/* Return the name of a bidi class. */ ++extern const char * ++ uc_bidi_class_name (int bidi_class) ++ _UC_ATTRIBUTE_CONST; ++/* Same; obsolete function name. */ ++extern const char * ++ uc_bidi_category_name (int category) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the long name of a bidi class. */ ++extern const char * ++ uc_bidi_class_long_name (int bidi_class) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the bidi class given by name, e.g. "LRE", or by long name, e.g. ++ "Left-to-Right Embedding". */ ++extern int ++ uc_bidi_class_byname (const char *bidi_class_name) ++ _UC_ATTRIBUTE_PURE; ++/* Same; obsolete function name. */ ++extern int ++ uc_bidi_category_byname (const char *category_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the bidi class of a Unicode character. */ ++extern int ++ uc_bidi_class (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++/* Same; obsolete function name. */ ++extern int ++ uc_bidi_category (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test whether a Unicode character belongs to a given bidi class. */ ++extern bool ++ uc_is_bidi_class (ucs4_t uc, int bidi_class) ++ _UC_ATTRIBUTE_CONST; ++/* Same; obsolete function name. */ ++extern bool ++ uc_is_bidi_category (ucs4_t uc, int category) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 5 of Unicode Character Database: Character decomposition mapping. ++ See "uninorm.h". */ ++ ++/* ========================================================================= */ ++ ++/* Field 6 of Unicode Character Database: Decimal digit value. */ ++ ++/* Return the decimal digit value of a Unicode character. */ ++extern int ++ uc_decimal_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 7 of Unicode Character Database: Digit value. */ ++ ++/* Return the digit value of a Unicode character. */ ++extern int ++ uc_digit_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 8 of Unicode Character Database: Numeric value. */ ++ ++/* Return the numeric value of a Unicode character. */ ++typedef struct ++{ ++ int numerator; ++ int denominator; ++} ++uc_fraction_t; ++extern uc_fraction_t ++ uc_numeric_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 9 of Unicode Character Database: Mirrored. */ ++ ++/* Return the mirrored character of a Unicode character UC in *PUC. */ ++extern bool ++ uc_mirror_char (ucs4_t uc, ucs4_t *puc); ++ ++/* ========================================================================= */ ++ ++/* Field 10 of Unicode Character Database: Unicode 1.0 Name. ++ Not available in this library. */ ++ ++/* ========================================================================= */ ++ ++/* Field 11 of Unicode Character Database: ISO 10646 comment. ++ Not available in this library. */ ++ ++/* ========================================================================= */ ++ ++/* Field 12, 13, 14 of Unicode Character Database: Uppercase mapping, ++ lowercase mapping, titlecase mapping. See "unicase.h". */ ++ ++/* ========================================================================= */ ++ ++/* Field 2 of the file ArabicShaping.txt in the Unicode Character Database. */ ++ ++/* Possible joining types. */ ++enum ++{ ++ UC_JOINING_TYPE_U, /* Non_Joining */ ++ UC_JOINING_TYPE_T, /* Transparent */ ++ UC_JOINING_TYPE_C, /* Join_Causing */ ++ UC_JOINING_TYPE_L, /* Left_Joining */ ++ UC_JOINING_TYPE_R, /* Right_Joining */ ++ UC_JOINING_TYPE_D /* Dual_Joining */ ++}; ++ ++/* Return the name of a joining type. */ ++extern const char * ++ uc_joining_type_name (int joining_type) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the long name of a joining type. */ ++extern const char * ++ uc_joining_type_long_name (int joining_type) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the joining type given by name, e.g. "D", or by long name, e.g. ++ "Dual Joining". */ ++extern int ++ uc_joining_type_byname (const char *joining_type_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the joining type of a Unicode character. */ ++extern int ++ uc_joining_type (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 3 of the file ArabicShaping.txt in the Unicode Character Database. */ ++ ++/* Possible joining groups. ++ This enumeration may be extended in the future. */ ++enum ++{ ++ UC_JOINING_GROUP_NONE, /* No_Joining_Group */ ++ UC_JOINING_GROUP_AIN, /* Ain */ ++ UC_JOINING_GROUP_ALAPH, /* Alaph */ ++ UC_JOINING_GROUP_ALEF, /* Alef */ ++ UC_JOINING_GROUP_BEH, /* Beh */ ++ UC_JOINING_GROUP_BETH, /* Beth */ ++ UC_JOINING_GROUP_BURUSHASKI_YEH_BARREE, /* Burushaski_Yeh_Barree */ ++ UC_JOINING_GROUP_DAL, /* Dal */ ++ UC_JOINING_GROUP_DALATH_RISH, /* Dalath_Rish */ ++ UC_JOINING_GROUP_E, /* E */ ++ UC_JOINING_GROUP_FARSI_YEH, /* Farsi_Yeh */ ++ UC_JOINING_GROUP_FE, /* Fe */ ++ UC_JOINING_GROUP_FEH, /* Feh */ ++ UC_JOINING_GROUP_FINAL_SEMKATH, /* Final_Semkath */ ++ UC_JOINING_GROUP_GAF, /* Gaf */ ++ UC_JOINING_GROUP_GAMAL, /* Gamal */ ++ UC_JOINING_GROUP_HAH, /* Hah */ ++ UC_JOINING_GROUP_HE, /* He */ ++ UC_JOINING_GROUP_HEH, /* Heh */ ++ UC_JOINING_GROUP_HEH_GOAL, /* Heh_Goal */ ++ UC_JOINING_GROUP_HETH, /* Heth */ ++ UC_JOINING_GROUP_KAF, /* Kaf */ ++ UC_JOINING_GROUP_KAPH, /* Kaph */ ++ UC_JOINING_GROUP_KHAPH, /* Khaph */ ++ UC_JOINING_GROUP_KNOTTED_HEH, /* Knotted_Heh */ ++ UC_JOINING_GROUP_LAM, /* Lam */ ++ UC_JOINING_GROUP_LAMADH, /* Lamadh */ ++ UC_JOINING_GROUP_MEEM, /* Meem */ ++ UC_JOINING_GROUP_MIM, /* Mim */ ++ UC_JOINING_GROUP_NOON, /* Noon */ ++ UC_JOINING_GROUP_NUN, /* Nun */ ++ UC_JOINING_GROUP_NYA, /* Nya */ ++ UC_JOINING_GROUP_PE, /* Pe */ ++ UC_JOINING_GROUP_QAF, /* Qaf */ ++ UC_JOINING_GROUP_QAPH, /* Qaph */ ++ UC_JOINING_GROUP_REH, /* Reh */ ++ UC_JOINING_GROUP_REVERSED_PE, /* Reversed_Pe */ ++ UC_JOINING_GROUP_SAD, /* Sad */ ++ UC_JOINING_GROUP_SADHE, /* Sadhe */ ++ UC_JOINING_GROUP_SEEN, /* Seen */ ++ UC_JOINING_GROUP_SEMKATH, /* Semkath */ ++ UC_JOINING_GROUP_SHIN, /* Shin */ ++ UC_JOINING_GROUP_SWASH_KAF, /* Swash_Kaf */ ++ UC_JOINING_GROUP_SYRIAC_WAW, /* Syriac_Waw */ ++ UC_JOINING_GROUP_TAH, /* Tah */ ++ UC_JOINING_GROUP_TAW, /* Taw */ ++ UC_JOINING_GROUP_TEH_MARBUTA, /* Teh_Marbuta */ ++ UC_JOINING_GROUP_TEH_MARBUTA_GOAL, /* Teh_Marbuta_Goal */ ++ UC_JOINING_GROUP_TETH, /* Teth */ ++ UC_JOINING_GROUP_WAW, /* Waw */ ++ UC_JOINING_GROUP_YEH, /* Yeh */ ++ UC_JOINING_GROUP_YEH_BARREE, /* Yeh_Barree */ ++ UC_JOINING_GROUP_YEH_WITH_TAIL, /* Yeh_With_Tail */ ++ UC_JOINING_GROUP_YUDH, /* Yudh */ ++ UC_JOINING_GROUP_YUDH_HE, /* Yudh_He */ ++ UC_JOINING_GROUP_ZAIN, /* Zain */ ++ UC_JOINING_GROUP_ZHAIN, /* Zhain */ ++ UC_JOINING_GROUP_ROHINGYA_YEH, /* Rohingya_Yeh */ ++ UC_JOINING_GROUP_STRAIGHT_WAW, /* Straight_Waw */ ++ UC_JOINING_GROUP_MANICHAEAN_ALEPH, /* Manichaean_Aleph */ ++ UC_JOINING_GROUP_MANICHAEAN_BETH, /* Manichaean_Beth */ ++ UC_JOINING_GROUP_MANICHAEAN_GIMEL, /* Manichaean_Gimel */ ++ UC_JOINING_GROUP_MANICHAEAN_DALETH, /* Manichaean_Daleth */ ++ UC_JOINING_GROUP_MANICHAEAN_WAW, /* Manichaean_Waw */ ++ UC_JOINING_GROUP_MANICHAEAN_ZAYIN, /* Manichaean_Zayin */ ++ UC_JOINING_GROUP_MANICHAEAN_HETH, /* Manichaean_Heth */ ++ UC_JOINING_GROUP_MANICHAEAN_TETH, /* Manichaean_Teth */ ++ UC_JOINING_GROUP_MANICHAEAN_YODH, /* Manichaean_Yodh */ ++ UC_JOINING_GROUP_MANICHAEAN_KAPH, /* Manichaean_Kaph */ ++ UC_JOINING_GROUP_MANICHAEAN_LAMEDH, /* Manichaean_Lamedh */ ++ UC_JOINING_GROUP_MANICHAEAN_DHAMEDH, /* Manichaean_Dhamedh */ ++ UC_JOINING_GROUP_MANICHAEAN_THAMEDH, /* Manichaean_Thamedh */ ++ UC_JOINING_GROUP_MANICHAEAN_MEM, /* Manichaean_Mem */ ++ UC_JOINING_GROUP_MANICHAEAN_NUN, /* Manichaean_Nun */ ++ UC_JOINING_GROUP_MANICHAEAN_SAMEKH, /* Manichaean_Aleph */ ++ UC_JOINING_GROUP_MANICHAEAN_AYIN, /* Manichaean_Ayin */ ++ UC_JOINING_GROUP_MANICHAEAN_PE, /* Manichaean_Pe */ ++ UC_JOINING_GROUP_MANICHAEAN_SADHE, /* Manichaean_Sadhe */ ++ UC_JOINING_GROUP_MANICHAEAN_QOPH, /* Manichaean_Qoph */ ++ UC_JOINING_GROUP_MANICHAEAN_RESH, /* Manichaean_Resh */ ++ UC_JOINING_GROUP_MANICHAEAN_TAW, /* Manichaean_Taw */ ++ UC_JOINING_GROUP_MANICHAEAN_ONE, /* Manichaean_One */ ++ UC_JOINING_GROUP_MANICHAEAN_FIVE, /* Manichaean_Five */ ++ UC_JOINING_GROUP_MANICHAEAN_TEN, /* Manichaean_Ten */ ++ UC_JOINING_GROUP_MANICHAEAN_TWENTY, /* Manichaean_Twenty */ ++ UC_JOINING_GROUP_MANICHAEAN_HUNDRED /* Manichaean_Hundred */ ++}; ++ ++/* Return the name of a joining group. */ ++extern const char * ++ uc_joining_group_name (int joining_group) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the joining group given by name, e.g. "Teh_Marbuta". */ ++extern int ++ uc_joining_group_byname (const char *joining_group_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the joining group of a Unicode character. */ ++extern int ++ uc_joining_group (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Common API for properties. */ ++ ++/* Data type denoting a property. This is not just a number, but rather a ++ pointer to the test functions, so that programs that use only few of the ++ properties don't have a link-time dependency towards all the tables. */ ++typedef struct ++{ ++ bool (*test_fn) (ucs4_t uc); ++} ++uc_property_t; ++ ++/* Predefined properties. */ ++/* General. */ ++extern const uc_property_t UC_PROPERTY_WHITE_SPACE; ++extern const uc_property_t UC_PROPERTY_ALPHABETIC; ++extern const uc_property_t UC_PROPERTY_OTHER_ALPHABETIC; ++extern const uc_property_t UC_PROPERTY_NOT_A_CHARACTER; ++extern const uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT; ++extern const uc_property_t UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT; ++extern const uc_property_t UC_PROPERTY_DEPRECATED; ++extern const uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION; ++extern const uc_property_t UC_PROPERTY_VARIATION_SELECTOR; ++extern const uc_property_t UC_PROPERTY_PRIVATE_USE; ++extern const uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE; ++/* Case. */ ++extern const uc_property_t UC_PROPERTY_UPPERCASE; ++extern const uc_property_t UC_PROPERTY_OTHER_UPPERCASE; ++extern const uc_property_t UC_PROPERTY_LOWERCASE; ++extern const uc_property_t UC_PROPERTY_OTHER_LOWERCASE; ++extern const uc_property_t UC_PROPERTY_TITLECASE; ++extern const uc_property_t UC_PROPERTY_CASED; ++extern const uc_property_t UC_PROPERTY_CASE_IGNORABLE; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_LOWERCASED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_UPPERCASED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_TITLECASED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEFOLDED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEMAPPED; ++extern const uc_property_t UC_PROPERTY_SOFT_DOTTED; ++/* Identifiers. */ ++extern const uc_property_t UC_PROPERTY_ID_START; ++extern const uc_property_t UC_PROPERTY_OTHER_ID_START; ++extern const uc_property_t UC_PROPERTY_ID_CONTINUE; ++extern const uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE; ++extern const uc_property_t UC_PROPERTY_XID_START; ++extern const uc_property_t UC_PROPERTY_XID_CONTINUE; ++extern const uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE; ++extern const uc_property_t UC_PROPERTY_PATTERN_SYNTAX; ++/* Shaping and rendering. */ ++extern const uc_property_t UC_PROPERTY_JOIN_CONTROL; ++extern const uc_property_t UC_PROPERTY_GRAPHEME_BASE; ++extern const uc_property_t UC_PROPERTY_GRAPHEME_EXTEND; ++extern const uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND; ++extern const uc_property_t UC_PROPERTY_GRAPHEME_LINK; ++/* Bidi. */ ++extern const uc_property_t UC_PROPERTY_BIDI_CONTROL; ++extern const uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT; ++extern const uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT; ++extern const uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT; ++extern const uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT; ++extern const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT; ++extern const uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_WHITESPACE; ++extern const uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK; ++extern const uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL; ++extern const uc_property_t UC_PROPERTY_BIDI_PDF; ++extern const uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE; ++extern const uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL; ++/* Numeric. */ ++extern const uc_property_t UC_PROPERTY_HEX_DIGIT; ++extern const uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT; ++/* CJK. */ ++extern const uc_property_t UC_PROPERTY_IDEOGRAPHIC; ++extern const uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH; ++extern const uc_property_t UC_PROPERTY_RADICAL; ++extern const uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR; ++extern const uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR; ++/* Misc. */ ++extern const uc_property_t UC_PROPERTY_ZERO_WIDTH; ++extern const uc_property_t UC_PROPERTY_SPACE; ++extern const uc_property_t UC_PROPERTY_NON_BREAK; ++extern const uc_property_t UC_PROPERTY_ISO_CONTROL; ++extern const uc_property_t UC_PROPERTY_FORMAT_CONTROL; ++extern const uc_property_t UC_PROPERTY_DASH; ++extern const uc_property_t UC_PROPERTY_HYPHEN; ++extern const uc_property_t UC_PROPERTY_PUNCTUATION; ++extern const uc_property_t UC_PROPERTY_LINE_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_QUOTATION_MARK; ++extern const uc_property_t UC_PROPERTY_SENTENCE_TERMINAL; ++extern const uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION; ++extern const uc_property_t UC_PROPERTY_CURRENCY_SYMBOL; ++extern const uc_property_t UC_PROPERTY_MATH; ++extern const uc_property_t UC_PROPERTY_OTHER_MATH; ++extern const uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION; ++extern const uc_property_t UC_PROPERTY_LEFT_OF_PAIR; ++extern const uc_property_t UC_PROPERTY_COMBINING; ++extern const uc_property_t UC_PROPERTY_COMPOSITE; ++extern const uc_property_t UC_PROPERTY_DECIMAL_DIGIT; ++extern const uc_property_t UC_PROPERTY_NUMERIC; ++extern const uc_property_t UC_PROPERTY_DIACRITIC; ++extern const uc_property_t UC_PROPERTY_EXTENDER; ++extern const uc_property_t UC_PROPERTY_IGNORABLE_CONTROL; ++ ++/* Return the property given by name, e.g. "White space". */ ++extern uc_property_t ++ uc_property_byname (const char *property_name); ++ ++/* Test whether a property is valid. */ ++#define uc_property_is_valid(property) ((property).test_fn != NULL) ++ ++/* Test whether a Unicode character has a given property. */ ++extern bool ++ uc_is_property (ucs4_t uc, uc_property_t property); ++extern bool uc_is_property_white_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_alphabetic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_alphabetic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_not_a_character (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_default_ignorable_code_point (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_default_ignorable_code_point (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_deprecated (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_logical_order_exception (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_variation_selector (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_private_use (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_unassigned_code_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_uppercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_uppercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_lowercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_lowercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_titlecase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_cased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_case_ignorable (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_lowercased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_uppercased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_titlecased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_casefolded (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_casemapped (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_soft_dotted (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_id_start (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_id_start (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_id_continue (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_id_continue (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_xid_start (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_xid_continue (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_pattern_white_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_pattern_syntax (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_join_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_grapheme_base (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_grapheme_extend (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_grapheme_extend (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_grapheme_link (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_left_to_right (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_hebrew_right_to_left (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_arabic_right_to_left (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_european_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_eur_num_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_eur_num_terminator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_arabic_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_common_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_block_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_segment_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_whitespace (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_non_spacing_mark (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_boundary_neutral (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_pdf (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_embedding_or_override (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_other_neutral (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_hex_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ascii_hex_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ideographic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_unified_ideograph (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_radical (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ids_binary_operator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ids_trinary_operator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_zero_width (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_non_break (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_iso_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_format_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_dash (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_hyphen (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_punctuation (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_line_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_paragraph_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_quotation_mark (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_sentence_terminal (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_terminal_punctuation (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_currency_symbol (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_math (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_math (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_paired_punctuation (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_left_of_pair (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_combining (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_composite (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_decimal_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_numeric (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_diacritic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_extender (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ignorable_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Subdivision of the Unicode characters into scripts. */ ++ ++typedef struct ++{ ++ unsigned int code : 21; ++ unsigned int start : 1; ++ unsigned int end : 1; ++} ++uc_interval_t; ++typedef struct ++{ ++ unsigned int nintervals; ++ const uc_interval_t *intervals; ++ const char *name; ++} ++uc_script_t; ++ ++/* Return the script of a Unicode character. */ ++extern const uc_script_t * ++ uc_script (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the script given by name, e.g. "HAN". */ ++extern const uc_script_t * ++ uc_script_byname (const char *script_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether a Unicode character belongs to a given script. */ ++extern bool ++ uc_is_script (ucs4_t uc, const uc_script_t *script) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Get the list of all scripts. */ ++extern void ++ uc_all_scripts (const uc_script_t **scripts, size_t *count); ++ ++/* ========================================================================= */ ++ ++/* Subdivision of the Unicode character range into blocks. */ ++ ++typedef struct ++{ ++ ucs4_t start; ++ ucs4_t end; ++ const char *name; ++} ++uc_block_t; ++ ++/* Return the block a character belongs to. */ ++extern const uc_block_t * ++ uc_block (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test whether a Unicode character belongs to a given block. */ ++extern bool ++ uc_is_block (ucs4_t uc, const uc_block_t *block) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Get the list of all blocks. */ ++extern void ++ uc_all_blocks (const uc_block_t **blocks, size_t *count); ++ ++/* ========================================================================= */ ++ ++/* Properties taken from language standards. */ ++ ++/* Test whether a Unicode character is considered whitespace in ISO C 99. */ ++extern bool ++ uc_is_c_whitespace (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test whether a Unicode character is considered whitespace in Java. */ ++extern bool ++ uc_is_java_whitespace (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++enum ++{ ++ UC_IDENTIFIER_START, /* valid as first or subsequent character */ ++ UC_IDENTIFIER_VALID, /* valid as subsequent character only */ ++ UC_IDENTIFIER_INVALID, /* not valid */ ++ UC_IDENTIFIER_IGNORABLE /* ignorable (Java only) */ ++}; ++ ++/* Return the categorization of a Unicode character w.r.t. the ISO C 99 ++ identifier syntax. */ ++extern int ++ uc_c_ident_category (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the categorization of a Unicode character w.r.t. the Java ++ identifier syntax. */ ++extern int ++ uc_java_ident_category (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Like ISO C and . These functions are deprecated, ++ because this set of functions was designed with ASCII in mind and cannot ++ reflect the more diverse reality of the Unicode character set. But they ++ can be a quick-and-dirty porting aid when migrating from wchar_t APIs ++ to Unicode strings. */ ++ ++/* Test for any character for which 'uc_is_alpha' or 'uc_is_digit' is true. */ ++extern bool ++ uc_is_alnum (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character for which 'uc_is_upper' or 'uc_is_lower' is true, ++ or any character that is one of a locale-specific set of characters for ++ which none of 'uc_is_cntrl', 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' ++ is true. */ ++extern bool ++ uc_is_alpha (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any control character. */ ++extern bool ++ uc_is_cntrl (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a decimal-digit character. */ ++extern bool ++ uc_is_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character for which 'uc_is_print' is true and 'uc_is_space' ++ is false. */ ++extern bool ++ uc_is_graph (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a lowercase letter or is one ++ of a locale-specific set of characters for which none of 'uc_is_cntrl', ++ 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true. */ ++extern bool ++ uc_is_lower (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any printing character. */ ++extern bool ++ uc_is_print (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any printing character that is one of a locale-specific set of ++ characters for which neither 'uc_is_space' nor 'uc_is_alnum' is true. */ ++extern bool ++ uc_is_punct (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a locale-specific set of ++ characters for which none of 'uc_is_alnum', 'uc_is_graph', or 'uc_is_punct' ++ is true. */ ++extern bool ++ uc_is_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to an uppercase letter or is one ++ of a locale-specific set of character for which none of 'uc_is_cntrl', ++ 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true. */ ++extern bool ++ uc_is_upper (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a hexadecimal-digit ++ character. */ ++extern bool ++ uc_is_xdigit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* GNU extension. */ ++/* Test for any character that corresponds to a standard blank character or ++ a locale-specific set of characters for which 'uc_is_alnum' is false. */ ++extern bool ++ uc_is_blank (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNICTYPE_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unilbrk.h gettext-0.19/gettext-tools/gnulib-lib/msvc/unilbrk.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unilbrk.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/unilbrk.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,111 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Line breaking of Unicode strings. ++ Copyright (C) 2001-2003, 2005-2016 Free Software Foundation, Inc. ++ Written by Bruno Haible , 2001. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNILBRK_H ++#define _UNILBRK_H ++ ++/* Get size_t. */ ++#include ++ ++#include "unitypes.h" ++ ++/* Get locale_charset() declaration. */ ++#include "localcharset.h" ++ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* These functions are locale dependent. The encoding argument identifies ++ the encoding (e.g. "ISO-8859-2" for Polish). */ ++ ++ ++/* Line breaking. */ ++ ++enum ++{ ++ UC_BREAK_UNDEFINED, ++ UC_BREAK_PROHIBITED, ++ UC_BREAK_POSSIBLE, ++ UC_BREAK_MANDATORY, ++ UC_BREAK_HYPHENATION ++}; ++ ++/* Determine the line break points in S, and store the result at p[0..n-1]. ++ p[i] = UC_BREAK_MANDATORY means that s[i] is a line break character. ++ p[i] = UC_BREAK_POSSIBLE means that a line break may be inserted between ++ s[i-1] and s[i]. ++ p[i] = UC_BREAK_HYPHENATION means that a hyphen and a line break may be ++ inserted between s[i-1] and s[i]. But beware of language dependent ++ hyphenation rules. ++ p[i] = UC_BREAK_PROHIBITED means that s[i-1] and s[i] must not be separated. ++ */ ++extern void ++ u8_possible_linebreaks (const uint8_t *s, size_t n, ++ const char *encoding, char *p); ++extern void ++ u16_possible_linebreaks (const uint16_t *s, size_t n, ++ const char *encoding, char *p); ++extern void ++ u32_possible_linebreaks (const uint32_t *s, size_t n, ++ const char *encoding, char *p); ++extern void ++ ulc_possible_linebreaks (const char *s, size_t n, ++ const char *encoding, char *p); ++ ++/* Choose the best line breaks, assuming the uc_width function. ++ The string is s[0..n-1]. The maximum number of columns per line is given ++ as WIDTH. The starting column of the string is given as START_COLUMN. ++ If the algorithm shall keep room after the last piece, they can be given ++ as AT_END_COLUMNS. ++ o is an optional override; if o[i] != UC_BREAK_UNDEFINED, o[i] takes ++ precedence over p[i] as returned by the *_possible_linebreaks function. ++ The given ENCODING is used for disambiguating widths in uc_width. ++ Return the column after the end of the string, and store the result at ++ p[0..n-1]. ++ */ ++extern int ++ u8_width_linebreaks (const uint8_t *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++extern int ++ u16_width_linebreaks (const uint16_t *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++extern int ++ u32_width_linebreaks (const uint32_t *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++extern int ++ ulc_width_linebreaks (const char *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++ ++#endif /* _UNILBRK_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/uniname.h gettext-0.19/gettext-tools/gnulib-lib/msvc/uniname.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/uniname.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/uniname.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,47 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Association between Unicode characters and their names. ++ Copyright (C) 2000-2002, 2005, 2007, 2009-2016 Free Software Foundation, ++ Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNINAME_H ++#define _UNINAME_H ++ ++#include "unitypes.h" ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* Required size of buffer for a Unicode character name. */ ++#define UNINAME_MAX 256 ++ ++/* Looks up the name of a Unicode character, in uppercase ASCII. ++ Returns the filled buf, or NULL if the character does not have a name. */ ++extern char * ++ unicode_character_name (ucs4_t uc, char *buf); ++ ++/* Looks up the Unicode character with a given name, in upper- or lowercase ++ ASCII. Returns the character if found, or UNINAME_INVALID if not found. */ ++extern ucs4_t ++ unicode_name_character (const char *name) ++ _UC_ATTRIBUTE_PURE; ++#define UNINAME_INVALID ((ucs4_t) 0xFFFF) ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNINAME_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unistd.h gettext-0.19/gettext-tools/gnulib-lib/msvc/unistd.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unistd.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/unistd.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1902 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Substitute for and wrapper around . ++ Copyright (C) 2003-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_UNISTD_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifdef _GL_INCLUDING_UNISTD_H ++/* Special invocation convention: ++ - On Mac OS X 10.3.9 we have a sequence of nested includes ++ -> -> -> ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. */ ++ ++#include ++ ++#else ++/* Normal invocation convention. */ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# define _GL_INCLUDING_UNISTD_H ++# include ++# undef _GL_INCLUDING_UNISTD_H ++#endif ++ ++/* Get all possible declarations of gethostname(). */ ++#if 0 && 1 \ ++ && !defined _GL_INCLUDING_WINSOCK2_H ++# define _GL_INCLUDING_WINSOCK2_H ++# include ++# undef _GL_INCLUDING_WINSOCK2_H ++#endif ++ ++#if !defined _GL_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H ++#define _GL_UNISTD_H ++ ++/* NetBSD 5.0 mis-defines NULL. Also get size_t. */ ++#include ++ ++/* mingw doesn't define the SEEK_* or *_FILENO macros in . */ ++/* Cygwin 1.7.1 declares symlinkat in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ ++ || ((0 || defined GNULIB_POSIXCHECK) \ ++ && defined __CYGWIN__)) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* Cygwin 1.7.1 declares unlinkat in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* mingw fails to declare _exit in . */ ++/* mingw, MSVC, BeOS, Haiku declare environ in , not in ++ . */ ++/* Solaris declares getcwd not only in but also in . */ ++/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is ++ included here. */ ++/* But avoid namespace pollution on glibc systems. */ ++#if !defined __GLIBC__ && !defined __osf__ ++# define __need_system_stdlib_h ++# include ++# undef __need_system_stdlib_h ++#endif ++ ++/* Native Windows platforms declare chdir, getcwd, rmdir in ++ and/or , not in . ++ They also declare access(), chmod(), close(), dup(), dup2(), isatty(), ++ lseek(), read(), unlink(), write() in . */ ++#if ((0 || IN_GETTEXT_TOOLS_GNULIB_TESTS || 1 \ ++ || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) ++# include /* mingw32, mingw64 */ ++# include /* mingw64, MSVC 9 */ ++#elif (1 || IN_GETTEXT_TOOLS_GNULIB_TESTS || 1 || 0 \ ++ || IN_GETTEXT_TOOLS_GNULIB_TESTS || 1 || 0 || 1 \ ++ || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++/* AIX and OSF/1 5.1 declare getdomainname in , not in . ++ NonStop Kernel declares gethostname in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if ((0 && (defined _AIX || defined __osf__)) \ ++ || (0 && defined __TANDEM)) \ ++ && !defined __GLIBC__ ++# include ++#endif ++ ++/* MSVC defines off_t in . ++ May also define off_t to a 64-bit type on native Windows. */ ++#if !0 || 1 ++/* Get off_t. */ ++# include ++#endif ++ ++#if (1 || 1 \ ++ || 1 || 0 \ ++ || 0 || 0 || defined GNULIB_POSIXCHECK) ++/* Get ssize_t. */ ++# include ++#endif ++ ++/* Get getopt(), optarg, optind, opterr, optopt. ++ But avoid namespace pollution on glibc systems. */ ++/* Also, don't include inside libgettextpo, because we use ++ the getopt module only in gettext-tools/gnulib-lib/, not in ++ gettext-tools/libgettextpo/, but there is only a single ++ GNULIB_UNISTD_H_GETOPT variable for both. */ ++#if 01 && !defined GTPO_CONFIG_H && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT ++# define __need_getopt ++# include ++#endif ++ ++#ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++#endif ++_GL_INLINE_HEADER_BEGIN ++#ifndef _GL_UNISTD_INLINE ++# define _GL_UNISTD_INLINE _GL_INLINE ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Hide some function declarations from . */ ++ ++#if 0 && 1 ++# if !defined _GL_SYS_SOCKET_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef socket ++# define socket socket_used_without_including_sys_socket_h ++# undef connect ++# define connect connect_used_without_including_sys_socket_h ++# undef accept ++# define accept accept_used_without_including_sys_socket_h ++# undef bind ++# define bind bind_used_without_including_sys_socket_h ++# undef getpeername ++# define getpeername getpeername_used_without_including_sys_socket_h ++# undef getsockname ++# define getsockname getsockname_used_without_including_sys_socket_h ++# undef getsockopt ++# define getsockopt getsockopt_used_without_including_sys_socket_h ++# undef listen ++# define listen listen_used_without_including_sys_socket_h ++# undef recv ++# define recv recv_used_without_including_sys_socket_h ++# undef send ++# define send send_used_without_including_sys_socket_h ++# undef recvfrom ++# define recvfrom recvfrom_used_without_including_sys_socket_h ++# undef sendto ++# define sendto sendto_used_without_including_sys_socket_h ++# undef setsockopt ++# define setsockopt setsockopt_used_without_including_sys_socket_h ++# undef shutdown ++# define shutdown shutdown_used_without_including_sys_socket_h ++# else ++ _GL_WARN_ON_USE (socket, ++ "socket() used without including "); ++ _GL_WARN_ON_USE (connect, ++ "connect() used without including "); ++ _GL_WARN_ON_USE (accept, ++ "accept() used without including "); ++ _GL_WARN_ON_USE (bind, ++ "bind() used without including "); ++ _GL_WARN_ON_USE (getpeername, ++ "getpeername() used without including "); ++ _GL_WARN_ON_USE (getsockname, ++ "getsockname() used without including "); ++ _GL_WARN_ON_USE (getsockopt, ++ "getsockopt() used without including "); ++ _GL_WARN_ON_USE (listen, ++ "listen() used without including "); ++ _GL_WARN_ON_USE (recv, ++ "recv() used without including "); ++ _GL_WARN_ON_USE (send, ++ "send() used without including "); ++ _GL_WARN_ON_USE (recvfrom, ++ "recvfrom() used without including "); ++ _GL_WARN_ON_USE (sendto, ++ "sendto() used without including "); ++ _GL_WARN_ON_USE (setsockopt, ++ "setsockopt() used without including "); ++ _GL_WARN_ON_USE (shutdown, ++ "shutdown() used without including "); ++# endif ++# endif ++# if !defined _GL_SYS_SELECT_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef select ++# define select select_used_without_including_sys_select_h ++# else ++ _GL_WARN_ON_USE (select, ++ "select() used without including "); ++# endif ++# endif ++#endif ++ ++ ++/* OS/2 EMX lacks these macros. */ ++#ifndef STDIN_FILENO ++# define STDIN_FILENO 0 ++#endif ++#ifndef STDOUT_FILENO ++# define STDOUT_FILENO 1 ++#endif ++#ifndef STDERR_FILENO ++# define STDERR_FILENO 2 ++#endif ++ ++/* Ensure *_OK macros exist. */ ++#ifndef F_OK ++# define F_OK 0 ++# define X_OK 1 ++# define W_OK 2 ++# define R_OK 4 ++#endif ++ ++ ++/* Declare overridden functions. */ ++ ++ ++#if defined GNULIB_POSIXCHECK ++/* The access() function is a security risk. */ ++_GL_WARN_ON_USE (access, "the access function is a security risk - " ++ "use the gnulib module faccessat instead"); ++#endif ++ ++ ++#if 0 ++_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIASWARN (chdir); ++#elif defined GNULIB_POSIXCHECK ++# undef chdir ++# if HAVE_RAW_DECL_CHDIR ++_GL_WARN_ON_USE (chown, "chdir is not always in - " ++ "use gnulib module chdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE ++ to GID (if GID is not -1). Follow symbolic links. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dup2 rpl_dup2 ++# endif ++_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); ++_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); ++# endif ++_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); ++# endif ++_GL_CXXALIASWARN (dup2); ++#elif defined GNULIB_POSIXCHECK ++# undef dup2 ++# if HAVE_RAW_DECL_DUP2 ++_GL_WARN_ON_USE (dup2, "dup2 is unportable - " ++ "use gnulib module dup2 for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the ++ specified flags. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ Close NEWFD first if it is open. ++ Return newfd if successful, otherwise -1 and errno set. ++ See the Linux man page at ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dup3 rpl_dup3 ++# endif ++_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); ++_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); ++# else ++_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); ++_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); ++# endif ++_GL_CXXALIASWARN (dup3); ++#elif defined GNULIB_POSIXCHECK ++# undef dup3 ++# if HAVE_RAW_DECL_DUP3 ++_GL_WARN_ON_USE (dup3, "dup3 is unportable - " ++ "use gnulib module dup3 for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if !1 ++/* Set of environment variables and values. An array of strings of the form ++ "VARIABLE=VALUE", terminated with a NULL. */ ++# if defined __APPLE__ && defined __MACH__ ++# include ++# if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR ++# define _GL_USE_CRT_EXTERNS ++# endif ++# endif ++# ifdef _GL_USE_CRT_EXTERNS ++# include ++# define environ (*_NSGetEnviron ()) ++# else ++# ifdef __cplusplus ++extern "C" { ++# endif ++extern char **environ; ++# ifdef __cplusplus ++} ++# endif ++# endif ++# endif ++#elif defined GNULIB_POSIXCHECK ++# if HAVE_RAW_DECL_ENVIRON ++_GL_UNISTD_INLINE char *** ++rpl_environ (void) ++{ ++ return &environ; ++} ++_GL_WARN_ON_USE (rpl_environ, "environ is unportable - " ++ "use gnulib module environ for portability"); ++# undef environ ++# define environ (*rpl_environ ()) ++# endif ++#endif ++ ++ ++#if 0 ++/* Like access(), except that it uses the effective user id and group id of ++ the current process. */ ++# if !1 ++_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); ++_GL_CXXALIASWARN (euidaccess); ++# if defined GNULIB_POSIXCHECK ++/* Like access(), this function is a security risk. */ ++_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " ++ "use the gnulib module faccessat instead"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef euidaccess ++# if HAVE_RAW_DECL_EUIDACCESS ++_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " ++ "use gnulib module euidaccess for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (faccessat, int, ++ (int fd, char const *file, int mode, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (faccessat, int, ++ (int fd, char const *file, int mode, int flag)); ++_GL_CXXALIASWARN (faccessat); ++#elif defined GNULIB_POSIXCHECK ++# undef faccessat ++# if HAVE_RAW_DECL_FACCESSAT ++_GL_WARN_ON_USE (faccessat, "faccessat is not portable - " ++ "use gnulib module faccessat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the process' current working directory to the directory on which ++ the given file descriptor is open. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if ! 1 ++_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); ++ ++/* Gnulib internal hooks needed to maintain the fchdir metadata. */ ++_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) ++ _GL_ARG_NONNULL ((2)); ++_GL_EXTERN_C void _gl_unregister_fd (int fd); ++_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); ++_GL_EXTERN_C const char *_gl_directory_name (int fd); ++ ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); ++# endif ++# endif ++_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); ++_GL_CXXALIASWARN (fchdir); ++#elif defined GNULIB_POSIXCHECK ++# undef fchdir ++# if HAVE_RAW_DECL_FCHDIR ++_GL_WARN_ON_USE (fchdir, "fchdir is unportable - " ++ "use gnulib module fchdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fchownat ++# define fchownat rpl_fchownat ++# endif ++_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag)); ++# endif ++_GL_CXXALIASWARN (fchownat); ++#elif defined GNULIB_POSIXCHECK ++# undef fchownat ++# if HAVE_RAW_DECL_FCHOWNAT ++_GL_WARN_ON_USE (fchownat, "fchownat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Synchronize changes to a file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if !1 || !1 ++_GL_FUNCDECL_SYS (fdatasync, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (fdatasync, int, (int fd)); ++_GL_CXXALIASWARN (fdatasync); ++#elif defined GNULIB_POSIXCHECK ++# undef fdatasync ++# if HAVE_RAW_DECL_FDATASYNC ++_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " ++ "use gnulib module fdatasync for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Synchronize changes, including metadata, to a file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if !1 ++_GL_FUNCDECL_SYS (fsync, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (fsync, int, (int fd)); ++_GL_CXXALIASWARN (fsync); ++#elif defined GNULIB_POSIXCHECK ++# undef fsync ++# if HAVE_RAW_DECL_FSYNC ++_GL_WARN_ON_USE (fsync, "fsync is unportable - " ++ "use gnulib module fsync for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the size of the file to which FD is opened to become equal to LENGTH. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftruncate ++# define ftruncate rpl_ftruncate ++# endif ++_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); ++_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); ++# endif ++_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); ++# endif ++_GL_CXXALIASWARN (ftruncate); ++#elif defined GNULIB_POSIXCHECK ++# undef ftruncate ++# if HAVE_RAW_DECL_FTRUNCATE ++_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " ++ "use gnulib module ftruncate for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++/* Get the name of the current working directory, and put it in SIZE bytes ++ of BUF. ++ Return BUF if successful, or NULL if the directory couldn't be determined ++ or SIZE was too small. ++ See the POSIX:2008 specification ++ . ++ Additionally, the gnulib module 'getcwd' guarantees the following GNU ++ extension: If BUF is NULL, an array is allocated with 'malloc'; the array ++ is SIZE bytes long, unless SIZE == 0, in which case it is as big as ++ necessary. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getcwd rpl_getcwd ++# endif ++_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); ++_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); ++# else ++/* Need to cast, because on mingw, the second parameter is ++ int size. */ ++_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); ++# endif ++_GL_CXXALIASWARN (getcwd); ++#elif defined GNULIB_POSIXCHECK ++# undef getcwd ++# if HAVE_RAW_DECL_GETCWD ++_GL_WARN_ON_USE (getcwd, "getcwd is unportable - " ++ "use gnulib module getcwd for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the NIS domain name of the machine. ++ WARNING! The NIS domain name is unrelated to the fully qualified host name ++ of the machine. It is also unrelated to email addresses. ++ WARNING! The NIS domain name is usually the empty string or "(none)" when ++ not using NIS. ++ ++ Put up to LEN bytes of the NIS domain name into NAME. ++ Null terminate it if the name is shorter than LEN. ++ If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. ++ Return 0 if successful, otherwise set errno and return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdomainname ++# define getdomainname rpl_getdomainname ++# endif ++_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); ++# endif ++_GL_CXXALIASWARN (getdomainname); ++#elif defined GNULIB_POSIXCHECK ++# undef getdomainname ++# if HAVE_RAW_DECL_GETDOMAINNAME ++_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " ++ "use gnulib module getdomainname for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Return the maximum number of file descriptors in the current process. ++ In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdtablesize ++# define getdtablesize rpl_getdtablesize ++# endif ++_GL_FUNCDECL_RPL (getdtablesize, int, (void)); ++_GL_CXXALIAS_RPL (getdtablesize, int, (void)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (getdtablesize, int, (void)); ++# endif ++_GL_CXXALIAS_SYS (getdtablesize, int, (void)); ++# endif ++_GL_CXXALIASWARN (getdtablesize); ++#elif defined GNULIB_POSIXCHECK ++# undef getdtablesize ++# if HAVE_RAW_DECL_GETDTABLESIZE ++_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " ++ "use gnulib module getdtablesize for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the supplemental groups that the current process belongs to. ++ It is unspecified whether the effective group id is in the list. ++ If N is 0, return the group count; otherwise, N describes how many ++ entries are available in GROUPS. Return -1 and set errno if N is ++ not 0 and not large enough. Fails with ENOSYS on some systems. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getgroups ++# define getgroups rpl_getgroups ++# endif ++_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); ++_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); ++# endif ++_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); ++# endif ++_GL_CXXALIASWARN (getgroups); ++#elif defined GNULIB_POSIXCHECK ++# undef getgroups ++# if HAVE_RAW_DECL_GETGROUPS ++_GL_WARN_ON_USE (getgroups, "getgroups is unportable - " ++ "use gnulib module getgroups for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the standard host name of the machine. ++ WARNING! The host name may or may not be fully qualified. ++ ++ Put up to LEN bytes of the host name into NAME. ++ Null terminate it if the name is shorter than LEN. ++ If the host name is longer than LEN, set errno = EINVAL and return -1. ++ Return 0 if successful, otherwise set errno and return -1. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gethostname ++# define gethostname rpl_gethostname ++# endif ++_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second ++ parameter is ++ int len. */ ++_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); ++# endif ++_GL_CXXALIASWARN (gethostname); ++#elif 1 ++# undef gethostname ++# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname ++#elif defined GNULIB_POSIXCHECK ++# undef gethostname ++# if HAVE_RAW_DECL_GETHOSTNAME ++_GL_WARN_ON_USE (gethostname, "gethostname is unportable - " ++ "use gnulib module gethostname for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Returns the user's login name, or NULL if it cannot be found. Upon error, ++ returns NULL with errno set. ++ ++ See . ++ ++ Most programs don't need to use this function, because the information is ++ available through environment variables: ++ ${LOGNAME-$USER} on Unix platforms, ++ $USERNAME on native Windows platforms. ++ */ ++# if !1 ++_GL_FUNCDECL_SYS (getlogin, char *, (void)); ++# endif ++_GL_CXXALIAS_SYS (getlogin, char *, (void)); ++_GL_CXXALIASWARN (getlogin); ++#elif defined GNULIB_POSIXCHECK ++# undef getlogin ++# if HAVE_RAW_DECL_GETLOGIN ++_GL_WARN_ON_USE (getlogin, "getlogin is unportable - " ++ "use gnulib module getlogin for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Copies the user's login name to NAME. ++ The array pointed to by NAME has room for SIZE bytes. ++ ++ Returns 0 if successful. Upon error, an error number is returned, or -1 in ++ the case that the login name cannot be found but no specific error is ++ provided (this case is hopefully rare but is left open by the POSIX spec). ++ ++ See . ++ ++ Most programs don't need to use this function, because the information is ++ available through environment variables: ++ ${LOGNAME-$USER} on Unix platforms, ++ $USERNAME on native Windows platforms. ++ */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getlogin_r rpl_getlogin_r ++# endif ++_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 10 systems, the second argument is ++ int size. */ ++_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); ++# endif ++_GL_CXXALIASWARN (getlogin_r); ++#elif defined GNULIB_POSIXCHECK ++# undef getlogin_r ++# if HAVE_RAW_DECL_GETLOGIN_R ++_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " ++ "use gnulib module getlogin_r for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getpagesize rpl_getpagesize ++# endif ++_GL_FUNCDECL_RPL (getpagesize, int, (void)); ++_GL_CXXALIAS_RPL (getpagesize, int, (void)); ++# else ++# if !0 ++# if !defined getpagesize ++/* This is for POSIX systems. */ ++# if !defined _gl_getpagesize && defined _SC_PAGESIZE ++# if ! (defined __VMS && __VMS_VER < 70000000) ++# define _gl_getpagesize() sysconf (_SC_PAGESIZE) ++# endif ++# endif ++/* This is for older VMS. */ ++# if !defined _gl_getpagesize && defined __VMS ++# ifdef __ALPHA ++# define _gl_getpagesize() 8192 ++# else ++# define _gl_getpagesize() 512 ++# endif ++# endif ++/* This is for BeOS. */ ++# if !defined _gl_getpagesize && 0 ++# include ++# if defined B_PAGE_SIZE ++# define _gl_getpagesize() B_PAGE_SIZE ++# endif ++# endif ++/* This is for AmigaOS4.0. */ ++# if !defined _gl_getpagesize && defined __amigaos4__ ++# define _gl_getpagesize() 2048 ++# endif ++/* This is for older Unix systems. */ ++# if !defined _gl_getpagesize && 0 ++# include ++# ifdef EXEC_PAGESIZE ++# define _gl_getpagesize() EXEC_PAGESIZE ++# else ++# ifdef NBPG ++# ifndef CLSIZE ++# define CLSIZE 1 ++# endif ++# define _gl_getpagesize() (NBPG * CLSIZE) ++# else ++# ifdef NBPC ++# define _gl_getpagesize() NBPC ++# endif ++# endif ++# endif ++# endif ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getpagesize() _gl_getpagesize () ++# else ++# if !GNULIB_defined_getpagesize_function ++_GL_UNISTD_INLINE int ++getpagesize () ++{ ++ return _gl_getpagesize (); ++} ++# define GNULIB_defined_getpagesize_function 1 ++# endif ++# endif ++# endif ++# endif ++/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ ++_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); ++# endif ++# if 0 ++_GL_CXXALIASWARN (getpagesize); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef getpagesize ++# if HAVE_RAW_DECL_GETPAGESIZE ++_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " ++ "use gnulib module getpagesize for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the next valid login shell on the system, or NULL when the end of ++ the list has been reached. */ ++# if !1 ++_GL_FUNCDECL_SYS (getusershell, char *, (void)); ++# endif ++_GL_CXXALIAS_SYS (getusershell, char *, (void)); ++_GL_CXXALIASWARN (getusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef getusershell ++# if HAVE_RAW_DECL_GETUSERSHELL ++_GL_WARN_ON_USE (getusershell, "getusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Rewind to pointer that is advanced at each getusershell() call. */ ++# if !1 ++_GL_FUNCDECL_SYS (setusershell, void, (void)); ++# endif ++_GL_CXXALIAS_SYS (setusershell, void, (void)); ++_GL_CXXALIASWARN (setusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef setusershell ++# if HAVE_RAW_DECL_SETUSERSHELL ++_GL_WARN_ON_USE (setusershell, "setusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Free the pointer that is advanced at each getusershell() call and ++ associated resources. */ ++# if !1 ++_GL_FUNCDECL_SYS (endusershell, void, (void)); ++# endif ++_GL_CXXALIAS_SYS (endusershell, void, (void)); ++_GL_CXXALIASWARN (endusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef endusershell ++# if HAVE_RAW_DECL_ENDUSERSHELL ++_GL_WARN_ON_USE (endusershell, "endusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Determine whether group id is in calling user's group list. */ ++# if !1 ++_GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); ++# endif ++_GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); ++_GL_CXXALIASWARN (group_member); ++#elif defined GNULIB_POSIXCHECK ++# undef group_member ++# if HAVE_RAW_DECL_GROUP_MEMBER ++_GL_WARN_ON_USE (group_member, "group_member is unportable - " ++ "use gnulib module group-member for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef isatty ++# define isatty rpl_isatty ++# endif ++_GL_FUNCDECL_RPL (isatty, int, (int fd)); ++_GL_CXXALIAS_RPL (isatty, int, (int fd)); ++# else ++_GL_CXXALIAS_SYS (isatty, int, (int fd)); ++# endif ++_GL_CXXALIASWARN (isatty); ++#elif defined GNULIB_POSIXCHECK ++# undef isatty ++# if HAVE_RAW_DECL_ISATTY ++_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " ++ "use gnulib module isatty for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE ++ to GID (if GID is not -1). Do not follow symbolic links. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef lchown ++# define lchown rpl_lchown ++# endif ++_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); ++# endif ++_GL_CXXALIASWARN (lchown); ++#elif defined GNULIB_POSIXCHECK ++# undef lchown ++# if HAVE_RAW_DECL_LCHOWN ++_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " ++ "use gnulib module lchown for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a new hard link for an existing file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define link rpl_link ++# endif ++_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); ++# endif ++_GL_CXXALIASWARN (link); ++#elif defined GNULIB_POSIXCHECK ++# undef link ++# if HAVE_RAW_DECL_LINK ++_GL_WARN_ON_USE (link, "link is unportable - " ++ "use gnulib module link for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a new hard link for an existing file, relative to two ++ directories. FLAG controls whether symlinks are followed. ++ Return 0 if successful, otherwise -1 and errno set. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef linkat ++# define linkat rpl_linkat ++# endif ++_GL_FUNCDECL_RPL (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag)); ++# endif ++_GL_CXXALIASWARN (linkat); ++#elif defined GNULIB_POSIXCHECK ++# undef linkat ++# if HAVE_RAW_DECL_LINKAT ++_GL_WARN_ON_USE (linkat, "linkat is unportable - " ++ "use gnulib module linkat for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. ++ Return the new offset if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lseek rpl_lseek ++# endif ++_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); ++_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); ++# else ++_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); ++# endif ++_GL_CXXALIASWARN (lseek); ++#elif defined GNULIB_POSIXCHECK ++# undef lseek ++# if HAVE_RAW_DECL_LSEEK ++_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " ++ "systems - use gnulib module lseek for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a pipe, defaulting to O_BINARY mode. ++ Store the read-end as fd[0] and the write-end as fd[1]. ++ Return 0 upon success, or -1 with errno set upon failure. */ ++# if !1 ++_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (pipe, int, (int fd[2])); ++_GL_CXXALIASWARN (pipe); ++#elif defined GNULIB_POSIXCHECK ++# undef pipe ++# if HAVE_RAW_DECL_PIPE ++_GL_WARN_ON_USE (pipe, "pipe is unportable - " ++ "use gnulib module pipe-posix for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Create a pipe, applying the given flags when opening the read-end of the ++ pipe and the write-end of the pipe. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ Store the read-end as fd[0] and the write-end as fd[1]. ++ Return 0 upon success, or -1 with errno set upon failure. ++ See also the Linux man page at ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define pipe2 rpl_pipe2 ++# endif ++_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); ++# else ++_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); ++# endif ++_GL_CXXALIASWARN (pipe2); ++#elif defined GNULIB_POSIXCHECK ++# undef pipe2 ++# if HAVE_RAW_DECL_PIPE2 ++_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " ++ "use gnulib module pipe2 for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. ++ Return the number of bytes placed into BUF if successful, otherwise ++ set errno and return -1. 0 indicates EOF. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pread ++# define pread rpl_pread ++# endif ++_GL_FUNCDECL_RPL (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset)); ++# endif ++_GL_CXXALIASWARN (pread); ++#elif defined GNULIB_POSIXCHECK ++# undef pread ++# if HAVE_RAW_DECL_PREAD ++_GL_WARN_ON_USE (pread, "pread is unportable - " ++ "use gnulib module pread for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. ++ Return the number of bytes written if successful, otherwise ++ set errno and return -1. 0 indicates nothing written. See the ++ POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pwrite ++# define pwrite rpl_pwrite ++# endif ++_GL_FUNCDECL_RPL (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset)); ++# endif ++_GL_CXXALIASWARN (pwrite); ++#elif defined GNULIB_POSIXCHECK ++# undef pwrite ++# if HAVE_RAW_DECL_PWRITE ++_GL_WARN_ON_USE (pwrite, "pwrite is unportable - " ++ "use gnulib module pwrite for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Read up to COUNT bytes from file descriptor FD into the buffer starting ++ at BUF. See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef read ++# define read rpl_read ++# endif ++_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); ++# else ++/* Need to cast, because on mingw, the third parameter is ++ unsigned int count ++ and the return type is 'int'. */ ++_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); ++# endif ++_GL_CXXALIASWARN (read); ++#endif ++ ++ ++#if 1 ++/* Read the contents of the symbolic link FILE and place the first BUFSIZE ++ bytes of it into BUF. Return the number of bytes placed into BUF if ++ successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define readlink rpl_readlink ++# endif ++_GL_FUNCDECL_RPL (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize)); ++# endif ++_GL_CXXALIASWARN (readlink); ++#elif defined GNULIB_POSIXCHECK ++# undef readlink ++# if HAVE_RAW_DECL_READLINK ++_GL_WARN_ON_USE (readlink, "readlink is unportable - " ++ "use gnulib module readlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define readlinkat rpl_readlinkat ++# endif ++_GL_FUNCDECL_RPL (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len)); ++# endif ++_GL_CXXALIASWARN (readlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef readlinkat ++# if HAVE_RAW_DECL_READLINKAT ++_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " ++ "use gnulib module readlinkat for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Remove the directory DIR. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define rmdir rpl_rmdir ++# endif ++_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (rmdir, int, (char const *name)); ++# else ++_GL_CXXALIAS_SYS (rmdir, int, (char const *name)); ++# endif ++_GL_CXXALIASWARN (rmdir); ++#elif defined GNULIB_POSIXCHECK ++# undef rmdir ++# if HAVE_RAW_DECL_RMDIR ++_GL_WARN_ON_USE (rmdir, "rmdir is unportable - " ++ "use gnulib module rmdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Set the host name of the machine. ++ The host name may or may not be fully qualified. ++ ++ Put LEN bytes of NAME into the host name. ++ Return 0 if successful, otherwise, set errno and return -1. ++ ++ Platforms with no ability to set the hostname return -1 and set ++ errno = ENOSYS. */ ++# if !1 || !1 ++_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 ++ and FreeBSD 6.4 the second parameter is int. On Solaris 11 ++ 2011-10, the first parameter is not const. */ ++_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); ++_GL_CXXALIASWARN (sethostname); ++#elif defined GNULIB_POSIXCHECK ++# undef sethostname ++# if HAVE_RAW_DECL_SETHOSTNAME ++_GL_WARN_ON_USE (sethostname, "sethostname is unportable - " ++ "use gnulib module sethostname for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++/* Pause the execution of the current thread for N seconds. ++ Returns the number of seconds left to sleep. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef sleep ++# define sleep rpl_sleep ++# endif ++_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); ++_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); ++# endif ++_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); ++# endif ++_GL_CXXALIASWARN (sleep); ++#elif defined GNULIB_POSIXCHECK ++# undef sleep ++# if HAVE_RAW_DECL_SLEEP ++_GL_WARN_ON_USE (sleep, "sleep is unportable - " ++ "use gnulib module sleep for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef symlink ++# define symlink rpl_symlink ++# endif ++_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); ++# endif ++_GL_CXXALIASWARN (symlink); ++#elif defined GNULIB_POSIXCHECK ++# undef symlink ++# if HAVE_RAW_DECL_SYMLINK ++_GL_WARN_ON_USE (symlink, "symlink is not portable - " ++ "use gnulib module symlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef symlinkat ++# define symlinkat rpl_symlinkat ++# endif ++_GL_FUNCDECL_RPL (symlinkat, int, ++ (char const *contents, int fd, char const *file) ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (symlinkat, int, ++ (char const *contents, int fd, char const *file)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (symlinkat, int, ++ (char const *contents, int fd, char const *file) ++ _GL_ARG_NONNULL ((1, 3))); ++# endif ++_GL_CXXALIAS_SYS (symlinkat, int, ++ (char const *contents, int fd, char const *file)); ++# endif ++_GL_CXXALIASWARN (symlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef symlinkat ++# if HAVE_RAW_DECL_SYMLINKAT ++_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " ++ "use gnulib module symlinkat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Store at most BUFLEN characters of the pathname of the terminal FD is ++ open on in BUF. Return 0 on success, otherwise an error number. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ttyname_r ++# define ttyname_r rpl_ttyname_r ++# endif ++_GL_FUNCDECL_RPL (ttyname_r, int, ++ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (ttyname_r, int, ++ (int fd, char *buf, size_t buflen)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ttyname_r, int, ++ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (ttyname_r, int, ++ (int fd, char *buf, size_t buflen)); ++# endif ++_GL_CXXALIASWARN (ttyname_r); ++#elif defined GNULIB_POSIXCHECK ++# undef ttyname_r ++# if HAVE_RAW_DECL_TTYNAME_R ++_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " ++ "use gnulib module ttyname_r for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unlink ++# define unlink rpl_unlink ++# endif ++_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (unlink, int, (char const *file)); ++# else ++_GL_CXXALIAS_SYS (unlink, int, (char const *file)); ++# endif ++_GL_CXXALIASWARN (unlink); ++#elif defined GNULIB_POSIXCHECK ++# undef unlink ++# if HAVE_RAW_DECL_UNLINK ++_GL_WARN_ON_USE (unlink, "unlink is not portable - " ++ "use gnulib module unlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unlinkat ++# define unlinkat rpl_unlinkat ++# endif ++_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); ++# endif ++_GL_CXXALIASWARN (unlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef unlinkat ++# if HAVE_RAW_DECL_UNLINKAT ++_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Pause the execution of the current thread for N microseconds. ++ Returns 0 on completion, or -1 on range error. ++ See the POSIX:2001 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef usleep ++# define usleep rpl_usleep ++# endif ++_GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); ++_GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); ++# endif ++_GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); ++# endif ++_GL_CXXALIASWARN (usleep); ++#elif defined GNULIB_POSIXCHECK ++# undef usleep ++# if HAVE_RAW_DECL_USLEEP ++_GL_WARN_ON_USE (usleep, "usleep is unportable - " ++ "use gnulib module usleep for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Write up to COUNT bytes starting at BUF to file descriptor FD. ++ See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef write ++# define write rpl_write ++# endif ++_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); ++# else ++/* Need to cast, because on mingw, the third parameter is ++ unsigned int count ++ and the return type is 'int'. */ ++_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); ++# endif ++_GL_CXXALIASWARN (write); ++#endif ++ ++_GL_INLINE_HEADER_END ++ ++#endif /* _GL_UNISTD_H */ ++#endif /* _GL_INCLUDING_UNISTD_H */ ++#endif /* _GL_UNISTD_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unistr.h gettext-0.19/gettext-tools/gnulib-lib/msvc/unistr.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unistr.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/unistr.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,751 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Elementary Unicode string functions. ++ Copyright (C) 2001-2002, 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNISTR_H ++#define _UNISTR_H ++ ++#include "unitypes.h" ++ ++/* Get common macros for C. */ ++#include "unused-parameter.h" ++ ++/* Get bool. */ ++#include ++ ++/* Get size_t. */ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Conventions: ++ ++ All functions prefixed with u8_ operate on UTF-8 encoded strings. ++ Their unit is an uint8_t (1 byte). ++ ++ All functions prefixed with u16_ operate on UTF-16 encoded strings. ++ Their unit is an uint16_t (a 2-byte word). ++ ++ All functions prefixed with u32_ operate on UCS-4 encoded strings. ++ Their unit is an uint32_t (a 4-byte word). ++ ++ All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly ++ n units. ++ ++ All arguments starting with "str" and the arguments of functions starting ++ with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string ++ which terminates at the first NUL unit. This termination unit is ++ considered part of the string for all memory allocation purposes, but ++ is not considered part of the string for all other logical purposes. ++ ++ Functions returning a string result take a (resultbuf, lengthp) argument ++ pair. If resultbuf is not NULL and the result fits into *lengthp units, ++ it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly ++ allocated string is returned. In both cases, *lengthp is set to the ++ length (number of units) of the returned string. In case of error, ++ NULL is returned and errno is set. */ ++ ++ ++/* Elementary string checks. */ ++ ++/* Check whether an UTF-8 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint8_t * ++ u8_check (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Check whether an UTF-16 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint16_t * ++ u16_check (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Check whether an UCS-4 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint32_t * ++ u32_check (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++ ++/* Elementary string conversions. */ ++ ++/* Convert an UTF-8 string to an UTF-16 string. */ ++extern uint16_t * ++ u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-8 string to an UCS-4 string. */ ++extern uint32_t * ++ u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-16 string to an UTF-8 string. */ ++extern uint8_t * ++ u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-16 string to an UCS-4 string. */ ++extern uint32_t * ++ u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UCS-4 string to an UTF-8 string. */ ++extern uint8_t * ++ u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UCS-4 string to an UTF-16 string. */ ++extern uint16_t * ++ u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf, ++ size_t *lengthp); ++ ++ ++/* Elementary string functions. */ ++ ++/* Return the length (number of units) of the first character in S, which is ++ no longer than N. Return 0 if it is the NUL character. Return -1 upon ++ failure. */ ++/* Similar to mblen(), except that s must not be NULL. */ ++extern int ++ u8_mblen (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_mblen (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_mblen (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, ++ and an appropriate number of units is returned. ++ The number of available units, N, must be > 0. */ ++/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0, ++ and the NUL character is not treated specially. */ ++/* The variants with _safe suffix are safe, even if the library is compiled ++ without --enable-safety. */ ++ ++#if GNULIB_UNISTR_U8_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n); ++# else ++extern int ++ u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n); ++static inline int ++u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u8_mbtouc_unsafe_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n); ++# else ++extern int ++ u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n); ++static inline int ++u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n) ++{ ++ uint16_t c = *s; ++ ++ if (c < 0xd800 || c >= 0xe000) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u16_mbtouc_unsafe_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n); ++# else ++static inline int ++u32_mbtouc_unsafe (ucs4_t *puc, ++ const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) ++{ ++ uint32_t c = *s; ++ ++# if CONFIG_UNICODE_SAFETY ++ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) ++# endif ++ *puc = c; ++# if CONFIG_UNICODE_SAFETY ++ else ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++# endif ++ return 1; ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U8_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n); ++# else ++extern int ++ u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n); ++static inline int ++u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u8_mbtouc_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n); ++# else ++extern int ++ u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n); ++static inline int ++u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n) ++{ ++ uint16_t c = *s; ++ ++ if (c < 0xd800 || c >= 0xe000) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u16_mbtouc_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n); ++# else ++static inline int ++u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) ++{ ++ uint32_t c = *s; ++ ++ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) ++ *puc = c; ++ else ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++} ++# endif ++#endif ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, ++ and -1 is returned for an invalid sequence of units, -2 is returned for an ++ incomplete sequence of units. ++ The number of available units, N, must be > 0. */ ++/* Similar to u*_mbtouc(), except that the return value gives more details ++ about the failure, similar to mbrtowc(). */ ++ ++#if GNULIB_UNISTR_U8_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n); ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n); ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n); ++#endif ++ ++/* Put the multibyte character represented by UC in S, returning its ++ length. Return -1 upon failure, -2 if the number of available units, N, ++ is too small. The latter case cannot occur if N >= 6/2/1, respectively. */ ++/* Similar to wctomb(), except that s must not be NULL, and the argument n ++ must be specified. */ ++ ++#if GNULIB_UNISTR_U8_UCTOMB || HAVE_LIBUNISTRING ++/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */ ++extern int ++ u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n); ++# if !HAVE_INLINE ++extern int ++ u8_uctomb (uint8_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u8_uctomb (uint8_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0x80 && n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ else ++ return u8_uctomb_aux (s, uc, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_UCTOMB || HAVE_LIBUNISTRING ++/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */ ++extern int ++ u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n); ++# if !HAVE_INLINE ++extern int ++ u16_uctomb (uint16_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u16_uctomb (uint16_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0xd800 && n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ else ++ return u16_uctomb_aux (s, uc, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_UCTOMB || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_uctomb (uint32_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u32_uctomb (uint32_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000)) ++ { ++ if (n > 0) ++ { ++ *s = uc; ++ return 1; ++ } ++ else ++ return -2; ++ } ++ else ++ return -1; ++} ++# endif ++#endif ++ ++/* Copy N units from SRC to DEST. */ ++/* Similar to memcpy(). */ ++extern uint8_t * ++ u8_cpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_cpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_cpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Copy N units from SRC to DEST, guaranteeing correct behavior for ++ overlapping memory areas. */ ++/* Similar to memmove(). */ ++extern uint8_t * ++ u8_move (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_move (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_move (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Set the first N characters of S to UC. UC should be a character that ++ occupies only 1 unit. */ ++/* Similar to memset(). */ ++extern uint8_t * ++ u8_set (uint8_t *s, ucs4_t uc, size_t n); ++extern uint16_t * ++ u16_set (uint16_t *s, ucs4_t uc, size_t n); ++extern uint32_t * ++ u32_set (uint32_t *s, ucs4_t uc, size_t n); ++ ++/* Compare S1 and S2, each of length N. */ ++/* Similar to memcmp(). */ ++extern int ++ u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Compare S1 and S2. */ ++/* Similar to the gnulib function memcmp2(). */ ++extern int ++ u8_cmp2 (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_cmp2 (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_cmp2 (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Search the string at S for UC. */ ++/* Similar to memchr(). */ ++extern uint8_t * ++ u8_chr (const uint8_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_chr (const uint16_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_chr (const uint32_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Count the number of Unicode characters in the N units from S. */ ++/* Similar to mbsnlen(). */ ++extern size_t ++ u8_mbsnlen (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_mbsnlen (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_mbsnlen (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Elementary string functions with memory allocation. */ ++ ++/* Make a freshly allocated copy of S, of length N. */ ++extern uint8_t * ++ u8_cpy_alloc (const uint8_t *s, size_t n); ++extern uint16_t * ++ u16_cpy_alloc (const uint16_t *s, size_t n); ++extern uint32_t * ++ u32_cpy_alloc (const uint32_t *s, size_t n); ++ ++/* Elementary string functions on NUL terminated strings. */ ++ ++/* Return the length (number of units) of the first character in S. ++ Return 0 if it is the NUL character. Return -1 upon failure. */ ++extern int ++ u8_strmblen (const uint8_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strmblen (const uint16_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strmblen (const uint32_t *s) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Return 0 if it is the NUL ++ character. Return -1 upon failure. */ ++extern int ++ u8_strmbtouc (ucs4_t *puc, const uint8_t *s); ++extern int ++ u16_strmbtouc (ucs4_t *puc, const uint16_t *s); ++extern int ++ u32_strmbtouc (ucs4_t *puc, const uint32_t *s); ++ ++/* Forward iteration step. Advances the pointer past the next character, ++ or returns NULL if the end of the string has been reached. Puts the ++ character's 'ucs4_t' representation in *PUC. */ ++extern const uint8_t * ++ u8_next (ucs4_t *puc, const uint8_t *s); ++extern const uint16_t * ++ u16_next (ucs4_t *puc, const uint16_t *s); ++extern const uint32_t * ++ u32_next (ucs4_t *puc, const uint32_t *s); ++ ++/* Backward iteration step. Advances the pointer to point to the previous ++ character, or returns NULL if the beginning of the string had been reached. ++ Puts the character's 'ucs4_t' representation in *PUC. */ ++extern const uint8_t * ++ u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start); ++extern const uint16_t * ++ u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start); ++extern const uint32_t * ++ u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start); ++ ++/* Return the number of units in S. */ ++/* Similar to strlen(), wcslen(). */ ++extern size_t ++ u8_strlen (const uint8_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strlen (const uint16_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strlen (const uint32_t *s) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the number of units in S, but at most MAXLEN. */ ++/* Similar to strnlen(), wcsnlen(). */ ++extern size_t ++ u8_strnlen (const uint8_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strnlen (const uint16_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strnlen (const uint32_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Copy SRC to DEST. */ ++/* Similar to strcpy(), wcscpy(). */ ++extern uint8_t * ++ u8_strcpy (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_strcpy (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_strcpy (uint32_t *dest, const uint32_t *src); ++ ++/* Copy SRC to DEST, returning the address of the terminating NUL in DEST. */ ++/* Similar to stpcpy(). */ ++extern uint8_t * ++ u8_stpcpy (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_stpcpy (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_stpcpy (uint32_t *dest, const uint32_t *src); ++ ++/* Copy no more than N units of SRC to DEST. */ ++/* Similar to strncpy(), wcsncpy(). */ ++extern uint8_t * ++ u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Copy no more than N units of SRC to DEST. Return a pointer past the last ++ non-NUL unit written into DEST. */ ++/* Similar to stpncpy(). */ ++extern uint8_t * ++ u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Append SRC onto DEST. */ ++/* Similar to strcat(), wcscat(). */ ++extern uint8_t * ++ u8_strcat (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_strcat (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_strcat (uint32_t *dest, const uint32_t *src); ++ ++/* Append no more than N units of SRC onto DEST. */ ++/* Similar to strncat(), wcsncat(). */ ++extern uint8_t * ++ u8_strncat (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_strncat (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_strncat (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Compare S1 and S2. */ ++/* Similar to strcmp(), wcscmp(). */ ++#ifdef __sun ++/* Avoid a collision with the u8_strcmp() function in Solaris 11 libc. */ ++extern int ++ u8_strcmp_gnu (const uint8_t *s1, const uint8_t *s2) ++ _UC_ATTRIBUTE_PURE; ++# define u8_strcmp u8_strcmp_gnu ++#else ++extern int ++ u8_strcmp (const uint8_t *s1, const uint8_t *s2) ++ _UC_ATTRIBUTE_PURE; ++#endif ++extern int ++ u16_strcmp (const uint16_t *s1, const uint16_t *s2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strcmp (const uint32_t *s1, const uint32_t *s2) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Compare S1 and S2 using the collation rules of the current locale. ++ Return -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2. ++ Upon failure, set errno and return any value. */ ++/* Similar to strcoll(), wcscoll(). */ ++extern int ++ u8_strcoll (const uint8_t *s1, const uint8_t *s2); ++extern int ++ u16_strcoll (const uint16_t *s1, const uint16_t *s2); ++extern int ++ u32_strcoll (const uint32_t *s1, const uint32_t *s2); ++ ++/* Compare no more than N units of S1 and S2. */ ++/* Similar to strncmp(), wcsncmp(). */ ++extern int ++ u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++/* Similar to strdup(), wcsdup(). */ ++extern uint8_t * ++ u8_strdup (const uint8_t *s); ++extern uint16_t * ++ u16_strdup (const uint16_t *s); ++extern uint32_t * ++ u32_strdup (const uint32_t *s); ++ ++/* Find the first occurrence of UC in STR. */ ++/* Similar to strchr(), wcschr(). */ ++extern uint8_t * ++ u8_strchr (const uint8_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strchr (const uint16_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strchr (const uint32_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the last occurrence of UC in STR. */ ++/* Similar to strrchr(), wcsrchr(). */ ++extern uint8_t * ++ u8_strrchr (const uint8_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strrchr (const uint16_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strrchr (const uint32_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length of the initial segment of STR which consists entirely ++ of Unicode characters not in REJECT. */ ++/* Similar to strcspn(), wcscspn(). */ ++extern size_t ++ u8_strcspn (const uint8_t *str, const uint8_t *reject) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strcspn (const uint16_t *str, const uint16_t *reject) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strcspn (const uint32_t *str, const uint32_t *reject) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length of the initial segment of STR which consists entirely ++ of Unicode characters in ACCEPT. */ ++/* Similar to strspn(), wcsspn(). */ ++extern size_t ++ u8_strspn (const uint8_t *str, const uint8_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strspn (const uint16_t *str, const uint16_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strspn (const uint32_t *str, const uint32_t *accept) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the first occurrence in STR of any character in ACCEPT. */ ++/* Similar to strpbrk(), wcspbrk(). */ ++extern uint8_t * ++ u8_strpbrk (const uint8_t *str, const uint8_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strpbrk (const uint16_t *str, const uint16_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strpbrk (const uint32_t *str, const uint32_t *accept) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK. */ ++/* Similar to strstr(), wcsstr(). */ ++extern uint8_t * ++ u8_strstr (const uint8_t *haystack, const uint8_t *needle) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strstr (const uint16_t *haystack, const uint16_t *needle) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strstr (const uint32_t *haystack, const uint32_t *needle) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether STR starts with PREFIX. */ ++extern bool ++ u8_startswith (const uint8_t *str, const uint8_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u16_startswith (const uint16_t *str, const uint16_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u32_startswith (const uint32_t *str, const uint32_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether STR ends with SUFFIX. */ ++extern bool ++ u8_endswith (const uint8_t *str, const uint8_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u16_endswith (const uint16_t *str, const uint16_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u32_endswith (const uint32_t *str, const uint32_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Divide STR into tokens separated by characters in DELIM. ++ This interface is actually more similar to wcstok than to strtok. */ ++/* Similar to strtok_r(), wcstok(). */ ++extern uint8_t * ++ u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr); ++extern uint16_t * ++ u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr); ++extern uint32_t * ++ u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNISTR_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unitypes.h gettext-0.19/gettext-tools/gnulib-lib/msvc/unitypes.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/unitypes.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/unitypes.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,47 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Elementary types and macros for the GNU UniString library. ++ Copyright (C) 2002, 2005-2006, 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNITYPES_H ++#define _UNITYPES_H ++ ++/* Get uint8_t, uint16_t, uint32_t. */ ++#include ++ ++/* Type representing a Unicode character. */ ++typedef uint32_t ucs4_t; ++ ++/* Attribute of a function whose result depends only on the arguments ++ (not pointers!) and which has no side effects. */ ++#ifndef _UC_ATTRIBUTE_CONST ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ++# define _UC_ATTRIBUTE_CONST __attribute__ ((__const__)) ++# else ++# define _UC_ATTRIBUTE_CONST ++# endif ++#endif ++ ++/* Attribute of a function whose result depends only on the arguments ++ (possibly pointers) and global memory, and which has no side effects. */ ++#ifndef _UC_ATTRIBUTE_PURE ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _UC_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++# else ++# define _UC_ATTRIBUTE_PURE ++# endif ++#endif ++ ++#endif /* _UNITYPES_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/uniwidth.h gettext-0.19/gettext-tools/gnulib-lib/msvc/uniwidth.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/uniwidth.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/uniwidth.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,73 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Display width functions. ++ Copyright (C) 2001-2002, 2005, 2007, 2009-2016 Free Software Foundation, ++ Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNIWIDTH_H ++#define _UNIWIDTH_H ++ ++#include "unitypes.h" ++ ++/* Get size_t. */ ++#include ++ ++/* Get locale_charset() declaration. */ ++#include "localcharset.h" ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Display width. */ ++ ++/* These functions are locale dependent. The encoding argument identifies ++ the encoding (e.g. "ISO-8859-2" for Polish). */ ++ ++/* Determine number of column positions required for UC. */ ++extern int ++ uc_width (ucs4_t uc, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Determine number of column positions required for first N units ++ (or fewer if S ends before this) in S. */ ++extern int ++ u8_width (const uint8_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_width (const uint16_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_width (const uint32_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Determine number of column positions required for S. */ ++extern int ++ u8_strwidth (const uint8_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strwidth (const uint16_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strwidth (const uint32_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNIWIDTH_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/wchar.h gettext-0.19/gettext-tools/gnulib-lib/msvc/wchar.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/wchar.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/wchar.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1350 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for ISO C99 , for platforms that have issues. ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake. */ ++ ++/* ++ * ISO C 99 for platforms that have issues. ++ * ++ * ++ * For now, this just ensures proper prerequisite inclusion order and ++ * the declaration of wcwidth(). ++ */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if (((defined __need_mbstate_t || defined __need_wint_t) \ ++ && !defined __MINGW32__ && !defined __KLIBC__) \ ++ || (defined __hpux \ ++ && ((defined _INTTYPES_INCLUDED && !defined strtoimax) \ ++ || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) \ ++ || defined _GL_ALREADY_INCLUDING_WCHAR_H) ++/* Special invocation convention: ++ - Inside glibc and uClibc header files, but not MinGW. ++ - On HP-UX 11.00 we have a sequence of nested includes ++ -> -> , and the latter includes , ++ once indirectly -> -> -> ++ and once directly. In both situations 'wint_t' is not yet defined, ++ therefore we cannot provide the function overrides; instead include only ++ the system's . ++ - On IRIX 6.5, similarly, we have an include -> , and ++ the latter includes . But here, we have no way to detect whether ++ is completely included or is still being included. */ ++ ++#include MSVC_INCLUDE(wchar.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_WCHAR_H ++ ++#define _GL_ALREADY_INCLUDING_WCHAR_H ++ ++#if 0 ++# include /* for __GLIBC__ */ ++#endif ++ ++/* Tru64 with Desktop Toolkit C has a bug: must be included before ++ . ++ BSD/OS 4.0.1 has a bug: , and must be ++ included before . ++ In some builds of uClibc, is nonexistent and wchar_t is defined ++ by . ++ But avoid namespace pollution on glibc systems. */ ++#if !(defined __GLIBC__ && !defined __UCLIBC__) ++# include ++#endif ++#ifndef __GLIBC__ ++# include ++# include ++#endif ++ ++/* Include the original if it exists. ++ Some builds of uClibc lack it. */ ++/* The include_next requires a split double-inclusion guard. */ ++#if 1 ++# include MSVC_INCLUDE(wchar.h) ++#endif ++ ++#undef _GL_ALREADY_INCLUDING_WCHAR_H ++ ++#ifndef _GL_WCHAR_H ++#define _GL_WCHAR_H ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Define wint_t and WEOF. (Also done in wctype.in.h.) */ ++#if !1 && !defined wint_t ++# define wint_t int ++# ifndef WEOF ++# define WEOF -1 ++# endif ++#else ++/* MSVC defines wint_t as 'unsigned short' in . ++ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be ++ "unchanged by default argument promotions". Override it. */ ++# if defined _MSC_VER ++# if !GNULIB_defined_wint_t ++# include ++typedef unsigned int rpl_wint_t; ++# undef wint_t ++# define wint_t rpl_wint_t ++# define GNULIB_defined_wint_t 1 ++# endif ++# endif ++# ifndef WEOF ++# define WEOF ((wint_t) -1) ++# endif ++#endif ++ ++ ++/* Override mbstate_t if it is too small. ++ On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for ++ implementing mbrtowc for encodings like UTF-8. */ ++#if !(0 && 1) || 1 ++# if !GNULIB_defined_mbstate_t ++typedef int rpl_mbstate_t; ++# undef mbstate_t ++# define mbstate_t rpl_mbstate_t ++# define GNULIB_defined_mbstate_t 1 ++# endif ++#endif ++ ++ ++/* Convert a single-byte character to a wide character. */ ++#if (IN_GETTEXT_TOOLS_GNULIB_TESTS || IN_GETTEXT_TOOLS_LIBGREP) ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef btowc ++# define btowc rpl_btowc ++# endif ++_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (btowc, wint_t, (int c)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (btowc, wint_t, (int c)); ++# endif ++_GL_CXXALIASWARN (btowc); ++#elif defined GNULIB_POSIXCHECK ++# undef btowc ++# if HAVE_RAW_DECL_BTOWC ++_GL_WARN_ON_USE (btowc, "btowc is unportable - " ++ "use gnulib module btowc for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide character to a single-byte character. */ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wctob ++# define wctob rpl_wctob ++# endif ++_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wctob, int, (wint_t wc)); ++# else ++# if !defined wctob && !1 ++/* wctob is provided by gnulib, or wctob exists but is not declared. */ ++_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wctob, int, (wint_t wc)); ++# endif ++_GL_CXXALIASWARN (wctob); ++#elif defined GNULIB_POSIXCHECK ++# undef wctob ++# if HAVE_RAW_DECL_WCTOB ++_GL_WARN_ON_USE (wctob, "wctob is unportable - " ++ "use gnulib module wctob for portability"); ++# endif ++#endif ++ ++ ++/* Test whether *PS is in the initial state. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsinit ++# define mbsinit rpl_mbsinit ++# endif ++_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsinit); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsinit ++# if HAVE_RAW_DECL_MBSINIT ++_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - " ++ "use gnulib module mbsinit for portability"); ++# endif ++#endif ++ ++ ++/* Convert a multibyte character to a wide character. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbrtowc ++# define mbrtowc rpl_mbrtowc ++# endif ++_GL_FUNCDECL_RPL (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbrtowc); ++#elif defined GNULIB_POSIXCHECK ++# undef mbrtowc ++# if HAVE_RAW_DECL_MBRTOWC ++_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - " ++ "use gnulib module mbrtowc for portability"); ++# endif ++#endif ++ ++ ++/* Recognize a multibyte character. */ ++#if IN_GETTEXT_TOOLS_LIBGREP ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbrlen ++# define mbrlen rpl_mbrlen ++# endif ++_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbrlen); ++#elif defined GNULIB_POSIXCHECK ++# undef mbrlen ++# if HAVE_RAW_DECL_MBRLEN ++_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - " ++ "use gnulib module mbrlen for portability"); ++# endif ++#endif ++ ++ ++/* Convert a string to a wide string. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsrtowcs ++# define mbsrtowcs rpl_mbsrtowcs ++# endif ++_GL_FUNCDECL_RPL (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsrtowcs); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsrtowcs ++# if HAVE_RAW_DECL_MBSRTOWCS ++_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - " ++ "use gnulib module mbsrtowcs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a string to a wide string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsnrtowcs ++# define mbsnrtowcs rpl_mbsnrtowcs ++# endif ++_GL_FUNCDECL_RPL (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsnrtowcs); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsnrtowcs ++# if HAVE_RAW_DECL_MBSNRTOWCS ++_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - " ++ "use gnulib module mbsnrtowcs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide character to a multibyte character. */ ++#if (IN_GETTEXT_TOOLS_GNULIB_TESTS || IN_GETTEXT_TOOLS_LIBGREP) ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcrtomb ++# define wcrtomb rpl_wcrtomb ++# endif ++_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcrtomb); ++#elif defined GNULIB_POSIXCHECK ++# undef wcrtomb ++# if HAVE_RAW_DECL_WCRTOMB ++_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - " ++ "use gnulib module wcrtomb for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide string to a string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcsrtombs ++# define wcsrtombs rpl_wcsrtombs ++# endif ++_GL_FUNCDECL_RPL (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcsrtombs); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsrtombs ++# if HAVE_RAW_DECL_WCSRTOMBS ++_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - " ++ "use gnulib module wcsrtombs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide string to a string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcsnrtombs ++# define wcsnrtombs rpl_wcsnrtombs ++# endif ++_GL_FUNCDECL_RPL (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcsnrtombs); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsnrtombs ++# if HAVE_RAW_DECL_WCSNRTOMBS ++_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - " ++ "use gnulib module wcsnrtombs for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of screen columns needed for WC. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcwidth ++# define wcwidth rpl_wcwidth ++# endif ++_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); ++# else ++# if !0 ++/* wcwidth exists but is not declared. */ ++_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); ++# elif defined __KLIBC__ ++/* On OS/2 kLIBC, wcwidth is a macro that expands to the name of a ++ static inline function. The implementation of wcwidth in wcwidth.c ++ causes a "conflicting types" error. */ ++# undef wcwidth ++# endif ++_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t)); ++# endif ++_GL_CXXALIASWARN (wcwidth); ++#elif defined GNULIB_POSIXCHECK ++# undef wcwidth ++# if HAVE_RAW_DECL_WCWIDTH ++_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - " ++ "use gnulib module wcwidth for portability"); ++# endif ++#endif ++ ++ ++/* Search N wide characters of S for C. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t); ++ wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wmemchr, ++ wchar_t *, (const wchar_t *, wchar_t, size_t), ++ const wchar_t *, (const wchar_t *, wchar_t, size_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++_GL_CXXALIASWARN1 (wmemchr, const wchar_t *, ++ (const wchar_t *s, wchar_t c, size_t n)); ++# else ++_GL_CXXALIASWARN (wmemchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wmemchr ++# if HAVE_RAW_DECL_WMEMCHR ++_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - " ++ "use gnulib module wmemchr for portability"); ++# endif ++#endif ++ ++ ++/* Compare N wide characters of S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemcmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wmemcmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wmemcmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemcmp ++# if HAVE_RAW_DECL_WMEMCMP ++_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - " ++ "use gnulib module wmemcmp for portability"); ++# endif ++#endif ++ ++ ++/* Copy N wide characters of SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemcpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemcpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wmemcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemcpy ++# if HAVE_RAW_DECL_WMEMCPY ++_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - " ++ "use gnulib module wmemcpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for ++ overlapping memory areas. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemmove, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemmove, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wmemmove); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemmove ++# if HAVE_RAW_DECL_WMEMMOVE ++_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - " ++ "use gnulib module wmemmove for portability"); ++# endif ++#endif ++ ++ ++/* Set N wide characters of S to C. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++_GL_CXXALIASWARN (wmemset); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemset ++# if HAVE_RAW_DECL_WMEMSET ++_GL_WARN_ON_USE (wmemset, "wmemset is unportable - " ++ "use gnulib module wmemset for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of wide characters in S. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s)); ++_GL_CXXALIASWARN (wcslen); ++#elif defined GNULIB_POSIXCHECK ++# undef wcslen ++# if HAVE_RAW_DECL_WCSLEN ++_GL_WARN_ON_USE (wcslen, "wcslen is unportable - " ++ "use gnulib module wcslen for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of wide characters in S, but at most MAXLEN. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)); ++_GL_CXXALIASWARN (wcsnlen); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsnlen ++# if HAVE_RAW_DECL_WCSNLEN ++_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - " ++ "use gnulib module wcsnlen for portability"); ++# endif ++#endif ++ ++ ++/* Copy SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcscpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscpy ++# if HAVE_RAW_DECL_WCSCPY ++_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - " ++ "use gnulib module wcscpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcpcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcpcpy ++# if HAVE_RAW_DECL_WCPCPY ++_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - " ++ "use gnulib module wcpcpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy no more than N wide characters of SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcsncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncpy ++# if HAVE_RAW_DECL_WCSNCPY ++_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - " ++ "use gnulib module wcsncpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy no more than N characters of SRC to DEST, returning the address of ++ the last character written into DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcpncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcpncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcpncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcpncpy ++# if HAVE_RAW_DECL_WCPNCPY ++_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - " ++ "use gnulib module wcpncpy for portability"); ++# endif ++#endif ++ ++ ++/* Append SRC onto DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcscat); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscat ++# if HAVE_RAW_DECL_WCSCAT ++_GL_WARN_ON_USE (wcscat, "wcscat is unportable - " ++ "use gnulib module wcscat for portability"); ++# endif ++#endif ++ ++ ++/* Append no more than N wide characters of SRC onto DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncat, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsncat, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcsncat); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncat ++# if HAVE_RAW_DECL_WCSNCAT ++_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - " ++ "use gnulib module wcsncat for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscmp ++# if HAVE_RAW_DECL_WCSCMP ++_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - " ++ "use gnulib module wcscmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare no more than N wide characters of S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsncmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsncmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncmp ++# if HAVE_RAW_DECL_WCSNCMP ++_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - " ++ "use gnulib module wcsncmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2, ignoring case. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscasecmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscasecmp ++# if HAVE_RAW_DECL_WCSCASECMP ++_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - " ++ "use gnulib module wcscasecmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare no more than N chars of S1 and S2, ignoring case. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncasecmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsncasecmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsncasecmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncasecmp ++# if HAVE_RAW_DECL_WCSNCASECMP ++_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - " ++ "use gnulib module wcsncasecmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE ++ category of the current locale. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); ++# endif ++_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscoll); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscoll ++# if HAVE_RAW_DECL_WCSCOLL ++_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - " ++ "use gnulib module wcscoll for portability"); ++# endif ++#endif ++ ++ ++/* Transform S2 into array pointed to by S1 such that if wcscmp is applied ++ to two transformed strings the result is the as applying 'wcscoll' to the ++ original strings. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsxfrm); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsxfrm ++# if HAVE_RAW_DECL_WCSXFRM ++_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - " ++ "use gnulib module wcsxfrm for portability"); ++# endif ++#endif ++ ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s)); ++# endif ++_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s)); ++_GL_CXXALIASWARN (wcsdup); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsdup ++# if HAVE_RAW_DECL_WCSDUP ++_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - " ++ "use gnulib module wcsdup for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence of WC in WCS. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcschr (const wchar_t *, wchar_t); ++ wchar_t * std::wcschr (wchar_t *, wchar_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcschr, ++ wchar_t *, (const wchar_t *, wchar_t), ++ const wchar_t *, (const wchar_t *, wchar_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc)); ++_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); ++# else ++_GL_CXXALIASWARN (wcschr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcschr ++# if HAVE_RAW_DECL_WCSCHR ++_GL_WARN_ON_USE (wcschr, "wcschr is unportable - " ++ "use gnulib module wcschr for portability"); ++# endif ++#endif ++ ++ ++/* Find the last occurrence of WC in WCS. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcsrchr (const wchar_t *, wchar_t); ++ wchar_t * std::wcsrchr (wchar_t *, wchar_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcsrchr, ++ wchar_t *, (const wchar_t *, wchar_t), ++ const wchar_t *, (const wchar_t *, wchar_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc)); ++_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); ++# else ++_GL_CXXALIASWARN (wcsrchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcsrchr ++# if HAVE_RAW_DECL_WCSRCHR ++_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - " ++ "use gnulib module wcsrchr for portability"); ++# endif ++#endif ++ ++ ++/* Return the length of the initial segmet of WCS which consists entirely ++ of wide characters not in REJECT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)); ++_GL_CXXALIASWARN (wcscspn); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscspn ++# if HAVE_RAW_DECL_WCSCSPN ++_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - " ++ "use gnulib module wcscspn for portability"); ++# endif ++#endif ++ ++ ++/* Return the length of the initial segmet of WCS which consists entirely ++ of wide characters in ACCEPT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)); ++_GL_CXXALIASWARN (wcsspn); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsspn ++# if HAVE_RAW_DECL_WCSSPN ++_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - " ++ "use gnulib module wcsspn for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence in WCS of any character in ACCEPT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcspbrk, wchar_t *, ++ (const wchar_t *wcs, const wchar_t *accept) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *); ++ wchar_t * std::wcspbrk (wchar_t *, const wchar_t *); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcspbrk, ++ wchar_t *, (const wchar_t *, const wchar_t *), ++ const wchar_t *, (const wchar_t *, const wchar_t *)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcspbrk, wchar_t *, ++ (wchar_t *wcs, const wchar_t *accept)); ++_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *, ++ (const wchar_t *wcs, const wchar_t *accept)); ++# else ++_GL_CXXALIASWARN (wcspbrk); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcspbrk ++# if HAVE_RAW_DECL_WCSPBRK ++_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - " ++ "use gnulib module wcspbrk for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsstr, wchar_t *, ++ (const wchar_t *haystack, const wchar_t *needle) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *); ++ wchar_t * std::wcsstr (wchar_t *, const wchar_t *); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcsstr, ++ wchar_t *, (const wchar_t *, const wchar_t *), ++ const wchar_t *, (const wchar_t *, const wchar_t *)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcsstr, wchar_t *, ++ (wchar_t *haystack, const wchar_t *needle)); ++_GL_CXXALIASWARN1 (wcsstr, const wchar_t *, ++ (const wchar_t *haystack, const wchar_t *needle)); ++# else ++_GL_CXXALIASWARN (wcsstr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcsstr ++# if HAVE_RAW_DECL_WCSSTR ++_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - " ++ "use gnulib module wcsstr for portability"); ++# endif ++#endif ++ ++ ++/* Divide WCS into tokens separated by characters in DELIM. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcstok, wchar_t *, ++ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); ++# endif ++_GL_CXXALIAS_SYS (wcstok, wchar_t *, ++ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); ++_GL_CXXALIASWARN (wcstok); ++#elif defined GNULIB_POSIXCHECK ++# undef wcstok ++# if HAVE_RAW_DECL_WCSTOK ++_GL_WARN_ON_USE (wcstok, "wcstok is unportable - " ++ "use gnulib module wcstok for portability"); ++# endif ++#endif ++ ++ ++/* Determine number of column positions required for first N wide ++ characters (or fewer if S ends before this) in S. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcswidth ++# define wcswidth rpl_wcswidth ++# endif ++_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n) ++ _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n)); ++# endif ++_GL_CXXALIASWARN (wcswidth); ++#elif defined GNULIB_POSIXCHECK ++# undef wcswidth ++# if HAVE_RAW_DECL_WCSWIDTH ++_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - " ++ "use gnulib module wcswidth for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_WCHAR_H */ ++#endif /* _GL_WCHAR_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/wctype.h gettext-0.19/gettext-tools/gnulib-lib/msvc/wctype.h +--- gettext-0.19-unpatched/gettext-tools/gnulib-lib/msvc/wctype.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/gnulib-lib/msvc/wctype.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,816 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for ISO C99 , for platforms that lack it. ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Bruno Haible and Paul Eggert. */ ++ ++/* ++ * ISO C 99 for platforms that lack it. ++ * ++ * ++ * iswctype, towctrans, towlower, towupper, wctrans, wctype, ++ * wctrans_t, and wctype_t are not yet implemented. ++ */ ++ ++#ifndef _GL_WCTYPE_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if 1 ++/* Solaris 2.5 has a bug: must be included before . ++ Tru64 with Desktop Toolkit C has a bug: must be included before ++ . ++ BSD/OS 4.0.1 has a bug: , and must be ++ included before . */ ++# include ++# include ++# include ++# include ++#endif ++ ++/* mingw has declarations of towupper and towlower in as ++ well . Include in advance to avoid rpl_ prefix ++ being added to the declarations. */ ++#ifdef __MINGW32__ ++# include ++#endif ++ ++/* Include the original if it exists. ++ BeOS 5 has the functions but no . */ ++/* The include_next requires a split double-inclusion guard. */ ++#if 1 ++# include MSVC_INCLUDE(wctype.h) ++#endif ++ ++#ifndef _GL_WCTYPE_H ++#define _GL_WCTYPE_H ++ ++#ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++#endif ++_GL_INLINE_HEADER_BEGIN ++#ifndef _GL_WCTYPE_INLINE ++# define _GL_WCTYPE_INLINE _GL_INLINE ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Solaris 2.6 includes which includes which ++ #defines a number of identifiers in the application namespace. Revert ++ these #defines. */ ++#ifdef __sun ++# undef multibyte ++# undef eucw1 ++# undef eucw2 ++# undef eucw3 ++# undef scrw1 ++# undef scrw2 ++# undef scrw3 ++#endif ++ ++/* Define wint_t and WEOF. (Also done in wchar.in.h.) */ ++#if !1 && !defined wint_t ++# define wint_t int ++# ifndef WEOF ++# define WEOF -1 ++# endif ++#else ++/* MSVC defines wint_t as 'unsigned short' in . ++ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be ++ "unchanged by default argument promotions". Override it. */ ++# if defined _MSC_VER ++# if !GNULIB_defined_wint_t ++# include ++typedef unsigned int rpl_wint_t; ++# undef wint_t ++# define wint_t rpl_wint_t ++# define GNULIB_defined_wint_t 1 ++# endif ++# endif ++# ifndef WEOF ++# define WEOF ((wint_t) -1) ++# endif ++#endif ++ ++ ++#if !GNULIB_defined_wctype_functions ++ ++/* FreeBSD 4.4 to 4.11 has but lacks the functions. ++ Linux libc5 has and the functions but they are broken. ++ Assume all 11 functions (all isw* except iswblank) are implemented the ++ same way, or not at all. */ ++# if ! 1 || 0 ++ ++/* IRIX 5.3 has macros but no functions, its isw* macros refer to an ++ undefined variable _ctmp_ and to macros like _P, and they ++ refer to system functions like _iswctype that are not in the ++ standard C library. Rather than try to get ancient buggy ++ implementations like this to work, just disable them. */ ++# undef iswalnum ++# undef iswalpha ++# undef iswblank ++# undef iswcntrl ++# undef iswdigit ++# undef iswgraph ++# undef iswlower ++# undef iswprint ++# undef iswpunct ++# undef iswspace ++# undef iswupper ++# undef iswxdigit ++# undef towlower ++# undef towupper ++ ++/* Linux libc5 has and the functions but they are broken. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iswalnum rpl_iswalnum ++# define iswalpha rpl_iswalpha ++# define iswblank rpl_iswblank ++# define iswcntrl rpl_iswcntrl ++# define iswdigit rpl_iswdigit ++# define iswgraph rpl_iswgraph ++# define iswlower rpl_iswlower ++# define iswprint rpl_iswprint ++# define iswpunct rpl_iswpunct ++# define iswspace rpl_iswspace ++# define iswupper rpl_iswupper ++# define iswxdigit rpl_iswxdigit ++# endif ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towlower rpl_towlower ++# define towupper rpl_towupper ++# endif ++# endif ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswalnum ++# else ++iswalnum ++# endif ++ (wint_t wc) ++{ ++ return ((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswalpha ++# else ++iswalpha ++# endif ++ (wint_t wc) ++{ ++ return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswblank ++# else ++iswblank ++# endif ++ (wint_t wc) ++{ ++ return wc == ' ' || wc == '\t'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswcntrl ++# else ++iswcntrl ++# endif ++ (wint_t wc) ++{ ++ return (wc & ~0x1f) == 0 || wc == 0x7f; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswdigit ++# else ++iswdigit ++# endif ++ (wint_t wc) ++{ ++ return wc >= '0' && wc <= '9'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswgraph ++# else ++iswgraph ++# endif ++ (wint_t wc) ++{ ++ return wc >= '!' && wc <= '~'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswlower ++# else ++iswlower ++# endif ++ (wint_t wc) ++{ ++ return wc >= 'a' && wc <= 'z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswprint ++# else ++iswprint ++# endif ++ (wint_t wc) ++{ ++ return wc >= ' ' && wc <= '~'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswpunct ++# else ++iswpunct ++# endif ++ (wint_t wc) ++{ ++ return (wc >= '!' && wc <= '~' ++ && !((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'))); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswspace ++# else ++iswspace ++# endif ++ (wint_t wc) ++{ ++ return (wc == ' ' || wc == '\t' ++ || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r'); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswupper ++# else ++iswupper ++# endif ++ (wint_t wc) ++{ ++ return wc >= 'A' && wc <= 'Z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswxdigit ++# else ++iswxdigit ++# endif ++ (wint_t wc) ++{ ++ return ((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F')); ++} ++ ++_GL_WCTYPE_INLINE wint_t ++# if 0 ++rpl_towlower ++# else ++towlower ++# endif ++ (wint_t wc) ++{ ++ return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc); ++} ++ ++_GL_WCTYPE_INLINE wint_t ++# if 0 ++rpl_towupper ++# else ++towupper ++# endif ++ (wint_t wc) ++{ ++ return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc); ++} ++ ++# elif (_MSC_VER < 1800) ++/* Only the iswblank function is missing. */ ++ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iswblank rpl_iswblank ++# endif ++_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc)); ++# else ++_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc)); ++# endif ++ ++# endif ++ ++# if defined __MINGW32__ ++ ++/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t. ++ The functions towlower and towupper are implemented in the MSVCRT library ++ to take a wchar_t argument and return a wchar_t result. mingw declares ++ these functions to take a wint_t argument and return a wint_t result. ++ This means that: ++ 1. When the user passes an argument outside the range 0x0000..0xFFFF, the ++ function will look only at the lower 16 bits. This is allowed according ++ to POSIX. ++ 2. The return value is returned in the lower 16 bits of the result register. ++ The upper 16 bits are random: whatever happened to be in that part of the ++ result register. We need to fix this by adding a zero-extend from ++ wchar_t to wint_t after the call. */ ++ ++_GL_WCTYPE_INLINE wint_t ++rpl_towlower (wint_t wc) ++{ ++ return (wint_t) (wchar_t) towlower (wc); ++} ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towlower rpl_towlower ++# endif ++ ++_GL_WCTYPE_INLINE wint_t ++rpl_towupper (wint_t wc) ++{ ++ return (wint_t) (wchar_t) towupper (wc); ++} ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towupper rpl_towupper ++# endif ++ ++# endif /* __MINGW32__ */ ++ ++# define GNULIB_defined_wctype_functions 1 ++#endif ++ ++#if 0 ++_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswlower, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswprint, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswspace, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswupper, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc)); ++#else ++_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswlower, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswprint, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswspace, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc)); ++#endif ++_GL_CXXALIASWARN (iswalnum); ++_GL_CXXALIASWARN (iswalpha); ++_GL_CXXALIASWARN (iswcntrl); ++_GL_CXXALIASWARN (iswdigit); ++_GL_CXXALIASWARN (iswgraph); ++_GL_CXXALIASWARN (iswlower); ++_GL_CXXALIASWARN (iswprint); ++_GL_CXXALIASWARN (iswpunct); ++_GL_CXXALIASWARN (iswspace); ++_GL_CXXALIASWARN (iswupper); ++_GL_CXXALIASWARN (iswxdigit); ++ ++#if 1 ++# if 0 || 0 ++_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc)); ++# else ++_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc)); ++# endif ++_GL_CXXALIASWARN (iswblank); ++#endif ++ ++#if !1 ++# if !GNULIB_defined_wctype_t ++typedef void * wctype_t; ++# define GNULIB_defined_wctype_t 1 ++# endif ++#endif ++ ++/* Get a descriptor for a wide character property. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name)); ++# endif ++_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name)); ++_GL_CXXALIASWARN (wctype); ++#elif defined GNULIB_POSIXCHECK ++# undef wctype ++# if HAVE_RAW_DECL_WCTYPE ++_GL_WARN_ON_USE (wctype, "wctype is unportable - " ++ "use gnulib module wctype for portability"); ++# endif ++#endif ++ ++/* Test whether a wide character has a given property. ++ The argument WC must be either a wchar_t value or WEOF. ++ The argument DESC must have been returned by the wctype() function. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc)); ++# endif ++_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc)); ++_GL_CXXALIASWARN (iswctype); ++#elif defined GNULIB_POSIXCHECK ++# undef iswctype ++# if HAVE_RAW_DECL_ISWCTYPE ++_GL_WARN_ON_USE (iswctype, "iswctype is unportable - " ++ "use gnulib module iswctype for portability"); ++# endif ++#endif ++ ++#if 0 || defined __MINGW32__ ++_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc)); ++_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc)); ++#else ++_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc)); ++_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc)); ++#endif ++_GL_CXXALIASWARN (towlower); ++_GL_CXXALIASWARN (towupper); ++ ++#if !1 ++# if !GNULIB_defined_wctrans_t ++typedef void * wctrans_t; ++# define GNULIB_defined_wctrans_t 1 ++# endif ++#endif ++ ++/* Get a descriptor for a wide character case conversion. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name)); ++# endif ++_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name)); ++_GL_CXXALIASWARN (wctrans); ++#elif defined GNULIB_POSIXCHECK ++# undef wctrans ++# if HAVE_RAW_DECL_WCTRANS ++_GL_WARN_ON_USE (wctrans, "wctrans is unportable - " ++ "use gnulib module wctrans for portability"); ++# endif ++#endif ++ ++/* Perform a given case conversion on a wide character. ++ The argument WC must be either a wchar_t value or WEOF. ++ The argument DESC must have been returned by the wctrans() function. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); ++# endif ++_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); ++_GL_CXXALIASWARN (towctrans); ++#elif defined GNULIB_POSIXCHECK ++# undef towctrans ++# if HAVE_RAW_DECL_TOWCTRANS ++_GL_WARN_ON_USE (towctrans, "towctrans is unportable - " ++ "use gnulib module towctrans for portability"); ++# endif ++#endif ++ ++_GL_INLINE_HEADER_END ++ ++#endif /* _GL_WCTYPE_H */ ++#endif /* _GL_WCTYPE_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/intl/pluralx.c gettext-0.19/gettext-tools/intl/pluralx.c +--- gettext-0.19-unpatched/gettext-tools/intl/pluralx.c 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/intl/pluralx.c 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1862 @@ ++/* A Bison parser, made by GNU Bison 3.0.4. */ ++ ++/* Bison implementation for Yacc-like parsers in C ++ ++ Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++/* As a special exception, you may create a larger work that contains ++ part or all of the Bison parser skeleton and distribute that work ++ under terms of your choice, so long as that work isn't itself a ++ parser generator using the skeleton or a modified version thereof ++ as a parser skeleton. Alternatively, if you modify or redistribute ++ the parser skeleton itself, you may (at your option) remove this ++ special exception, which will cause the skeleton and the resulting ++ Bison output files to be licensed under the GNU General Public ++ License without this special exception. ++ ++ This special exception was added by the Free Software Foundation in ++ version 2.2 of Bison. */ ++ ++/* C LALR(1) parser skeleton written by Richard Stallman, by ++ simplifying the original so-called "semantic" parser. */ ++ ++/* All symbols defined below should begin with yy or YY, to avoid ++ infringing on user name space. This should be done even for local ++ variables, as they might otherwise be expanded by user macros. ++ There are some unavoidable exceptions within include files to ++ define necessary library symbols; they are noted "INFRINGES ON ++ USER NAME SPACE" below. */ ++ ++/* Identify Bison output. */ ++#define YYBISON 1 ++ ++/* Bison version. */ ++#define YYBISON_VERSION "3.0.4" ++ ++/* Skeleton name. */ ++#define YYSKELETON_NAME "yacc.c" ++ ++/* Pure parsers. */ ++#define YYPURE 2 ++ ++/* Push parsers. */ ++#define YYPUSH 0 ++ ++/* Pull parsers. */ ++#define YYPULL 1 ++ ++ ++/* Substitute the variable and function names. */ ++#define yyparse __gettextparse ++#define yylex __gettextlex ++#define yyerror __gettexterror ++#define yydebug __gettextdebug ++#define yynerrs __gettextnerrs ++ ++ ++/* Copy the first part of user declarations. */ ++#line 1 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:339 */ ++ ++/* Expression parsing for plural form selection. ++ Copyright (C) 2000-2016 Free Software Foundation, Inc. ++ Written by Ulrich Drepper , 2000. ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, 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 Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with this program. If not, see . */ ++ ++/* For bison < 2.0, the bison generated parser uses alloca. AIX 3 forces us ++ to put this declaration at the beginning of the file. The declaration in ++ bison's skeleton file comes too late. This must come before ++ because may include arbitrary system headers. ++ This can go away once the AM_INTL_SUBDIR macro requires bison >= 2.0. */ ++#if defined _AIX && !defined __GNUC__ ++ #pragma alloca ++#endif ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include ++#include ++#include ++#include "plural-exp.h" ++ ++/* The main function generated by the parser is called __gettextparse, ++ but we want it to be called PLURAL_PARSE. */ ++#ifndef _LIBC ++# define __gettextparse PLURAL_PARSE ++#endif ++ ++ ++#line 116 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:339 */ ++ ++# ifndef YY_NULLPTR ++# if defined __cplusplus && 201103L <= __cplusplus ++# define YY_NULLPTR nullptr ++# else ++# define YY_NULLPTR 0 ++# endif ++# endif ++ ++/* Enabling verbose error messages. */ ++#ifdef YYERROR_VERBOSE ++# undef YYERROR_VERBOSE ++# define YYERROR_VERBOSE 1 ++#else ++# define YYERROR_VERBOSE 0 ++#endif ++ ++/* In a future release of Bison, this section will be replaced ++ by #include "plural.h". */ ++#ifndef YY__GETTEXT_PLURAL_H_INCLUDED ++# define YY__GETTEXT_PLURAL_H_INCLUDED ++/* Debug traces. */ ++#ifndef YYDEBUG ++# define YYDEBUG 0 ++#endif ++#if YYDEBUG ++extern int __gettextdebug; ++#endif ++ ++/* Token type. */ ++#ifndef YYTOKENTYPE ++# define YYTOKENTYPE ++ enum yytokentype ++ { ++ EQUOP2 = 258, ++ CMPOP2 = 259, ++ ADDOP2 = 260, ++ MULOP2 = 261, ++ NUMBER = 262 ++ }; ++#endif ++/* Tokens. */ ++#define EQUOP2 258 ++#define CMPOP2 259 ++#define ADDOP2 260 ++#define MULOP2 261 ++#define NUMBER 262 ++ ++/* Value type. */ ++#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED ++ ++union YYSTYPE ++{ ++#line 49 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:355 */ ++ ++ unsigned long int num; ++ enum expression_operator op; ++ struct expression *exp; ++ ++#line 176 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:355 */ ++}; ++ ++typedef union YYSTYPE YYSTYPE; ++# define YYSTYPE_IS_TRIVIAL 1 ++# define YYSTYPE_IS_DECLARED 1 ++#endif ++ ++ ++ ++int __gettextparse (struct parse_args *arg); ++ ++#endif /* !YY__GETTEXT_PLURAL_H_INCLUDED */ ++ ++/* Copy the second part of user declarations. */ ++#line 55 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:358 */ ++ ++/* Prototypes for local functions. */ ++static int yylex (YYSTYPE *lval, struct parse_args *arg); ++static void yyerror (struct parse_args *arg, const char *str); ++ ++/* Allocation of expressions. */ ++ ++static struct expression * ++new_exp (int nargs, enum expression_operator op, ++ struct expression * const *args) ++{ ++ int i; ++ struct expression *newp; ++ ++ /* If any of the argument could not be malloc'ed, just return NULL. */ ++ for (i = nargs - 1; i >= 0; i--) ++ if (args[i] == NULL) ++ goto fail; ++ ++ /* Allocate a new expression. */ ++ newp = (struct expression *) malloc (sizeof (*newp)); ++ if (newp != NULL) ++ { ++ newp->nargs = nargs; ++ newp->operation = op; ++ for (i = nargs - 1; i >= 0; i--) ++ newp->val.args[i] = args[i]; ++ return newp; ++ } ++ ++ fail: ++ for (i = nargs - 1; i >= 0; i--) ++ FREE_EXPRESSION (args[i]); ++ ++ return NULL; ++} ++ ++static inline struct expression * ++new_exp_0 (enum expression_operator op) ++{ ++ return new_exp (0, op, NULL); ++} ++ ++static inline struct expression * ++new_exp_1 (enum expression_operator op, struct expression *right) ++{ ++ struct expression *args[1]; ++ ++ args[0] = right; ++ return new_exp (1, op, args); ++} ++ ++static struct expression * ++new_exp_2 (enum expression_operator op, struct expression *left, ++ struct expression *right) ++{ ++ struct expression *args[2]; ++ ++ args[0] = left; ++ args[1] = right; ++ return new_exp (2, op, args); ++} ++ ++static inline struct expression * ++new_exp_3 (enum expression_operator op, struct expression *bexp, ++ struct expression *tbranch, struct expression *fbranch) ++{ ++ struct expression *args[3]; ++ ++ args[0] = bexp; ++ args[1] = tbranch; ++ args[2] = fbranch; ++ return new_exp (3, op, args); ++} ++ ++ ++#line 268 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:358 */ ++ ++#ifdef short ++# undef short ++#endif ++ ++#ifdef YYTYPE_UINT8 ++typedef YYTYPE_UINT8 yytype_uint8; ++#else ++typedef unsigned char yytype_uint8; ++#endif ++ ++#ifdef YYTYPE_INT8 ++typedef YYTYPE_INT8 yytype_int8; ++#else ++typedef signed char yytype_int8; ++#endif ++ ++#ifdef YYTYPE_UINT16 ++typedef YYTYPE_UINT16 yytype_uint16; ++#else ++typedef unsigned short int yytype_uint16; ++#endif ++ ++#ifdef YYTYPE_INT16 ++typedef YYTYPE_INT16 yytype_int16; ++#else ++typedef short int yytype_int16; ++#endif ++ ++#ifndef YYSIZE_T ++# ifdef __SIZE_TYPE__ ++# define YYSIZE_T __SIZE_TYPE__ ++# elif defined size_t ++# define YYSIZE_T size_t ++# elif ! defined YYSIZE_T ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YYSIZE_T size_t ++# else ++# define YYSIZE_T unsigned int ++# endif ++#endif ++ ++#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) ++ ++#ifndef YY_ ++# if defined YYENABLE_NLS && YYENABLE_NLS ++# if ENABLE_NLS ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YY_(Msgid) dgettext ("bison-runtime", Msgid) ++# endif ++# endif ++# ifndef YY_ ++# define YY_(Msgid) Msgid ++# endif ++#endif ++ ++#ifndef YY_ATTRIBUTE ++# if (defined __GNUC__ \ ++ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ ++ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C ++# define YY_ATTRIBUTE(Spec) __attribute__(Spec) ++# else ++# define YY_ATTRIBUTE(Spec) /* empty */ ++# endif ++#endif ++ ++#ifndef YY_ATTRIBUTE_PURE ++# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) ++#endif ++ ++#ifndef YY_ATTRIBUTE_UNUSED ++# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) ++#endif ++ ++#if !defined _Noreturn \ ++ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) ++# if defined _MSC_VER && 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) ++# endif ++#endif ++ ++/* Suppress unused-variable warnings by "using" E. */ ++#if ! defined lint || defined __GNUC__ ++# define YYUSE(E) ((void) (E)) ++#else ++# define YYUSE(E) /* empty */ ++#endif ++ ++#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ ++/* Suppress an incorrect diagnostic about yylval being uninitialized. */ ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ ++ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ ++ _Pragma ("GCC diagnostic pop") ++#else ++# define YY_INITIAL_VALUE(Value) Value ++#endif ++#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END ++#endif ++#ifndef YY_INITIAL_VALUE ++# define YY_INITIAL_VALUE(Value) /* Nothing. */ ++#endif ++ ++ ++#if ! defined yyoverflow || YYERROR_VERBOSE ++ ++/* The parser invokes alloca or malloc; define the necessary symbols. */ ++ ++# ifdef YYSTACK_USE_ALLOCA ++# if YYSTACK_USE_ALLOCA ++# ifdef __GNUC__ ++# define YYSTACK_ALLOC __builtin_alloca ++# elif defined __BUILTIN_VA_ARG_INCR ++# include /* INFRINGES ON USER NAME SPACE */ ++# elif defined _AIX ++# define YYSTACK_ALLOC __alloca ++# elif defined _MSC_VER ++# include /* INFRINGES ON USER NAME SPACE */ ++# define alloca _alloca ++# else ++# define YYSTACK_ALLOC alloca ++# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS ++# include /* INFRINGES ON USER NAME SPACE */ ++ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# endif ++# endif ++# endif ++ ++# ifdef YYSTACK_ALLOC ++ /* Pacify GCC's 'empty if-body' warning. */ ++# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) ++# ifndef YYSTACK_ALLOC_MAXIMUM ++ /* The OS might guarantee only one guard page at the bottom of the stack, ++ and a page size can be as small as 4096 bytes. So we cannot safely ++ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number ++ to allow for a few compiler-allocated temporary stack slots. */ ++# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ ++# endif ++# else ++# define YYSTACK_ALLOC YYMALLOC ++# define YYSTACK_FREE YYFREE ++# ifndef YYSTACK_ALLOC_MAXIMUM ++# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM ++# endif ++# if (defined __cplusplus && ! defined EXIT_SUCCESS \ ++ && ! ((defined YYMALLOC || defined malloc) \ ++ && (defined YYFREE || defined free))) ++# include /* INFRINGES ON USER NAME SPACE */ ++# ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++# endif ++# endif ++# ifndef YYMALLOC ++# define YYMALLOC malloc ++# if ! defined malloc && ! defined EXIT_SUCCESS ++void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# ifndef YYFREE ++# define YYFREE free ++# if ! defined free && ! defined EXIT_SUCCESS ++void free (void *); /* INFRINGES ON USER NAME SPACE */ ++# endif ++# endif ++# endif ++#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ ++ ++ ++#if (! defined yyoverflow \ ++ && (! defined __cplusplus \ ++ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) ++ ++/* A type that is properly aligned for any stack member. */ ++union yyalloc ++{ ++ yytype_int16 yyss_alloc; ++ YYSTYPE yyvs_alloc; ++}; ++ ++/* The size of the maximum gap between one aligned stack and the next. */ ++# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) ++ ++/* The size of an array large to enough to hold all stacks, each with ++ N elements. */ ++# define YYSTACK_BYTES(N) \ ++ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ ++ + YYSTACK_GAP_MAXIMUM) ++ ++# define YYCOPY_NEEDED 1 ++ ++/* Relocate STACK from its old location to the new one. The ++ local variables YYSIZE and YYSTACKSIZE give the old and new number of ++ elements in the stack, and YYPTR gives the new location of the ++ stack. Advance YYPTR to a properly aligned location for the next ++ stack. */ ++# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ ++ do \ ++ { \ ++ YYSIZE_T yynewbytes; \ ++ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ ++ Stack = &yyptr->Stack_alloc; \ ++ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ ++ yyptr += yynewbytes / sizeof (*yyptr); \ ++ } \ ++ while (0) ++ ++#endif ++ ++#if defined YYCOPY_NEEDED && YYCOPY_NEEDED ++/* Copy COUNT objects from SRC to DST. The source and destination do ++ not overlap. */ ++# ifndef YYCOPY ++# if defined __GNUC__ && 1 < __GNUC__ ++# define YYCOPY(Dst, Src, Count) \ ++ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) ++# else ++# define YYCOPY(Dst, Src, Count) \ ++ do \ ++ { \ ++ YYSIZE_T yyi; \ ++ for (yyi = 0; yyi < (Count); yyi++) \ ++ (Dst)[yyi] = (Src)[yyi]; \ ++ } \ ++ while (0) ++# endif ++# endif ++#endif /* !YYCOPY_NEEDED */ ++ ++/* YYFINAL -- State number of the termination state. */ ++#define YYFINAL 9 ++/* YYLAST -- Last index in YYTABLE. */ ++#define YYLAST 54 ++ ++/* YYNTOKENS -- Number of terminals. */ ++#define YYNTOKENS 16 ++/* YYNNTS -- Number of nonterminals. */ ++#define YYNNTS 3 ++/* YYNRULES -- Number of rules. */ ++#define YYNRULES 13 ++/* YYNSTATES -- Number of states. */ ++#define YYNSTATES 27 ++ ++/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned ++ by yylex, with out-of-bounds checking. */ ++#define YYUNDEFTOK 2 ++#define YYMAXUTOK 262 ++ ++#define YYTRANSLATE(YYX) \ ++ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) ++ ++/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex, without out-of-bounds checking. */ ++static const yytype_uint8 yytranslate[] = ++{ ++ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 10, 2, 2, 2, 2, 5, 2, ++ 14, 15, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 12, 2, ++ 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 1, 2, 6, 7, ++ 8, 9, 11 ++}; ++ ++#if YYDEBUG ++ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ ++static const yytype_uint8 yyrline[] = ++{ ++ 0, 152, 152, 160, 164, 168, 172, 176, 180, 184, ++ 188, 192, 196, 201 ++}; ++#endif ++ ++#if YYDEBUG || YYERROR_VERBOSE || 0 ++/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. ++ First, the terminals, then, starting at YYNTOKENS, nonterminals. */ ++static const char *const yytname[] = ++{ ++ "$end", "error", "$undefined", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", ++ "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", ++ "$accept", "start", "exp", YY_NULLPTR ++}; ++#endif ++ ++# ifdef YYPRINT ++/* YYTOKNUM[NUM] -- (External) token number corresponding to the ++ (internal) symbol number NUM (which must be that of a token). */ ++static const yytype_uint16 yytoknum[] = ++{ ++ 0, 256, 257, 63, 124, 38, 258, 259, 260, 261, ++ 33, 262, 58, 110, 40, 41 ++}; ++# endif ++ ++#define YYPACT_NINF -10 ++ ++#define yypact_value_is_default(Yystate) \ ++ (!!((Yystate) == (-10))) ++ ++#define YYTABLE_NINF -1 ++ ++#define yytable_value_is_error(Yytable_value) \ ++ 0 ++ ++ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing ++ STATE-NUM. */ ++static const yytype_int8 yypact[] = ++{ ++ -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, ++ -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, ++ 45, 18, -2, 14, -10, -9, 36 ++}; ++ ++ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. ++ Performed when YYTABLE does not specify something else to do. Zero ++ means the default is an error. */ ++static const yytype_uint8 yydefact[] = ++{ ++ 0, 0, 12, 11, 0, 0, 2, 10, 0, 1, ++ 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, ++ 5, 6, 7, 8, 9, 0, 3 ++}; ++ ++ /* YYPGOTO[NTERM-NUM]. */ ++static const yytype_int8 yypgoto[] = ++{ ++ -10, -10, -1 ++}; ++ ++ /* YYDEFGOTO[NTERM-NUM]. */ ++static const yytype_int8 yydefgoto[] = ++{ ++ -1, 5, 6 ++}; ++ ++ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If ++ positive, shift that token. If negative, reduce the rule whose ++ number is the opposite. If YYTABLE_NINF, syntax error. */ ++static const yytype_uint8 yytable[] = ++{ ++ 7, 1, 2, 8, 3, 4, 15, 16, 9, 18, ++ 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, ++ 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, ++ 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, ++ 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, ++ 16, 13, 14, 15, 16 ++}; ++ ++static const yytype_int8 yycheck[] = ++{ ++ 1, 10, 11, 4, 13, 14, 8, 9, 0, 10, ++ 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, ++ 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, ++ 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, ++ 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, ++ 9, 6, 7, 8, 9 ++}; ++ ++ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing ++ symbol of state STATE-NUM. */ ++static const yytype_uint8 yystos[] = ++{ ++ 0, 10, 11, 13, 14, 17, 18, 18, 18, 0, ++ 3, 4, 5, 6, 7, 8, 9, 15, 18, 18, ++ 18, 18, 18, 18, 18, 12, 18 ++}; ++ ++ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ ++static const yytype_uint8 yyr1[] = ++{ ++ 0, 16, 17, 18, 18, 18, 18, 18, 18, 18, ++ 18, 18, 18, 18 ++}; ++ ++ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ ++static const yytype_uint8 yyr2[] = ++{ ++ 0, 2, 1, 5, 3, 3, 3, 3, 3, 3, ++ 2, 1, 1, 3 ++}; ++ ++ ++#define yyerrok (yyerrstatus = 0) ++#define yyclearin (yychar = YYEMPTY) ++#define YYEMPTY (-2) ++#define YYEOF 0 ++ ++#define YYACCEPT goto yyacceptlab ++#define YYABORT goto yyabortlab ++#define YYERROR goto yyerrorlab ++ ++ ++#define YYRECOVERING() (!!yyerrstatus) ++ ++#define YYBACKUP(Token, Value) \ ++do \ ++ if (yychar == YYEMPTY) \ ++ { \ ++ yychar = (Token); \ ++ yylval = (Value); \ ++ YYPOPSTACK (yylen); \ ++ yystate = *yyssp; \ ++ goto yybackup; \ ++ } \ ++ else \ ++ { \ ++ yyerror (arg, YY_("syntax error: cannot back up")); \ ++ YYERROR; \ ++ } \ ++while (0) ++ ++/* Error token number */ ++#define YYTERROR 1 ++#define YYERRCODE 256 ++ ++ ++ ++/* Enable debugging if requested. */ ++#if YYDEBUG ++ ++# ifndef YYFPRINTF ++# include /* INFRINGES ON USER NAME SPACE */ ++# define YYFPRINTF fprintf ++# endif ++ ++# define YYDPRINTF(Args) \ ++do { \ ++ if (yydebug) \ ++ YYFPRINTF Args; \ ++} while (0) ++ ++/* This macro is provided for backward compatibility. */ ++#ifndef YY_LOCATION_PRINT ++# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++#endif ++ ++ ++# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ ++do { \ ++ if (yydebug) \ ++ { \ ++ YYFPRINTF (stderr, "%s ", Title); \ ++ yy_symbol_print (stderr, \ ++ Type, Value, arg); \ ++ YYFPRINTF (stderr, "\n"); \ ++ } \ ++} while (0) ++ ++ ++/*----------------------------------------. ++| Print this symbol's value on YYOUTPUT. | ++`----------------------------------------*/ ++ ++static void ++yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parse_args *arg) ++{ ++ FILE *yyo = yyoutput; ++ YYUSE (yyo); ++ YYUSE (arg); ++ if (!yyvaluep) ++ return; ++# ifdef YYPRINT ++ if (yytype < YYNTOKENS) ++ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); ++# endif ++ YYUSE (yytype); ++} ++ ++ ++/*--------------------------------. ++| Print this symbol on YYOUTPUT. | ++`--------------------------------*/ ++ ++static void ++yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parse_args *arg) ++{ ++ YYFPRINTF (yyoutput, "%s %s (", ++ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); ++ ++ yy_symbol_value_print (yyoutput, yytype, yyvaluep, arg); ++ YYFPRINTF (yyoutput, ")"); ++} ++ ++/*------------------------------------------------------------------. ++| yy_stack_print -- Print the state stack from its BOTTOM up to its | ++| TOP (included). | ++`------------------------------------------------------------------*/ ++ ++static void ++yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) ++{ ++ YYFPRINTF (stderr, "Stack now"); ++ for (; yybottom <= yytop; yybottom++) ++ { ++ int yybot = *yybottom; ++ YYFPRINTF (stderr, " %d", yybot); ++ } ++ YYFPRINTF (stderr, "\n"); ++} ++ ++# define YY_STACK_PRINT(Bottom, Top) \ ++do { \ ++ if (yydebug) \ ++ yy_stack_print ((Bottom), (Top)); \ ++} while (0) ++ ++ ++/*------------------------------------------------. ++| Report that the YYRULE is going to be reduced. | ++`------------------------------------------------*/ ++ ++static void ++yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct parse_args *arg) ++{ ++ unsigned long int yylno = yyrline[yyrule]; ++ int yynrhs = yyr2[yyrule]; ++ int yyi; ++ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", ++ yyrule - 1, yylno); ++ /* The symbols being reduced. */ ++ for (yyi = 0; yyi < yynrhs; yyi++) ++ { ++ YYFPRINTF (stderr, " $%d = ", yyi + 1); ++ yy_symbol_print (stderr, ++ yystos[yyssp[yyi + 1 - yynrhs]], ++ &(yyvsp[(yyi + 1) - (yynrhs)]) ++ , arg); ++ YYFPRINTF (stderr, "\n"); ++ } ++} ++ ++# define YY_REDUCE_PRINT(Rule) \ ++do { \ ++ if (yydebug) \ ++ yy_reduce_print (yyssp, yyvsp, Rule, arg); \ ++} while (0) ++ ++/* Nonzero means print parse trace. It is left uninitialized so that ++ multiple parsers can coexist. */ ++int yydebug; ++#else /* !YYDEBUG */ ++# define YYDPRINTF(Args) ++# define YY_SYMBOL_PRINT(Title, Type, Value, Location) ++# define YY_STACK_PRINT(Bottom, Top) ++# define YY_REDUCE_PRINT(Rule) ++#endif /* !YYDEBUG */ ++ ++ ++/* YYINITDEPTH -- initial size of the parser's stacks. */ ++#ifndef YYINITDEPTH ++# define YYINITDEPTH 200 ++#endif ++ ++/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only ++ if the built-in stack extension method is used). ++ ++ Do not make this value too large; the results are undefined if ++ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) ++ evaluated with infinite-precision integer arithmetic. */ ++ ++#ifndef YYMAXDEPTH ++# define YYMAXDEPTH 10000 ++#endif ++ ++ ++#if YYERROR_VERBOSE ++ ++# ifndef yystrlen ++# if defined __GLIBC__ && defined _STRING_H ++# define yystrlen strlen ++# else ++/* Return the length of YYSTR. */ ++static YYSIZE_T ++yystrlen (const char *yystr) ++{ ++ YYSIZE_T yylen; ++ for (yylen = 0; yystr[yylen]; yylen++) ++ continue; ++ return yylen; ++} ++# endif ++# endif ++ ++# ifndef yystpcpy ++# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE ++# define yystpcpy stpcpy ++# else ++/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in ++ YYDEST. */ ++static char * ++yystpcpy (char *yydest, const char *yysrc) ++{ ++ char *yyd = yydest; ++ const char *yys = yysrc; ++ ++ while ((*yyd++ = *yys++) != '\0') ++ continue; ++ ++ return yyd - 1; ++} ++# endif ++# endif ++ ++# ifndef yytnamerr ++/* Copy to YYRES the contents of YYSTR after stripping away unnecessary ++ quotes and backslashes, so that it's suitable for yyerror. The ++ heuristic is that double-quoting is unnecessary unless the string ++ contains an apostrophe, a comma, or backslash (other than ++ backslash-backslash). YYSTR is taken from yytname. If YYRES is ++ null, do not copy; instead, return the length of what the result ++ would have been. */ ++static YYSIZE_T ++yytnamerr (char *yyres, const char *yystr) ++{ ++ if (*yystr == '"') ++ { ++ YYSIZE_T yyn = 0; ++ char const *yyp = yystr; ++ ++ for (;;) ++ switch (*++yyp) ++ { ++ case '\'': ++ case ',': ++ goto do_not_strip_quotes; ++ ++ case '\\': ++ if (*++yyp != '\\') ++ goto do_not_strip_quotes; ++ /* Fall through. */ ++ default: ++ if (yyres) ++ yyres[yyn] = *yyp; ++ yyn++; ++ break; ++ ++ case '"': ++ if (yyres) ++ yyres[yyn] = '\0'; ++ return yyn; ++ } ++ do_not_strip_quotes: ; ++ } ++ ++ if (! yyres) ++ return yystrlen (yystr); ++ ++ return yystpcpy (yyres, yystr) - yyres; ++} ++# endif ++ ++/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message ++ about the unexpected token YYTOKEN for the state stack whose top is ++ YYSSP. ++ ++ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is ++ not large enough to hold the message. In that case, also set ++ *YYMSG_ALLOC to the required number of bytes. Return 2 if the ++ required number of bytes is too large to store. */ ++static int ++yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, ++ yytype_int16 *yyssp, int yytoken) ++{ ++ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); ++ YYSIZE_T yysize = yysize0; ++ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; ++ /* Internationalized format string. */ ++ const char *yyformat = YY_NULLPTR; ++ /* Arguments of yyformat. */ ++ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; ++ /* Number of reported tokens (one for the "unexpected", one per ++ "expected"). */ ++ int yycount = 0; ++ ++ /* There are many possibilities here to consider: ++ - If this state is a consistent state with a default action, then ++ the only way this function was invoked is if the default action ++ is an error action. In that case, don't check for expected ++ tokens because there are none. ++ - The only way there can be no lookahead present (in yychar) is if ++ this state is a consistent state with a default action. Thus, ++ detecting the absence of a lookahead is sufficient to determine ++ that there is no unexpected or expected token to report. In that ++ case, just report a simple "syntax error". ++ - Don't assume there isn't a lookahead just because this state is a ++ consistent state with a default action. There might have been a ++ previous inconsistent state, consistent state with a non-default ++ action, or user semantic action that manipulated yychar. ++ - Of course, the expected token list depends on states to have ++ correct lookahead information, and it depends on the parser not ++ to perform extra reductions after fetching a lookahead from the ++ scanner and before detecting a syntax error. Thus, state merging ++ (from LALR or IELR) and default reductions corrupt the expected ++ token list. However, the list is correct for canonical LR with ++ one exception: it will still contain any token that will not be ++ accepted due to an error action in a later state. ++ */ ++ if (yytoken != YYEMPTY) ++ { ++ int yyn = yypact[*yyssp]; ++ yyarg[yycount++] = yytname[yytoken]; ++ if (!yypact_value_is_default (yyn)) ++ { ++ /* Start YYX at -YYN if negative to avoid negative indexes in ++ YYCHECK. In other words, skip the first -YYN actions for ++ this state because they are default actions. */ ++ int yyxbegin = yyn < 0 ? -yyn : 0; ++ /* Stay within bounds of both yycheck and yytname. */ ++ int yychecklim = YYLAST - yyn + 1; ++ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; ++ int yyx; ++ ++ for (yyx = yyxbegin; yyx < yyxend; ++yyx) ++ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR ++ && !yytable_value_is_error (yytable[yyx + yyn])) ++ { ++ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) ++ { ++ yycount = 1; ++ yysize = yysize0; ++ break; ++ } ++ yyarg[yycount++] = yytname[yyx]; ++ { ++ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); ++ if (! (yysize <= yysize1 ++ && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) ++ return 2; ++ yysize = yysize1; ++ } ++ } ++ } ++ } ++ ++ switch (yycount) ++ { ++# define YYCASE_(N, S) \ ++ case N: \ ++ yyformat = S; \ ++ break ++ YYCASE_(0, YY_("syntax error")); ++ YYCASE_(1, YY_("syntax error, unexpected %s")); ++ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); ++ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); ++ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); ++ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); ++# undef YYCASE_ ++ } ++ ++ { ++ YYSIZE_T yysize1 = yysize + yystrlen (yyformat); ++ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) ++ return 2; ++ yysize = yysize1; ++ } ++ ++ if (*yymsg_alloc < yysize) ++ { ++ *yymsg_alloc = 2 * yysize; ++ if (! (yysize <= *yymsg_alloc ++ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) ++ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; ++ return 1; ++ } ++ ++ /* Avoid sprintf, as that infringes on the user's name space. ++ Don't have undefined behavior even if the translation ++ produced a string with the wrong number of "%s"s. */ ++ { ++ char *yyp = *yymsg; ++ int yyi = 0; ++ while ((*yyp = *yyformat) != '\0') ++ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) ++ { ++ yyp += yytnamerr (yyp, yyarg[yyi++]); ++ yyformat += 2; ++ } ++ else ++ { ++ yyp++; ++ yyformat++; ++ } ++ } ++ return 0; ++} ++#endif /* YYERROR_VERBOSE */ ++ ++/*-----------------------------------------------. ++| Release the memory associated to this symbol. | ++`-----------------------------------------------*/ ++ ++static void ++yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parse_args *arg) ++{ ++ YYUSE (yyvaluep); ++ YYUSE (arg); ++ if (!yymsg) ++ yymsg = "Deleting"; ++ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ YYUSE (yytype); ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++} ++ ++ ++ ++ ++/*----------. ++| yyparse. | ++`----------*/ ++ ++int ++yyparse (struct parse_args *arg) ++{ ++/* The lookahead symbol. */ ++int yychar; ++ ++ ++/* The semantic value of the lookahead symbol. */ ++/* Default value used for initialization, for pacifying older GCCs ++ or non-GCC compilers. */ ++YY_INITIAL_VALUE (static YYSTYPE yyval_default;) ++YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++ ++ /* Number of syntax errors so far. */ ++ int yynerrs; ++ ++ int yystate; ++ /* Number of tokens to shift before error messages enabled. */ ++ int yyerrstatus; ++ ++ /* The stacks and their tools: ++ 'yyss': related to states. ++ 'yyvs': related to semantic values. ++ ++ Refer to the stacks through separate pointers, to allow yyoverflow ++ to reallocate them elsewhere. */ ++ ++ /* The state stack. */ ++ yytype_int16 yyssa[YYINITDEPTH]; ++ yytype_int16 *yyss; ++ yytype_int16 *yyssp; ++ ++ /* The semantic value stack. */ ++ YYSTYPE yyvsa[YYINITDEPTH]; ++ YYSTYPE *yyvs; ++ YYSTYPE *yyvsp; ++ ++ YYSIZE_T yystacksize; ++ ++ int yyn; ++ int yyresult; ++ /* Lookahead token as an internal (translated) token number. */ ++ int yytoken = 0; ++ /* The variables used to return semantic value and location from the ++ action routines. */ ++ YYSTYPE yyval; ++ ++#if YYERROR_VERBOSE ++ /* Buffer for error messages, and its allocated size. */ ++ char yymsgbuf[128]; ++ char *yymsg = yymsgbuf; ++ YYSIZE_T yymsg_alloc = sizeof yymsgbuf; ++#endif ++ ++#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) ++ ++ /* The number of symbols on the RHS of the reduced rule. ++ Keep to zero when no symbol should be popped. */ ++ int yylen = 0; ++ ++ yyssp = yyss = yyssa; ++ yyvsp = yyvs = yyvsa; ++ yystacksize = YYINITDEPTH; ++ ++ YYDPRINTF ((stderr, "Starting parse\n")); ++ ++ yystate = 0; ++ yyerrstatus = 0; ++ yynerrs = 0; ++ yychar = YYEMPTY; /* Cause a token to be read. */ ++ goto yysetstate; ++ ++/*------------------------------------------------------------. ++| yynewstate -- Push a new state, which is found in yystate. | ++`------------------------------------------------------------*/ ++ yynewstate: ++ /* In all cases, when you get here, the value and location stacks ++ have just been pushed. So pushing a state here evens the stacks. */ ++ yyssp++; ++ ++ yysetstate: ++ *yyssp = yystate; ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++ { ++ /* Get the current used size of the three stacks, in elements. */ ++ YYSIZE_T yysize = yyssp - yyss + 1; ++ ++#ifdef yyoverflow ++ { ++ /* Give user a chance to reallocate the stack. Use copies of ++ these so that the &'s don't force the real ones into ++ memory. */ ++ YYSTYPE *yyvs1 = yyvs; ++ yytype_int16 *yyss1 = yyss; ++ ++ /* Each stack pointer address is followed by the size of the ++ data in use in that stack, in bytes. This used to be a ++ conditional around just the two extra args, but that might ++ be undefined if yyoverflow is a macro. */ ++ yyoverflow (YY_("memory exhausted"), ++ &yyss1, yysize * sizeof (*yyssp), ++ &yyvs1, yysize * sizeof (*yyvsp), ++ &yystacksize); ++ ++ yyss = yyss1; ++ yyvs = yyvs1; ++ } ++#else /* no yyoverflow */ ++# ifndef YYSTACK_RELOCATE ++ goto yyexhaustedlab; ++# else ++ /* Extend the stack our own way. */ ++ if (YYMAXDEPTH <= yystacksize) ++ goto yyexhaustedlab; ++ yystacksize *= 2; ++ if (YYMAXDEPTH < yystacksize) ++ yystacksize = YYMAXDEPTH; ++ ++ { ++ yytype_int16 *yyss1 = yyss; ++ union yyalloc *yyptr = ++ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); ++ if (! yyptr) ++ goto yyexhaustedlab; ++ YYSTACK_RELOCATE (yyss_alloc, yyss); ++ YYSTACK_RELOCATE (yyvs_alloc, yyvs); ++# undef YYSTACK_RELOCATE ++ if (yyss1 != yyssa) ++ YYSTACK_FREE (yyss1); ++ } ++# endif ++#endif /* no yyoverflow */ ++ ++ yyssp = yyss + yysize - 1; ++ yyvsp = yyvs + yysize - 1; ++ ++ YYDPRINTF ((stderr, "Stack size increased to %lu\n", ++ (unsigned long int) yystacksize)); ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++ YYABORT; ++ } ++ ++ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); ++ ++ if (yystate == YYFINAL) ++ YYACCEPT; ++ ++ goto yybackup; ++ ++/*-----------. ++| yybackup. | ++`-----------*/ ++yybackup: ++ ++ /* Do appropriate processing given the current state. Read a ++ lookahead token if we need one and don't already have one. */ ++ ++ /* First try to decide what to do without reference to lookahead token. */ ++ yyn = yypact[yystate]; ++ if (yypact_value_is_default (yyn)) ++ goto yydefault; ++ ++ /* Not known => get a lookahead token if don't already have one. */ ++ ++ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ ++ if (yychar == YYEMPTY) ++ { ++ YYDPRINTF ((stderr, "Reading a token: ")); ++ yychar = yylex (&yylval, arg); ++ } ++ ++ if (yychar <= YYEOF) ++ { ++ yychar = yytoken = YYEOF; ++ YYDPRINTF ((stderr, "Now at end of input.\n")); ++ } ++ else ++ { ++ yytoken = YYTRANSLATE (yychar); ++ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); ++ } ++ ++ /* If the proper action on seeing token YYTOKEN is to reduce or to ++ detect an error, take that action. */ ++ yyn += yytoken; ++ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) ++ goto yydefault; ++ yyn = yytable[yyn]; ++ if (yyn <= 0) ++ { ++ if (yytable_value_is_error (yyn)) ++ goto yyerrlab; ++ yyn = -yyn; ++ goto yyreduce; ++ } ++ ++ /* Count tokens shifted since error; after three, turn off error ++ status. */ ++ if (yyerrstatus) ++ yyerrstatus--; ++ ++ /* Shift the lookahead token. */ ++ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); ++ ++ /* Discard the shifted token. */ ++ yychar = YYEMPTY; ++ ++ yystate = yyn; ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ ++ goto yynewstate; ++ ++ ++/*-----------------------------------------------------------. ++| yydefault -- do the default action for the current state. | ++`-----------------------------------------------------------*/ ++yydefault: ++ yyn = yydefact[yystate]; ++ if (yyn == 0) ++ goto yyerrlab; ++ goto yyreduce; ++ ++ ++/*-----------------------------. ++| yyreduce -- Do a reduction. | ++`-----------------------------*/ ++yyreduce: ++ /* yyn is the number of a rule to reduce with. */ ++ yylen = yyr2[yyn]; ++ ++ /* If YYLEN is nonzero, implement the default value of the action: ++ '$$ = $1'. ++ ++ Otherwise, the following line sets YYVAL to garbage. ++ This behavior is undocumented and Bison ++ users should not rely upon it. Assigning to YYVAL ++ unconditionally makes the parser a bit smaller, and it avoids a ++ GCC warning that YYVAL may be used uninitialized. */ ++ yyval = yyvsp[1-yylen]; ++ ++ ++ YY_REDUCE_PRINT (yyn); ++ switch (yyn) ++ { ++ case 2: ++#line 153 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ if ((yyvsp[0].exp) == NULL) ++ YYABORT; ++ arg->res = (yyvsp[0].exp); ++ } ++#line 1365 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 3: ++#line 161 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_3 (qmop, (yyvsp[-4].exp), (yyvsp[-2].exp), (yyvsp[0].exp)); ++ } ++#line 1373 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 4: ++#line 165 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_2 (lor, (yyvsp[-2].exp), (yyvsp[0].exp)); ++ } ++#line 1381 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 5: ++#line 169 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_2 (land, (yyvsp[-2].exp), (yyvsp[0].exp)); ++ } ++#line 1389 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 6: ++#line 173 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); ++ } ++#line 1397 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 7: ++#line 177 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); ++ } ++#line 1405 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 8: ++#line 181 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); ++ } ++#line 1413 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 9: ++#line 185 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_2 ((yyvsp[-1].op), (yyvsp[-2].exp), (yyvsp[0].exp)); ++ } ++#line 1421 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 10: ++#line 189 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_1 (lnot, (yyvsp[0].exp)); ++ } ++#line 1429 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 11: ++#line 193 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = new_exp_0 (var); ++ } ++#line 1437 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 12: ++#line 197 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ if (((yyval.exp) = new_exp_0 (num)) != NULL) ++ (yyval.exp)->val.num = (yyvsp[0].num); ++ } ++#line 1446 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ case 13: ++#line 202 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1646 */ ++ { ++ (yyval.exp) = (yyvsp[-1].exp); ++ } ++#line 1454 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ break; ++ ++ ++#line 1458 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.c" /* yacc.c:1646 */ ++ default: break; ++ } ++ /* User semantic actions sometimes alter yychar, and that requires ++ that yytoken be updated with the new translation. We take the ++ approach of translating immediately before every use of yytoken. ++ One alternative is translating here after every semantic action, ++ but that translation would be missed if the semantic action invokes ++ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or ++ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an ++ incorrect destructor might then be invoked immediately. In the ++ case of YYERROR or YYBACKUP, subsequent parser actions might lead ++ to an incorrect destructor call or verbose syntax error message ++ before the lookahead is translated. */ ++ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); ++ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ YY_STACK_PRINT (yyss, yyssp); ++ ++ *++yyvsp = yyval; ++ ++ /* Now 'shift' the result of the reduction. Determine what state ++ that goes to, based on the state we popped back to and the rule ++ number reduced by. */ ++ ++ yyn = yyr1[yyn]; ++ ++ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; ++ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) ++ yystate = yytable[yystate]; ++ else ++ yystate = yydefgoto[yyn - YYNTOKENS]; ++ ++ goto yynewstate; ++ ++ ++/*--------------------------------------. ++| yyerrlab -- here on detecting error. | ++`--------------------------------------*/ ++yyerrlab: ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); ++ ++ /* If not already recovering from an error, report this error. */ ++ if (!yyerrstatus) ++ { ++ ++yynerrs; ++#if ! YYERROR_VERBOSE ++ yyerror (arg, YY_("syntax error")); ++#else ++# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ ++ yyssp, yytoken) ++ { ++ char const *yymsgp = YY_("syntax error"); ++ int yysyntax_error_status; ++ yysyntax_error_status = YYSYNTAX_ERROR; ++ if (yysyntax_error_status == 0) ++ yymsgp = yymsg; ++ else if (yysyntax_error_status == 1) ++ { ++ if (yymsg != yymsgbuf) ++ YYSTACK_FREE (yymsg); ++ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); ++ if (!yymsg) ++ { ++ yymsg = yymsgbuf; ++ yymsg_alloc = sizeof yymsgbuf; ++ yysyntax_error_status = 2; ++ } ++ else ++ { ++ yysyntax_error_status = YYSYNTAX_ERROR; ++ yymsgp = yymsg; ++ } ++ } ++ yyerror (arg, yymsgp); ++ if (yysyntax_error_status == 2) ++ goto yyexhaustedlab; ++ } ++# undef YYSYNTAX_ERROR ++#endif ++ } ++ ++ ++ ++ if (yyerrstatus == 3) ++ { ++ /* If just tried and failed to reuse lookahead token after an ++ error, discard it. */ ++ ++ if (yychar <= YYEOF) ++ { ++ /* Return failure if at end of input. */ ++ if (yychar == YYEOF) ++ YYABORT; ++ } ++ else ++ { ++ yydestruct ("Error: discarding", ++ yytoken, &yylval, arg); ++ yychar = YYEMPTY; ++ } ++ } ++ ++ /* Else will try to reuse lookahead token after shifting the error ++ token. */ ++ goto yyerrlab1; ++ ++ ++/*---------------------------------------------------. ++| yyerrorlab -- error raised explicitly by YYERROR. | ++`---------------------------------------------------*/ ++yyerrorlab: ++ ++ /* Pacify compilers like GCC when the user code never invokes ++ YYERROR and the label yyerrorlab therefore never appears in user ++ code. */ ++ if (/*CONSTCOND*/ 0) ++ goto yyerrorlab; ++ ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYERROR. */ ++ YYPOPSTACK (yylen); ++ yylen = 0; ++ YY_STACK_PRINT (yyss, yyssp); ++ yystate = *yyssp; ++ goto yyerrlab1; ++ ++ ++/*-------------------------------------------------------------. ++| yyerrlab1 -- common code for both syntax error and YYERROR. | ++`-------------------------------------------------------------*/ ++yyerrlab1: ++ yyerrstatus = 3; /* Each real token shifted decrements this. */ ++ ++ for (;;) ++ { ++ yyn = yypact[yystate]; ++ if (!yypact_value_is_default (yyn)) ++ { ++ yyn += YYTERROR; ++ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) ++ { ++ yyn = yytable[yyn]; ++ if (0 < yyn) ++ break; ++ } ++ } ++ ++ /* Pop the current state because it cannot handle the error token. */ ++ if (yyssp == yyss) ++ YYABORT; ++ ++ ++ yydestruct ("Error: popping", ++ yystos[yystate], yyvsp, arg); ++ YYPOPSTACK (1); ++ yystate = *yyssp; ++ YY_STACK_PRINT (yyss, yyssp); ++ } ++ ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ *++yyvsp = yylval; ++ YY_IGNORE_MAYBE_UNINITIALIZED_END ++ ++ ++ /* Shift the error token. */ ++ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); ++ ++ yystate = yyn; ++ goto yynewstate; ++ ++ ++/*-------------------------------------. ++| yyacceptlab -- YYACCEPT comes here. | ++`-------------------------------------*/ ++yyacceptlab: ++ yyresult = 0; ++ goto yyreturn; ++ ++/*-----------------------------------. ++| yyabortlab -- YYABORT comes here. | ++`-----------------------------------*/ ++yyabortlab: ++ yyresult = 1; ++ goto yyreturn; ++ ++#if !defined yyoverflow || YYERROR_VERBOSE ++/*-------------------------------------------------. ++| yyexhaustedlab -- memory exhaustion comes here. | ++`-------------------------------------------------*/ ++yyexhaustedlab: ++ yyerror (arg, YY_("memory exhausted")); ++ yyresult = 2; ++ /* Fall through. */ ++#endif ++ ++yyreturn: ++ if (yychar != YYEMPTY) ++ { ++ /* Make sure we have latest lookahead translation. See comments at ++ user semantic actions for why this is necessary. */ ++ yytoken = YYTRANSLATE (yychar); ++ yydestruct ("Cleanup: discarding lookahead", ++ yytoken, &yylval, arg); ++ } ++ /* Do not reclaim the symbols of the rule whose action triggered ++ this YYABORT or YYACCEPT. */ ++ YYPOPSTACK (yylen); ++ YY_STACK_PRINT (yyss, yyssp); ++ while (yyssp != yyss) ++ { ++ yydestruct ("Cleanup: popping", ++ yystos[*yyssp], yyvsp, arg); ++ YYPOPSTACK (1); ++ } ++#ifndef yyoverflow ++ if (yyss != yyssa) ++ YYSTACK_FREE (yyss); ++#endif ++#if YYERROR_VERBOSE ++ if (yymsg != yymsgbuf) ++ YYSTACK_FREE (yymsg); ++#endif ++ return yyresult; ++} ++#line 207 "../../../gettext-0.19.8.1/gettext-tools/../gettext-runtime/intl/plural.y" /* yacc.c:1906 */ ++ ++ ++void ++internal_function ++FREE_EXPRESSION (struct expression *exp) ++{ ++ if (exp == NULL) ++ return; ++ ++ /* Handle the recursive case. */ ++ switch (exp->nargs) ++ { ++ case 3: ++ FREE_EXPRESSION (exp->val.args[2]); ++ /* FALLTHROUGH */ ++ case 2: ++ FREE_EXPRESSION (exp->val.args[1]); ++ /* FALLTHROUGH */ ++ case 1: ++ FREE_EXPRESSION (exp->val.args[0]); ++ /* FALLTHROUGH */ ++ default: ++ break; ++ } ++ ++ free (exp); ++} ++ ++ ++static int ++yylex (YYSTYPE *lval, struct parse_args *arg) ++{ ++ const char *exp = arg->cp; ++ int result; ++ ++ while (1) ++ { ++ if (exp[0] == '\0') ++ { ++ arg->cp = exp; ++ return YYEOF; ++ } ++ ++ if (exp[0] != ' ' && exp[0] != '\t') ++ break; ++ ++ ++exp; ++ } ++ ++ result = *exp++; ++ switch (result) ++ { ++ case '0': case '1': case '2': case '3': case '4': ++ case '5': case '6': case '7': case '8': case '9': ++ { ++ unsigned long int n = result - '0'; ++ while (exp[0] >= '0' && exp[0] <= '9') ++ { ++ n *= 10; ++ n += exp[0] - '0'; ++ ++exp; ++ } ++ lval->num = n; ++ result = NUMBER; ++ } ++ break; ++ ++ case '=': ++ if (exp[0] == '=') ++ { ++ ++exp; ++ lval->op = equal; ++ result = EQUOP2; ++ } ++ else ++ result = YYERRCODE; ++ break; ++ ++ case '!': ++ if (exp[0] == '=') ++ { ++ ++exp; ++ lval->op = not_equal; ++ result = EQUOP2; ++ } ++ break; ++ ++ case '&': ++ case '|': ++ if (exp[0] == result) ++ ++exp; ++ else ++ result = YYERRCODE; ++ break; ++ ++ case '<': ++ if (exp[0] == '=') ++ { ++ ++exp; ++ lval->op = less_or_equal; ++ } ++ else ++ lval->op = less_than; ++ result = CMPOP2; ++ break; ++ ++ case '>': ++ if (exp[0] == '=') ++ { ++ ++exp; ++ lval->op = greater_or_equal; ++ } ++ else ++ lval->op = greater_than; ++ result = CMPOP2; ++ break; ++ ++ case '*': ++ lval->op = mult; ++ result = MULOP2; ++ break; ++ ++ case '/': ++ lval->op = divide; ++ result = MULOP2; ++ break; ++ ++ case '%': ++ lval->op = module; ++ result = MULOP2; ++ break; ++ ++ case '+': ++ lval->op = plus; ++ result = ADDOP2; ++ break; ++ ++ case '-': ++ lval->op = minus; ++ result = ADDOP2; ++ break; ++ ++ case 'n': ++ case '?': ++ case ':': ++ case '(': ++ case ')': ++ /* Nothing, just return the character. */ ++ break; ++ ++ case ';': ++ case '\n': ++ case '\0': ++ /* Be safe and let the user call this function again. */ ++ --exp; ++ result = YYEOF; ++ break; ++ ++ default: ++ result = YYERRCODE; ++#if YYDEBUG != 0 ++ --exp; ++#endif ++ break; ++ } ++ ++ arg->cp = exp; ++ ++ return result; ++} ++ ++ ++static void ++yyerror (struct parse_args *arg, const char *str) ++{ ++ /* Do nothing. We don't print error messages here. */ ++} +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/alloca.h gettext-0.19/gettext-tools/libgettextpo/msvc/alloca.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/alloca.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/alloca.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,70 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Memory allocation on the stack. ++ Copyright (C) 1995, 1999, 2001-2007, 2015-2016 Free Software Foundation, ++ Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++/* When this file is included, it may be preceded only by preprocessor ++ declarations. Thanks to AIX. Therefore we include it right after ++ "config.h", not later. */ ++ ++/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H ++ means there is a real alloca function. */ ++#ifndef _GL_ALLOCA_H ++#define _GL_ALLOCA_H ++ ++/* alloca(N) returns a pointer (void* or char*) to N bytes of memory ++ allocated on the stack, and which will last until the function returns. ++ Use of alloca should be avoided: ++ - inside arguments of function calls - undefined behaviour, ++ - in inline functions - the allocation may actually last until the ++ calling function returns, ++ - for huge N (say, N >= 65536) - you never know how large (or small) ++ the stack is, and when the stack cannot fulfill the memory allocation ++ request, the program just crashes. ++ */ ++ ++#ifndef alloca ++# ifdef __GNUC__ ++# define alloca __builtin_alloca ++# else ++# ifdef _MSC_VER ++# include ++# define alloca _alloca ++# else ++# if HAVE_ALLOCA_H ++# include ++# else ++# ifdef _AIX ++ #pragma alloca ++# else ++# ifdef __hpux /* This section must match that of bison generated files. */ ++# ifdef __cplusplus ++extern "C" void *alloca (unsigned int); ++# else /* not __cplusplus */ ++extern void *alloca (); ++# endif /* not __cplusplus */ ++# else /* not __hpux */ ++# ifndef alloca ++extern char *alloca (); ++# endif ++# endif /* __hpux */ ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++#endif /* _GL_ALLOCA_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/config.h gettext-0.19/gettext-tools/libgettextpo/msvc/config.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/config.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/config.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,10 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++#ifndef GTPO_CONFIG_H ++#define GTPO_CONFIG_H ++ ++#include "../../msvc/config.h" ++#define DEFAULT_TEXT_DOMAIN "gettext-tools" ++#undef DLL_VARIABLE ++#define DLL_VARIABLE ++ ++#endif /* GTPO_CONFIG_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/configmake.h gettext-0.19/gettext-tools/libgettextpo/msvc/configmake.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/configmake.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/configmake.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,28 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++#define PREFIX "/cygdrive/c/gtk.aio/vs9/x64/gnu" ++#define EXEC_PREFIX "/cygdrive/c/gtk.aio/vs9/x64/gnu" ++#define BINDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/bin" ++#define SBINDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/sbin" ++#define LIBEXECDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/libexec" ++#define DATAROOTDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share" ++#define DATADIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share" ++#define SYSCONFDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/etc" ++#define SHAREDSTATEDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/com" ++#define LOCALSTATEDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/var" ++#define RUNSTATEDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/var/run" ++#define INCLUDEDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/include" ++#define OLDINCLUDEDIR "/usr/include" ++#define DOCDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/doc/gettext" ++#define INFODIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/info" ++#define HTMLDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/doc/gettext" ++#define DVIDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/doc/gettext" ++#define PDFDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/doc/gettext" ++#define PSDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/doc/gettext" ++#define LIBDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/lib" ++#define LISPDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/emacs/site-lisp" ++#define LOCALEDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/locale" ++#define MANDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/man" ++#define PKGDATADIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/share/gettext-tools" ++#define PKGINCLUDEDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/include/gettext-tools" ++#define PKGLIBDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/lib/gettext-tools" ++#define PKGLIBEXECDIR "/cygdrive/c/gtk.aio/vs9/x64/gnu/libexec/gettext-tools" +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/errno.h gettext-0.19/gettext-tools/libgettextpo/msvc/errno.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/errno.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/errno.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,280 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A POSIX-like . ++ ++ Copyright (C) 2008-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_GTPO_ERRNO_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(errno.h) ++ ++#ifndef _GL_GTPO_ERRNO_H ++#define _GL_GTPO_ERRNO_H ++ ++ ++/* On native Windows platforms, many macros are not defined. */ ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++/* These are the same values as defined by MSVC 10, for interoperability. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 122 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 111 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 121 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 134 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 104 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 132 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 129 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 117 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 106 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 105 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++# ifndef EOWNERDEAD ++# define EOWNERDEAD 133 ++# define GNULIB_defined_EOWNERDEAD 1 ++# endif ++ ++# ifndef ENOTRECOVERABLE ++# define ENOTRECOVERABLE 127 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EINPROGRESS ++# define EINPROGRESS 112 ++# define EALREADY 103 ++# define ENOTSOCK 128 ++# define EDESTADDRREQ 109 ++# define EMSGSIZE 115 ++# define EPROTOTYPE 136 ++# define ENOPROTOOPT 123 ++# define EPROTONOSUPPORT 135 ++# define EOPNOTSUPP 130 ++# define EAFNOSUPPORT 102 ++# define EADDRINUSE 100 ++# define EADDRNOTAVAIL 101 ++# define ENETDOWN 116 ++# define ENETUNREACH 118 ++# define ECONNRESET 108 ++# define ENOBUFS 119 ++# define EISCONN 113 ++# define ENOTCONN 126 ++# define ETIMEDOUT 138 ++# define ECONNREFUSED 107 ++# define ELOOP 114 ++# define EHOSTUNREACH 110 ++# define EWOULDBLOCK 140 ++# define GNULIB_defined_ESOCK 1 ++# endif ++ ++# ifndef ETXTBSY ++# define ETXTBSY 139 ++# define ENODATA 120 /* not required by POSIX */ ++# define ENOSR 124 /* not required by POSIX */ ++# define ENOSTR 125 /* not required by POSIX */ ++# define ETIME 137 /* not required by POSIX */ ++# define EOTHER 131 /* not required by POSIX */ ++# define GNULIB_defined_ESTREAMS 1 ++# endif ++ ++/* These are intentionally the same values as the WSA* error numbers, defined ++ in . */ ++# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */ ++# define EPFNOSUPPORT 10046 /* not required by POSIX */ ++# define ESHUTDOWN 10058 /* not required by POSIX */ ++# define ETOOMANYREFS 10059 /* not required by POSIX */ ++# define EHOSTDOWN 10064 /* not required by POSIX */ ++# define EPROCLIM 10067 /* not required by POSIX */ ++# define EUSERS 10068 /* not required by POSIX */ ++# define EDQUOT 10069 ++# define ESTALE 10070 ++# define EREMOTE 10071 /* not required by POSIX */ ++# define GNULIB_defined_EWINSOCK 1 ++ ++# endif ++ ++ ++/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros ++ EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */ ++# if 0 ++# define EMULTIHOP ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++# if 0 ++# define ENOLINK ++# define GNULIB_defined_ENOLINK 1 ++# endif ++# if 0 ++# define EOVERFLOW ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++ ++/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK, ++ EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined. ++ Likewise, on NonStop Kernel, EDQUOT is not defined. ++ Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151, ++ HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133. ++ ++ Note: When one of these systems defines some of these macros some day, ++ binaries will have to be recompiled so that they recognizes the new ++ errno values from the system. */ ++ ++# ifndef ENOMSG ++# define ENOMSG 2000 ++# define GNULIB_defined_ENOMSG 1 ++# endif ++ ++# ifndef EIDRM ++# define EIDRM 2001 ++# define GNULIB_defined_EIDRM 1 ++# endif ++ ++# ifndef ENOLINK ++# define ENOLINK 2002 ++# define GNULIB_defined_ENOLINK 1 ++# endif ++ ++# ifndef EPROTO ++# define EPROTO 2003 ++# define GNULIB_defined_EPROTO 1 ++# endif ++ ++# ifndef EMULTIHOP ++# define EMULTIHOP 2004 ++# define GNULIB_defined_EMULTIHOP 1 ++# endif ++ ++# ifndef EBADMSG ++# define EBADMSG 2005 ++# define GNULIB_defined_EBADMSG 1 ++# endif ++ ++# ifndef EOVERFLOW ++# define EOVERFLOW 2006 ++# define GNULIB_defined_EOVERFLOW 1 ++# endif ++ ++# ifndef ENOTSUP ++# define ENOTSUP 2007 ++# define GNULIB_defined_ENOTSUP 1 ++# endif ++ ++# ifndef ENETRESET ++# define ENETRESET 2011 ++# define GNULIB_defined_ENETRESET 1 ++# endif ++ ++# ifndef ECONNABORTED ++# define ECONNABORTED 2012 ++# define GNULIB_defined_ECONNABORTED 1 ++# endif ++ ++# ifndef ESTALE ++# define ESTALE 2009 ++# define GNULIB_defined_ESTALE 1 ++# endif ++ ++# ifndef EDQUOT ++# define EDQUOT 2010 ++# define GNULIB_defined_EDQUOT 1 ++# endif ++ ++# ifndef ECANCELED ++# define ECANCELED 2008 ++# define GNULIB_defined_ECANCELED 1 ++# endif ++ ++/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not ++ defined. */ ++ ++# ifndef EOWNERDEAD ++# if defined __sun ++ /* Use the same values as defined for Solaris >= 8, for ++ interoperability. */ ++# define EOWNERDEAD 58 ++# define ENOTRECOVERABLE 59 ++# elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ /* We have a conflict here: pthreads-win32 defines these values ++ differently than MSVC 10. It's hairy to decide which one to use. */ ++# if defined __MINGW32__ && !defined USE_WINDOWS_THREADS ++ /* Use the same values as defined by pthreads-win32, for ++ interoperability. */ ++# define EOWNERDEAD 43 ++# define ENOTRECOVERABLE 44 ++# else ++ /* Use the same values as defined by MSVC 10, for ++ interoperability. */ ++# define EOWNERDEAD 133 ++# define ENOTRECOVERABLE 127 ++# endif ++# else ++# define EOWNERDEAD 2013 ++# define ENOTRECOVERABLE 2014 ++# endif ++# define GNULIB_defined_EOWNERDEAD 1 ++# define GNULIB_defined_ENOTRECOVERABLE 1 ++# endif ++ ++# ifndef EILSEQ ++# define EILSEQ 2015 ++# define GNULIB_defined_EILSEQ 1 ++# endif ++ ++#endif /* _GL_GTPO_ERRNO_H */ ++#endif /* _GL_GTPO_ERRNO_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/fcntl.h gettext-0.19/gettext-tools/libgettextpo/msvc/fcntl.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/fcntl.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/fcntl.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,675 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Like , but with non-working flags defined to 0. ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++/* written by Paul Eggert */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_fcntl_h ++/* Special invocation convention. */ ++ ++/* Needed before . ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++/* On some systems other than glibc, is a prerequisite of ++ . On glibc systems, we would like to avoid namespace pollution. ++ But on glibc systems, includes inside an ++ extern "C" { ... } block, which leads to errors in C++ mode with the ++ overridden from gnulib. These errors are known to be gone ++ with g++ version >= 4.3. */ ++#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) ++# include ++#endif ++#include MSVC_INCLUDE(fcntl.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_GTPO_FCNTL_H ++ ++/* Needed before . ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++/* On some systems other than glibc, is a prerequisite of ++ . On glibc systems, we would like to avoid namespace pollution. ++ But on glibc systems, includes inside an ++ extern "C" { ... } block, which leads to errors in C++ mode with the ++ overridden from gnulib. These errors are known to be gone ++ with g++ version >= 4.3. */ ++#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)))) ++# include ++#endif ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(fcntl.h) ++ ++#ifndef _GL_GTPO_FCNTL_H ++#define _GL_GTPO_FCNTL_H ++ ++#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */ ++# include ++#endif ++ ++/* Native Windows platforms declare open(), creat() in . */ ++#if (1 || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Declare overridden functions. */ ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fcntl ++# define fcntl rpl_fcntl ++# endif ++_GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...)); ++_GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...)); ++# endif ++_GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...)); ++# endif ++_GL_CXXALIASWARN (fcntl); ++#elif defined GNULIB_POSIXCHECK ++# undef fcntl ++# if HAVE_RAW_DECL_FCNTL ++_GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - " ++ "use gnulib module fcntl for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef open ++# define open rpl_open ++# endif ++_GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++# else ++_GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++# endif ++/* On HP-UX 11, in C++ mode, open() is defined as an inline function with a ++ default argument. _GL_CXXALIASWARN does not work in this case. */ ++# if !defined __hpux ++_GL_CXXALIASWARN (open); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef open ++/* Assume open is always declared. */ ++_GL_WARN_ON_USE (open, "open is not always POSIX compliant - " ++ "use gnulib module open for portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef openat ++# define openat rpl_openat ++# endif ++_GL_FUNCDECL_RPL (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (openat, int, ++ (int fd, char const *file, int flags, /* mode_t mode */ ...)); ++# endif ++_GL_CXXALIASWARN (openat); ++#elif defined GNULIB_POSIXCHECK ++# undef openat ++# if HAVE_RAW_DECL_OPENAT ++_GL_WARN_ON_USE (openat, "openat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++/* Fix up the FD_* macros, only known to be missing on mingw. */ ++ ++#ifndef FD_CLOEXEC ++# define FD_CLOEXEC 1 ++#endif ++ ++/* Fix up the supported F_* macros. Intentionally leave other F_* ++ macros undefined. Only known to be missing on mingw. */ ++ ++#ifndef F_DUPFD_CLOEXEC ++# define F_DUPFD_CLOEXEC 0x40000000 ++/* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */ ++# define GNULIB_defined_F_DUPFD_CLOEXEC 1 ++#else ++# define GNULIB_defined_F_DUPFD_CLOEXEC 0 ++#endif ++ ++#ifndef F_DUPFD ++# define F_DUPFD 1 ++#endif ++ ++#ifndef F_GETFD ++# define F_GETFD 2 ++#endif ++ ++/* Fix up the O_* macros. */ ++ ++/* AIX 7.1 with XL C 12.1 defines O_CLOEXEC, O_NOFOLLOW, and O_TTY_INIT ++ to values outside 'int' range, so omit these misdefinitions. ++ But avoid namespace pollution on non-AIX systems. */ ++#ifdef _AIX ++# include ++# if defined O_CLOEXEC && ! (INT_MIN <= O_CLOEXEC && O_CLOEXEC <= INT_MAX) ++# undef O_CLOEXEC ++# endif ++# if defined O_NOFOLLOW && ! (INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX) ++# undef O_NOFOLLOW ++# endif ++# if defined O_TTY_INIT && ! (INT_MIN <= O_TTY_INIT && O_TTY_INIT <= INT_MAX) ++# undef O_TTY_INIT ++# endif ++#endif ++ ++#if !defined O_DIRECT && defined O_DIRECTIO ++/* Tru64 spells it 'O_DIRECTIO'. */ ++# define O_DIRECT O_DIRECTIO ++#endif ++ ++#if !defined O_CLOEXEC && defined O_NOINHERIT ++/* Mingw spells it 'O_NOINHERIT'. */ ++# define O_CLOEXEC O_NOINHERIT ++#endif ++ ++#ifndef O_CLOEXEC ++# define O_CLOEXEC 0 ++#endif ++ ++#ifndef O_DIRECT ++# define O_DIRECT 0 ++#endif ++ ++#ifndef O_DIRECTORY ++# define O_DIRECTORY 0 ++#endif ++ ++#ifndef O_DSYNC ++# define O_DSYNC 0 ++#endif ++ ++#ifndef O_EXEC ++# define O_EXEC O_RDONLY /* This is often close enough in older systems. */ ++#endif ++ ++#ifndef O_IGNORE_CTTY ++# define O_IGNORE_CTTY 0 ++#endif ++ ++#ifndef O_NDELAY ++# define O_NDELAY 0 ++#endif ++ ++#ifndef O_NOATIME ++# define O_NOATIME 0 ++#endif ++ ++#ifndef O_NONBLOCK ++# define O_NONBLOCK O_NDELAY ++#endif ++ ++/* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero ++ value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY ++ or to 0 as fallback. */ ++#if 0 ++# if O_NONBLOCK ++# define GNULIB_defined_O_NONBLOCK 0 ++# else ++# define GNULIB_defined_O_NONBLOCK 1 ++# undef O_NONBLOCK ++# define O_NONBLOCK 0x40000000 ++# endif ++#endif ++ ++#ifndef O_NOCTTY ++# define O_NOCTTY 0 ++#endif ++ ++#ifndef O_NOFOLLOW ++# define O_NOFOLLOW 0 ++#endif ++ ++#ifndef O_NOLINK ++# define O_NOLINK 0 ++#endif ++ ++#ifndef O_NOLINKS ++# define O_NOLINKS 0 ++#endif ++ ++#ifndef O_NOTRANS ++# define O_NOTRANS 0 ++#endif ++ ++#ifndef O_RSYNC ++# define O_RSYNC 0 ++#endif ++ ++#ifndef O_SEARCH ++# define O_SEARCH O_RDONLY /* This is often close enough in older systems. */ ++#endif ++ ++#ifndef O_SYNC ++# define O_SYNC 0 ++#endif ++ ++#ifndef O_TTY_INIT ++# define O_TTY_INIT 0 ++#endif ++ ++#if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) ++# undef O_ACCMODE ++# define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH) ++#endif ++ ++/* For systems that distinguish between text and binary I/O. ++ O_BINARY is usually declared in fcntl.h */ ++#if !defined O_BINARY && defined _O_BINARY ++ /* For MSC-compatible compilers. */ ++# define O_BINARY _O_BINARY ++# define O_TEXT _O_TEXT ++#endif ++ ++#if defined __BEOS__ || defined __HAIKU__ ++ /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */ ++# undef O_BINARY ++# undef O_TEXT ++#endif ++ ++#ifndef O_BINARY ++# define O_BINARY 0 ++# define O_TEXT 0 ++#endif ++ ++/* Fix up the AT_* macros. */ ++ ++/* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its ++ value exceeds INT_MAX, so its use as an int doesn't conform to the ++ C standard, and GCC and Sun C complain in some cases. If the bug ++ is present, undef AT_FDCWD here, so it can be redefined below. */ ++#if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553 ++# undef AT_FDCWD ++#endif ++ ++/* Use the same bit pattern as Solaris 9, but with the proper ++ signedness. The bit pattern is important, in case this actually is ++ Solaris with the above workaround. */ ++#ifndef AT_FDCWD ++# define AT_FDCWD (-3041965) ++#endif ++ ++/* Use the same values as Solaris 9. This shouldn't matter, but ++ there's no real reason to differ. */ ++#ifndef AT_SYMLINK_NOFOLLOW ++# define AT_SYMLINK_NOFOLLOW 4096 ++#endif ++ ++#ifndef AT_REMOVEDIR ++# define AT_REMOVEDIR 1 ++#endif ++ ++/* Solaris 9 lacks these two, so just pick unique values. */ ++#ifndef AT_SYMLINK_FOLLOW ++# define AT_SYMLINK_FOLLOW 2 ++#endif ++ ++#ifndef AT_EACCESS ++# define AT_EACCESS 4 ++#endif ++ ++ ++#endif /* _GL_GTPO_FCNTL_H */ ++#endif /* _GL_GTPO_FCNTL_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/gettext-po.h gettext-0.19/gettext-tools/libgettextpo/msvc/gettext-po.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/gettext-po.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/gettext-po.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,369 @@ ++/* Public API for GNU gettext PO files - contained in libgettextpo. ++ Copyright (C) 2003-2008, 2010, 2015-2016 Free Software Foundation, Inc. ++ Written by Bruno Haible , 2003. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _GETTEXT_PO_H ++#define _GETTEXT_PO_H 1 ++ ++#include ++ ++#ifndef GETTEXTPO_EXPORTS ++#if defined (_MSC_VER) && defined (_DLL) && !defined (GETTEXT_STATIC) ++# if defined (IN_LIBGETTEXTPO) ++# define GETTEXTPO_EXPORTS __declspec(dllexport) ++# else ++# define GETTEXTPO_EXPORTS __declspec(dllexport) ++# endif ++#else ++# define GETTEXTPO_EXPORTS ++#endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* =========================== Meta Information ============================ */ ++ ++/* Version number: (major<<16) + (minor<<8) + subminor */ ++#define LIBGETTEXTPO_VERSION 0x001308 ++extern GETTEXTPO_EXPORTS int libgettextpo_version; ++ ++/* ================================= Types ================================= */ ++ ++/* A po_file_t represents the contents of a PO file. */ ++typedef struct po_file *po_file_t; ++ ++/* A po_message_iterator_t represents an iterator through a domain of a ++ PO file. */ ++typedef struct po_message_iterator *po_message_iterator_t; ++ ++/* A po_message_t represents a message in a PO file. */ ++typedef struct po_message *po_message_t; ++ ++/* A po_filepos_t represents a string's position within a source file. */ ++typedef struct po_filepos *po_filepos_t; ++ ++/* A po_error_handler handles error situations. */ ++struct po_error_handler ++{ ++ /* Signal an error. The error message is built from FORMAT and the following ++ arguments. ERRNUM, if nonzero, is an errno value. ++ Must increment the error_message_count variable declared in error.h. ++ Must not return if STATUS is nonzero. */ ++ void (*error) (int status, int errnum, ++ const char *format, ...) ++#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__ ++ __attribute__ ((__format__ (__printf__, 3, 4))) ++#endif ++ ; ++ ++ /* Signal an error. The error message is built from FORMAT and the following ++ arguments. The error location is at FILENAME line LINENO. ERRNUM, if ++ nonzero, is an errno value. ++ Must increment the error_message_count variable declared in error.h. ++ Must not return if STATUS is nonzero. */ ++ void (*error_at_line) (int status, int errnum, ++ const char *filename, unsigned int lineno, ++ const char *format, ...) ++#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3) && !__STRICT_ANSI__ ++ __attribute__ ((__format__ (__printf__, 5, 6))) ++#endif ++ ; ++ ++ /* Signal a multiline warning. The PREFIX applies to all lines of the ++ MESSAGE. Free the PREFIX and MESSAGE when done. */ ++ void (*multiline_warning) (char *prefix, char *message); ++ ++ /* Signal a multiline error. The PREFIX applies to all lines of the ++ MESSAGE. Free the PREFIX and MESSAGE when done. ++ Must increment the error_message_count variable declared in error.h if ++ PREFIX is non-NULL. */ ++ void (*multiline_error) (char *prefix, char *message); ++}; ++typedef const struct po_error_handler *po_error_handler_t; ++ ++/* A po_xerror_handler handles warnings, error and fatal error situations. */ ++#define PO_SEVERITY_WARNING 0 /* just a warning, tell the user */ ++#define PO_SEVERITY_ERROR 1 /* an error, the operation cannot complete */ ++#define PO_SEVERITY_FATAL_ERROR 2 /* an error, the operation must be aborted */ ++struct po_xerror_handler ++{ ++ /* Signal a problem of the given severity. ++ MESSAGE and/or FILENAME + LINENO indicate where the problem occurred. ++ If FILENAME is NULL, FILENAME and LINENO and COLUMN should be ignored. ++ If LINENO is (size_t)(-1), LINENO and COLUMN should be ignored. ++ If COLUMN is (size_t)(-1), it should be ignored. ++ MESSAGE_TEXT is the problem description (if MULTILINE_P is true, ++ multiple lines of text, each terminated with a newline, otherwise ++ usually a single line). ++ Must not return if SEVERITY is PO_SEVERITY_FATAL_ERROR. */ ++ void (*xerror) (int severity, ++ po_message_t message, ++ const char *filename, size_t lineno, size_t column, ++ int multiline_p, const char *message_text); ++ /* Signal a problem that refers to two messages. ++ Similar to two calls to xerror. ++ If possible, a "..." can be appended to MESSAGE_TEXT1 and prepended to ++ MESSAGE_TEXT2. */ ++ void (*xerror2) (int severity, ++ po_message_t message1, ++ const char *filename1, size_t lineno1, size_t column1, ++ int multiline_p1, const char *message_text1, ++ po_message_t message2, ++ const char *filename2, size_t lineno2, size_t column2, ++ int multiline_p2, const char *message_text2); ++}; ++typedef const struct po_xerror_handler *po_xerror_handler_t; ++ ++/* Memory allocation: ++ The memory allocations performed by these functions use xmalloc(), ++ therefore will cause a program exit if memory is exhausted. ++ The memory allocated by po_file_read, and implicitly returned through ++ the po_message_* functions, lasts until freed with po_file_free. */ ++ ++ ++/* ============================= po_file_t API ============================= */ ++ ++/* Create an empty PO file representation in memory. */ ++extern GETTEXTPO_EXPORTS po_file_t po_file_create (void); ++ ++/* Read a PO file into memory. ++ Return its contents. Upon failure, return NULL and set errno. */ ++#define po_file_read po_file_read_v3 ++extern GETTEXTPO_EXPORTS po_file_t po_file_read (const char *filename, ++ po_xerror_handler_t handler); ++ ++/* Write an in-memory PO file to a file. ++ Upon failure, return NULL and set errno. */ ++#define po_file_write po_file_write_v2 ++extern GETTEXTPO_EXPORTS po_file_t po_file_write (po_file_t file, const char *filename, ++ po_xerror_handler_t handler); ++ ++/* Free a PO file from memory. */ ++extern GETTEXTPO_EXPORTS void po_file_free (po_file_t file); ++ ++/* Return the names of the domains covered by a PO file in memory. */ ++extern GETTEXTPO_EXPORTS const char * const * po_file_domains (po_file_t file); ++ ++ ++/* =========================== Header entry API ============================ */ ++ ++/* Return the header entry of a domain of a PO file in memory. ++ The domain NULL denotes the default domain. ++ Return NULL if there is no header entry. */ ++extern GETTEXTPO_EXPORTS const char * po_file_domain_header (po_file_t file, const char *domain); ++ ++/* Return the value of a field in a header entry. ++ The return value is either a freshly allocated string, to be freed by the ++ caller, or NULL. */ ++extern GETTEXTPO_EXPORTS char * po_header_field (const char *header, const char *field); ++ ++/* Return the header entry with a given field set to a given value. The field ++ is added if necessary. ++ The return value is a freshly allocated string. */ ++extern GETTEXTPO_EXPORTS char * po_header_set_field (const char *header, const char *field, const char *value); ++ ++ ++/* ======================= po_message_iterator_t API ======================= */ ++ ++/* Create an iterator for traversing a domain of a PO file in memory. ++ The domain NULL denotes the default domain. */ ++extern GETTEXTPO_EXPORTS po_message_iterator_t po_message_iterator (po_file_t file, const char *domain); ++ ++/* Free an iterator. */ ++extern GETTEXTPO_EXPORTS void po_message_iterator_free (po_message_iterator_t iterator); ++ ++/* Return the next message, and advance the iterator. ++ Return NULL at the end of the message list. */ ++extern GETTEXTPO_EXPORTS po_message_t po_next_message (po_message_iterator_t iterator); ++ ++/* Insert a message in a PO file in memory, in the domain and at the position ++ indicated by the iterator. The iterator thereby advances past the freshly ++ inserted message. */ ++extern GETTEXTPO_EXPORTS void po_message_insert (po_message_iterator_t iterator, po_message_t message); ++ ++ ++/* =========================== po_message_t API ============================ */ ++ ++/* Return a freshly constructed message. ++ To finish initializing the message, you must set the msgid and msgstr. */ ++extern GETTEXTPO_EXPORTS po_message_t po_message_create (void); ++ ++/* Return the context of a message, or NULL for a message not restricted to a ++ context. */ ++extern GETTEXTPO_EXPORTS const char * po_message_msgctxt (po_message_t message); ++ ++/* Change the context of a message. NULL means a message not restricted to a ++ context. */ ++extern GETTEXTPO_EXPORTS void po_message_set_msgctxt (po_message_t message, const char *msgctxt); ++ ++/* Return the msgid (untranslated English string) of a message. */ ++extern GETTEXTPO_EXPORTS const char * po_message_msgid (po_message_t message); ++ ++/* Change the msgid (untranslated English string) of a message. */ ++extern GETTEXTPO_EXPORTS void po_message_set_msgid (po_message_t message, const char *msgid); ++ ++/* Return the msgid_plural (untranslated English plural string) of a message, ++ or NULL for a message without plural. */ ++extern GETTEXTPO_EXPORTS const char * po_message_msgid_plural (po_message_t message); ++ ++/* Change the msgid_plural (untranslated English plural string) of a message. ++ NULL means a message without plural. */ ++extern GETTEXTPO_EXPORTS void po_message_set_msgid_plural (po_message_t message, const char *msgid_plural); ++ ++/* Return the msgstr (translation) of a message. ++ Return the empty string for an untranslated message. */ ++extern GETTEXTPO_EXPORTS const char * po_message_msgstr (po_message_t message); ++ ++/* Change the msgstr (translation) of a message. ++ Use an empty string to denote an untranslated message. */ ++extern GETTEXTPO_EXPORTS void po_message_set_msgstr (po_message_t message, const char *msgstr); ++ ++/* Return the msgstr[index] for a message with plural handling, or ++ NULL when the index is out of range or for a message without plural. */ ++extern GETTEXTPO_EXPORTS const char * po_message_msgstr_plural (po_message_t message, int index); ++ ++/* Change the msgstr[index] for a message with plural handling. ++ Use a NULL value at the end to reduce the number of plural forms. */ ++extern GETTEXTPO_EXPORTS void po_message_set_msgstr_plural (po_message_t message, int index, const char *msgstr); ++ ++/* Return the comments for a message. */ ++extern GETTEXTPO_EXPORTS const char * po_message_comments (po_message_t message); ++ ++/* Change the comments for a message. ++ comments should be a multiline string, ending in a newline, or empty. */ ++extern GETTEXTPO_EXPORTS void po_message_set_comments (po_message_t message, const char *comments); ++ ++/* Return the extracted comments for a message. */ ++extern GETTEXTPO_EXPORTS const char * po_message_extracted_comments (po_message_t message); ++ ++/* Change the extracted comments for a message. ++ comments should be a multiline string, ending in a newline, or empty. */ ++extern GETTEXTPO_EXPORTS void po_message_set_extracted_comments (po_message_t message, const char *comments); ++ ++/* Return the i-th file position for a message, or NULL if i is out of ++ range. */ ++extern GETTEXTPO_EXPORTS po_filepos_t po_message_filepos (po_message_t message, int i); ++ ++/* Remove the i-th file position from a message. ++ The indices of all following file positions for the message are decremented ++ by one. */ ++extern GETTEXTPO_EXPORTS void po_message_remove_filepos (po_message_t message, int i); ++ ++/* Add a file position to a message, if it is not already present for the ++ message. ++ file is the file name. ++ start_line is the line number where the string starts, or (size_t)(-1) if no ++ line number is available. */ ++extern GETTEXTPO_EXPORTS void po_message_add_filepos (po_message_t message, const char *file, size_t start_line); ++ ++/* Return the previous context of a message, or NULL for none. */ ++extern GETTEXTPO_EXPORTS const char * po_message_prev_msgctxt (po_message_t message); ++ ++/* Change the previous context of a message. NULL is allowed. */ ++extern GETTEXTPO_EXPORTS void po_message_set_prev_msgctxt (po_message_t message, const char *prev_msgctxt); ++ ++/* Return the previous msgid (untranslated English string) of a message, or ++ NULL for none. */ ++extern GETTEXTPO_EXPORTS const char * po_message_prev_msgid (po_message_t message); ++ ++/* Change the previous msgid (untranslated English string) of a message. ++ NULL is allowed. */ ++extern GETTEXTPO_EXPORTS void po_message_set_prev_msgid (po_message_t message, const char *prev_msgid); ++ ++/* Return the previous msgid_plural (untranslated English plural string) of a ++ message, or NULL for none. */ ++extern GETTEXTPO_EXPORTS const char * po_message_prev_msgid_plural (po_message_t message); ++ ++/* Change the previous msgid_plural (untranslated English plural string) of a ++ message. NULL is allowed. */ ++extern GETTEXTPO_EXPORTS void po_message_set_prev_msgid_plural (po_message_t message, const char *prev_msgid_plural); ++ ++/* Return true if the message is marked obsolete. */ ++extern GETTEXTPO_EXPORTS int po_message_is_obsolete (po_message_t message); ++ ++/* Change the obsolete mark of a message. */ ++extern GETTEXTPO_EXPORTS void po_message_set_obsolete (po_message_t message, int obsolete); ++ ++/* Return true if the message is marked fuzzy. */ ++extern GETTEXTPO_EXPORTS int po_message_is_fuzzy (po_message_t message); ++ ++/* Change the fuzzy mark of a message. */ ++extern GETTEXTPO_EXPORTS void po_message_set_fuzzy (po_message_t message, int fuzzy); ++ ++/* Return true if the message is marked as being a format string of the given ++ type (e.g. "c-format"). */ ++extern GETTEXTPO_EXPORTS int po_message_is_format (po_message_t message, const char *format_type); ++ ++/* Change the format string mark for a given type of a message. */ ++extern GETTEXTPO_EXPORTS void po_message_set_format (po_message_t message, const char *format_type, /*bool*/int value); ++ ++/* If a numeric range of a message is set, return true and store the minimum ++ and maximum value in *MINP and *MAXP. */ ++extern GETTEXTPO_EXPORTS int po_message_is_range (po_message_t message, int *minp, int *maxp); ++ ++/* Change the numeric range of a message. MIN and MAX must be non-negative, ++ with MIN < MAX. Use MIN = MAX = -1 to remove the numeric range of a ++ message. */ ++extern GETTEXTPO_EXPORTS void po_message_set_range (po_message_t message, int min, int max); ++ ++ ++/* =========================== po_filepos_t API ============================ */ ++ ++/* Return the file name. */ ++extern GETTEXTPO_EXPORTS const char * po_filepos_file (po_filepos_t filepos); ++ ++/* Return the line number where the string starts, or (size_t)(-1) if no line ++ number is available. */ ++extern GETTEXTPO_EXPORTS size_t po_filepos_start_line (po_filepos_t filepos); ++ ++ ++/* ============================ Format type API ============================= */ ++ ++/* Return a NULL terminated array of the supported format types. */ ++extern GETTEXTPO_EXPORTS const char * const * po_format_list (void); ++ ++/* Return the pretty name associated with a format type. ++ For example, for "csharp-format", return "C#". ++ Return NULL if the argument is not a supported format type. */ ++extern GETTEXTPO_EXPORTS const char * po_format_pretty_name (const char *format_type); ++ ++ ++/* ============================= Checking API ============================== */ ++ ++/* Test whether an entire file PO file is valid, like msgfmt does it. ++ If it is invalid, pass the reasons to the handler. */ ++extern GETTEXTPO_EXPORTS void po_file_check_all (po_file_t file, po_xerror_handler_t handler); ++ ++/* Test a single message, to be inserted in a PO file in memory, like msgfmt ++ does it. If it is invalid, pass the reasons to the handler. The iterator ++ is not modified by this call; it only specifies the file and the domain. */ ++extern GETTEXTPO_EXPORTS void po_message_check_all (po_message_t message, po_message_iterator_t iterator, po_xerror_handler_t handler); ++ ++/* Test whether the message translation is a valid format string if the message ++ is marked as being a format string. If it is invalid, pass the reasons to ++ the handler. */ ++#define po_message_check_format po_message_check_format_v2 ++extern GETTEXTPO_EXPORTS void po_message_check_format (po_message_t message, po_xerror_handler_t handler); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _GETTEXT_PO_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/iconv.h gettext-0.19/gettext-tools/libgettextpo/msvc/iconv.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/iconv.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/iconv.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,422 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_GTPO_ICONV_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include <../include/iconv.h> ++ ++#ifndef _GL_GTPO_ICONV_H ++#define _GL_GTPO_ICONV_H ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++#if 1 ++# if 0 ++/* An iconv_open wrapper that supports the IANA standardized encoding names ++ ("ISO-8859-1" etc.) as far as possible. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv_open rpl_iconv_open ++# endif ++_GL_FUNCDECL_RPL (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode)); ++# else ++_GL_CXXALIAS_SYS (iconv_open, iconv_t, ++ (const char *tocode, const char *fromcode)); ++# endif ++_GL_CXXALIASWARN (iconv_open); ++#endif ++ ++#if 0 ++/* Special constants for supporting UTF-{16,32}{BE,LE} encodings. ++ Not public. */ ++# define _ICONV_UTF8_UTF16BE (iconv_t)(-161) ++# define _ICONV_UTF8_UTF16LE (iconv_t)(-162) ++# define _ICONV_UTF8_UTF32BE (iconv_t)(-163) ++# define _ICONV_UTF8_UTF32LE (iconv_t)(-164) ++# define _ICONV_UTF16BE_UTF8 (iconv_t)(-165) ++# define _ICONV_UTF16LE_UTF8 (iconv_t)(-166) ++# define _ICONV_UTF32BE_UTF8 (iconv_t)(-167) ++# define _ICONV_UTF32LE_UTF8 (iconv_t)(-168) ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv rpl_iconv ++# endif ++_GL_FUNCDECL_RPL (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++_GL_CXXALIAS_RPL (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++# else ++_GL_CXXALIAS_SYS (iconv, size_t, ++ (iconv_t cd, ++ char **inbuf, size_t *inbytesleft, ++ char **outbuf, size_t *outbytesleft)); ++# endif ++_GL_CXXALIASWARN (iconv); ++# ifndef ICONV_CONST ++# define ICONV_CONST ++# endif ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iconv_close rpl_iconv_close ++# endif ++_GL_FUNCDECL_RPL (iconv_close, int, (iconv_t cd)); ++_GL_CXXALIAS_RPL (iconv_close, int, (iconv_t cd)); ++# else ++_GL_CXXALIAS_SYS (iconv_close, int, (iconv_t cd)); ++# endif ++_GL_CXXALIASWARN (iconv_close); ++#endif ++ ++ ++#endif /* _GL_GTPO_ICONV_H */ ++#endif /* _GL_GTPO_ICONV_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/signal.h gettext-0.19/gettext-tools/libgettextpo/msvc/signal.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/signal.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/signal.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,775 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_sig_atomic_t || defined __need_sigset_t || defined _GL_ALREADY_INCLUDING_SIGNAL_H || (defined _SIGNAL_H && !defined __SIZEOF_PTHREAD_MUTEX_T) ++/* Special invocation convention: ++ - Inside glibc header files. ++ - On glibc systems we have a sequence of nested includes ++ -> -> . ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. ++ - On glibc systems with GCC 4.3 we have a sequence of nested includes ++ -> -> -> . ++ In this situation, some of the functions are not yet declared, therefore ++ we cannot provide the C++ aliases. */ ++ ++# include MSVC_INCLUDE(signal.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_GTPO_SIGNAL_H ++ ++#define _GL_ALREADY_INCLUDING_SIGNAL_H ++ ++/* Define pid_t, uid_t. ++ Also, mingw defines sigset_t not in , but in . ++ On Solaris 10, includes , which eventually includes ++ us; so include now, before the second inclusion guard. */ ++#include ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(signal.h) ++ ++#undef _GL_ALREADY_INCLUDING_SIGNAL_H ++ ++#ifndef _GL_GTPO_SIGNAL_H ++#define _GL_GTPO_SIGNAL_H ++ ++/* Mac OS X 10.3, FreeBSD 6.4, OpenBSD 3.8, OSF/1 4.0, Solaris 2.6, Android ++ declare pthread_sigmask in , not in . ++ But avoid namespace pollution on glibc systems.*/ ++#if (0 || defined GNULIB_POSIXCHECK) \ ++ && ((defined __APPLE__ && defined __MACH__) \ ++ || defined __FreeBSD__ || defined __OpenBSD__ || defined __osf__ \ ++ || defined __sun || defined __ANDROID__) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* On AIX, sig_atomic_t already includes volatile. C99 requires that ++ 'volatile sig_atomic_t' ignore the extra modifier, but C89 did not. ++ Hence, redefine this to a non-volatile type as needed. */ ++#if ! 1 ++# if !GNULIB_defined_sig_atomic_t ++typedef int rpl_sig_atomic_t; ++# undef sig_atomic_t ++# define sig_atomic_t rpl_sig_atomic_t ++# define GNULIB_defined_sig_atomic_t 1 ++# endif ++#endif ++ ++/* A set or mask of signals. */ ++#if !0 ++# if !GNULIB_defined_sigset_t ++typedef unsigned int sigset_t; ++# define GNULIB_defined_sigset_t 1 ++# endif ++#endif ++ ++/* Define sighandler_t, the type of signal handlers. A GNU extension. */ ++#if !0 ++# ifdef __cplusplus ++extern "C" { ++# endif ++# if !GNULIB_defined_sighandler_t ++typedef void (*sighandler_t) (int); ++# define GNULIB_defined_sighandler_t 1 ++# endif ++# ifdef __cplusplus ++} ++# endif ++#endif ++ ++ ++#if 1 ++# ifndef SIGPIPE ++/* Define SIGPIPE to a value that does not overlap with other signals. */ ++# define SIGPIPE 13 ++# define GNULIB_defined_SIGPIPE 1 ++/* To actually use SIGPIPE, you also need the gnulib modules 'sigprocmask', ++ 'write', 'stdio'. */ ++# endif ++#endif ++ ++ ++/* Maximum signal number + 1. */ ++#ifndef NSIG ++# if defined __TANDEM ++# define NSIG 32 ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pthread_sigmask ++# define pthread_sigmask rpl_pthread_sigmask ++# endif ++_GL_FUNCDECL_RPL (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++_GL_CXXALIAS_RPL (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# endif ++_GL_CXXALIAS_SYS (pthread_sigmask, int, ++ (int how, const sigset_t *new_mask, sigset_t *old_mask)); ++# endif ++_GL_CXXALIASWARN (pthread_sigmask); ++#elif defined GNULIB_POSIXCHECK ++# undef pthread_sigmask ++# if HAVE_RAW_DECL_PTHREAD_SIGMASK ++_GL_WARN_ON_USE (pthread_sigmask, "pthread_sigmask is not portable - " ++ "use gnulib module pthread_sigmask for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef raise ++# define raise rpl_raise ++# endif ++_GL_FUNCDECL_RPL (raise, int, (int sig)); ++_GL_CXXALIAS_RPL (raise, int, (int sig)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (raise, int, (int sig)); ++# endif ++_GL_CXXALIAS_SYS (raise, int, (int sig)); ++# endif ++_GL_CXXALIASWARN (raise); ++#elif defined GNULIB_POSIXCHECK ++# undef raise ++/* Assume raise is always declared. */ ++_GL_WARN_ON_USE (raise, "raise can crash on native Windows - " ++ "use gnulib module raise for portability"); ++#endif ++ ++ ++#if 1 ++# if !0 ++ ++# ifndef GNULIB_defined_signal_blocking ++# define GNULIB_defined_signal_blocking 1 ++# endif ++ ++/* Maximum signal number + 1. */ ++# ifndef NSIG ++# define NSIG 32 ++# endif ++ ++/* This code supports only 32 signals. */ ++# if !GNULIB_defined_verify_NSIG_constraint ++typedef int verify_NSIG_constraint[NSIG <= 32 ? 1 : -1]; ++# define GNULIB_defined_verify_NSIG_constraint 1 ++# endif ++ ++# endif ++ ++/* When also using extern inline, suppress the use of static inline in ++ standard headers of problematic Apple configurations, as Libc at ++ least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., ++ . ++ Perhaps Apple will fix this some day. */ ++#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ ++ && (defined __i386__ || defined __x86_64__)) ++# undef sigaddset ++# undef sigdelset ++# undef sigemptyset ++# undef sigfillset ++# undef sigismember ++#endif ++ ++/* Test whether a given signal is contained in a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigismember ++# endif ++# else ++_GL_FUNCDECL_SYS (sigismember, int, (const sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigismember, int, (const sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigismember); ++ ++/* Initialize a signal set to the empty set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigemptyset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigemptyset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigemptyset, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigemptyset); ++ ++/* Add a signal to a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigaddset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigaddset, int, (sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigaddset, int, (sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigaddset); ++ ++/* Remove a signal from a signal set. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigdelset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigdelset, int, (sigset_t *set, int sig) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigdelset, int, (sigset_t *set, int sig)); ++_GL_CXXALIASWARN (sigdelset); ++ ++/* Fill a signal set with all possible signals. */ ++# if 0 ++/* This function is defined as a macro on Mac OS X. */ ++# if defined __cplusplus && defined GNULIB_NAMESPACE ++# undef sigfillset ++# endif ++# else ++_GL_FUNCDECL_SYS (sigfillset, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigfillset, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigfillset); ++ ++/* Return the set of those blocked signals that are pending. */ ++# if !0 ++_GL_FUNCDECL_SYS (sigpending, int, (sigset_t *set) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (sigpending, int, (sigset_t *set)); ++_GL_CXXALIASWARN (sigpending); ++ ++/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET. ++ Then, if SET is not NULL, affect the current set of blocked signals by ++ combining it with *SET as indicated in OPERATION. ++ In this implementation, you are not allowed to change a signal handler ++ while the signal is blocked. */ ++# if !0 ++# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ ++# define SIG_SETMASK 1 /* blocked_set = *set; */ ++# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ ++_GL_FUNCDECL_SYS (sigprocmask, int, ++ (int operation, const sigset_t *set, sigset_t *old_set)); ++# endif ++_GL_CXXALIAS_SYS (sigprocmask, int, ++ (int operation, const sigset_t *set, sigset_t *old_set)); ++_GL_CXXALIASWARN (sigprocmask); ++ ++/* Install the handler FUNC for signal SIG, and return the previous ++ handler. */ ++# ifdef __cplusplus ++extern "C" { ++# endif ++# if !GNULIB_defined_function_taking_int_returning_void_t ++typedef void (*_gl_function_taking_int_returning_void_t) (int); ++# define GNULIB_defined_function_taking_int_returning_void_t 1 ++# endif ++# ifdef __cplusplus ++} ++# endif ++# if !0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define signal rpl_signal ++# endif ++_GL_FUNCDECL_RPL (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++_GL_CXXALIAS_RPL (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++# else ++_GL_CXXALIAS_SYS (signal, _gl_function_taking_int_returning_void_t, ++ (int sig, _gl_function_taking_int_returning_void_t func)); ++# endif ++_GL_CXXALIASWARN (signal); ++ ++# if !0 && GNULIB_defined_SIGPIPE ++/* Raise signal SIGPIPE. */ ++_GL_EXTERN_C int _gl_raise_SIGPIPE (void); ++# endif ++ ++#elif defined GNULIB_POSIXCHECK ++# undef sigaddset ++# if HAVE_RAW_DECL_SIGADDSET ++_GL_WARN_ON_USE (sigaddset, "sigaddset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigdelset ++# if HAVE_RAW_DECL_SIGDELSET ++_GL_WARN_ON_USE (sigdelset, "sigdelset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigemptyset ++# if HAVE_RAW_DECL_SIGEMPTYSET ++_GL_WARN_ON_USE (sigemptyset, "sigemptyset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigfillset ++# if HAVE_RAW_DECL_SIGFILLSET ++_GL_WARN_ON_USE (sigfillset, "sigfillset is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigismember ++# if HAVE_RAW_DECL_SIGISMEMBER ++_GL_WARN_ON_USE (sigismember, "sigismember is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigpending ++# if HAVE_RAW_DECL_SIGPENDING ++_GL_WARN_ON_USE (sigpending, "sigpending is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++# undef sigprocmask ++# if HAVE_RAW_DECL_SIGPROCMASK ++_GL_WARN_ON_USE (sigprocmask, "sigprocmask is unportable - " ++ "use the gnulib module sigprocmask for portability"); ++# endif ++#endif /* 1 */ ++ ++ ++#if 1 ++# if !0 ++ ++# if !0 ++ ++# if !GNULIB_defined_siginfo_types ++ ++/* Present to allow compilation, but unsupported by gnulib. */ ++union sigval ++{ ++ int sival_int; ++ void *sival_ptr; ++}; ++ ++/* Present to allow compilation, but unsupported by gnulib. */ ++struct siginfo_t ++{ ++ int si_signo; ++ int si_code; ++ int si_errno; ++ pid_t si_pid; ++ uid_t si_uid; ++ void *si_addr; ++ int si_status; ++ long si_band; ++ union sigval si_value; ++}; ++typedef struct siginfo_t siginfo_t; ++ ++# define GNULIB_defined_siginfo_types 1 ++# endif ++ ++# endif /* !0 */ ++ ++/* We assume that platforms which lack the sigaction() function also lack ++ the 'struct sigaction' type, and vice versa. */ ++ ++# if !GNULIB_defined_struct_sigaction ++ ++struct sigaction ++{ ++ union ++ { ++ void (*_sa_handler) (int); ++ /* Present to allow compilation, but unsupported by gnulib. POSIX ++ says that implementations may, but not must, make sa_sigaction ++ overlap with sa_handler, but we know of no implementation where ++ they do not overlap. */ ++ void (*_sa_sigaction) (int, siginfo_t *, void *); ++ } _sa_func; ++ sigset_t sa_mask; ++ /* Not all POSIX flags are supported. */ ++ int sa_flags; ++}; ++# define sa_handler _sa_func._sa_handler ++# define sa_sigaction _sa_func._sa_sigaction ++/* Unsupported flags are not present. */ ++# define SA_RESETHAND 1 ++# define SA_NODEFER 2 ++# define SA_RESTART 4 ++ ++# define GNULIB_defined_struct_sigaction 1 ++# endif ++ ++_GL_FUNCDECL_SYS (sigaction, int, (int, const struct sigaction *restrict, ++ struct sigaction *restrict)); ++ ++# elif !1 ++ ++# define sa_sigaction sa_handler ++ ++# endif /* !0, !1 */ ++ ++_GL_CXXALIAS_SYS (sigaction, int, (int, const struct sigaction *restrict, ++ struct sigaction *restrict)); ++_GL_CXXALIASWARN (sigaction); ++ ++#elif defined GNULIB_POSIXCHECK ++# undef sigaction ++# if HAVE_RAW_DECL_SIGACTION ++_GL_WARN_ON_USE (sigaction, "sigaction is unportable - " ++ "use the gnulib module sigaction for portability"); ++# endif ++#endif ++ ++/* Some systems don't have SA_NODEFER. */ ++#ifndef SA_NODEFER ++# define SA_NODEFER 0 ++#endif ++ ++ ++#endif /* _GL_GTPO_SIGNAL_H */ ++#endif /* _GL_GTPO_SIGNAL_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdbool.h gettext-0.19/gettext-tools/libgettextpo/msvc/stdbool.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdbool.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/stdbool.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,141 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Copyright (C) 2001-2003, 2006-2016 Free Software Foundation, Inc. ++ Written by Bruno Haible , 2001. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if (_MSC_VER >= 1800) ++/* just include the stock stdbool.h for Visual Studio 2013 and later */ ++# include <../include/stdbool.h> ++#else ++ ++#ifndef _GL_STDBOOL_H ++#define _GL_STDBOOL_H ++ ++/* ISO C 99 for platforms that lack it. */ ++ ++/* Usage suggestions: ++ ++ Programs that use should be aware of some limitations ++ and standards compliance issues. ++ ++ Standards compliance: ++ ++ - must be #included before 'bool', 'false', 'true' ++ can be used. ++ ++ - You cannot assume that sizeof (bool) == 1. ++ ++ - Programs should not undefine the macros bool, true, and false, ++ as C99 lists that as an "obsolescent feature". ++ ++ Limitations of this substitute, when used in a C89 environment: ++ ++ - must be #included before the '_Bool' type can be used. ++ ++ - You cannot assume that _Bool is a typedef; it might be a macro. ++ ++ - Bit-fields of type 'bool' are not supported. Portable code ++ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. ++ ++ - In C99, casts and automatic conversions to '_Bool' or 'bool' are ++ performed in such a way that every nonzero value gets converted ++ to 'true', and zero gets converted to 'false'. This doesn't work ++ with this substitute. With this substitute, only the values 0 and 1 ++ give the expected result when converted to _Bool' or 'bool'. ++ ++ - C99 allows the use of (_Bool)0.0 in constant expressions, but ++ this substitute cannot always provide this property. ++ ++ Also, it is suggested that programs use 'bool' rather than '_Bool'; ++ this isn't required, but 'bool' is more common. */ ++ ++ ++/* 7.16. Boolean type and values */ ++ ++/* BeOS already #defines false 0, true 1. We use the same ++ definitions below, but temporarily we have to #undef them. */ ++#if defined __BEOS__ && !defined __HAIKU__ ++# include /* defines bool but not _Bool */ ++# undef false ++# undef true ++#endif ++ ++#ifdef __cplusplus ++# if (_MSC_VER < 1600) ++# define _Bool bool ++# define bool bool ++# endif ++#else ++# if defined __BEOS__ && !defined __HAIKU__ ++ /* A compiler known to have 'bool'. */ ++ /* If the compiler already has both 'bool' and '_Bool', we can assume they ++ are the same types. */ ++# if !0 ++typedef bool _Bool; ++# endif ++# else ++# if !defined __GNUC__ ++ /* If 0: ++ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when ++ the built-in _Bool type is used. See ++ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html ++ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html ++ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html ++ Similar bugs are likely with other compilers as well; this file ++ wouldn't be used if was working. ++ So we override the _Bool type. ++ If !0: ++ Need to define _Bool ourselves. As 'signed char' or as an enum type? ++ Use of a typedef, with SunPRO C, leads to a stupid ++ "warning: _Bool is a keyword in ISO C99". ++ Use of an enum type, with IRIX cc, leads to a stupid ++ "warning(1185): enumerated type mixed with another type". ++ Even the existence of an enum type, without a typedef, ++ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. ++ The only benefit of the enum, debuggability, is not important ++ with these compilers. So use 'signed char' and no enum. */ ++# define _Bool signed char ++# else ++ /* With this compiler, trust the _Bool type if the compiler has it. */ ++# if !0 ++ /* For the sake of symbolic names in gdb, define true and false as ++ enum constants, not only as macros. ++ It is tempting to write ++ typedef enum { false = 0, true = 1 } _Bool; ++ so that gdb prints values of type 'bool' symbolically. But then ++ values of type '_Bool' might promote to 'int' or 'unsigned int' ++ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' ++ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the ++ enum; this ensures that '_Bool' promotes to 'int'. */ ++typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; ++# endif ++# endif ++# endif ++# define bool _Bool ++#endif ++ ++/* The other macros must be usable in preprocessor directives. */ ++#ifdef __cplusplus ++# define false false ++# define true true ++#else ++# define false 0 ++# define true 1 ++#endif ++ ++#define __bool_true_false_are_defined 1 ++ ++#endif /* _GL_STDBOOL_H */ ++#endif /* _MSC_VER < 1800 */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stddef.h gettext-0.19/gettext-tools/libgettextpo/msvc/stddef.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stddef.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/stddef.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,111 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for POSIX 2008 , for platforms that have issues. ++ ++ Copyright (C) 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake. */ ++ ++/* ++ * POSIX 2008 for platforms that have issues. ++ * ++ */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_wchar_t || defined __need_size_t \ ++ || defined __need_ptrdiff_t || defined __need_NULL \ ++ || defined __need_wint_t ++/* Special invocation convention inside gcc header files. In ++ particular, gcc provides a version of that blindly ++ redefines NULL even when __need_wint_t was defined, even though ++ wint_t is not normally provided by . Hence, we must ++ remember if special invocation has ever been used to obtain wint_t, ++ in which case we need to clean up NULL yet again. */ ++ ++# if !(defined _GL_GTPO_STDDEF_H && defined _GL_STDDEF_WINT_T) ++# ifdef __need_wint_t ++# define _GL_STDDEF_WINT_T ++# endif ++# include MSVC_INCLUDE(stddef.h) ++# endif ++ ++#else ++/* Normal invocation convention. */ ++ ++# ifndef _GL_GTPO_STDDEF_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++ ++# include MSVC_INCLUDE(stddef.h) ++ ++/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */ ++# if (0 \ ++ && (!defined _GL_GTPO_STDDEF_H || defined _GL_STDDEF_WINT_T)) ++# undef NULL ++# ifdef __cplusplus ++ /* ISO C++ says that the macro NULL must expand to an integer constant ++ expression, hence '((void *) 0)' is not allowed in C++. */ ++# if __GNUG__ >= 3 ++ /* GNU C++ has a __null macro that behaves like an integer ('int' or ++ 'long') but has the same size as a pointer. Use that, to avoid ++ warnings. */ ++# define NULL __null ++# else ++# define NULL 0L ++# endif ++# else ++# define NULL ((void *) 0) ++# endif ++# endif ++ ++# ifndef _GL_GTPO_STDDEF_H ++# define _GL_GTPO_STDDEF_H ++ ++/* Some platforms lack wchar_t. */ ++#if !1 ++# define wchar_t int ++#endif ++ ++/* Some platforms lack max_align_t. The check for _GCC_MAX_ALIGN_T is ++ a hack in case the configure-time test was done with g++ even though ++ we are currently compiling with gcc. */ ++#if ! (0 || defined _GCC_MAX_ALIGN_T) ++/* On the x86, the maximum storage alignment of double, long, etc. is 4, ++ but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8, ++ and the C11 standard allows this. Work around this problem by ++ using __alignof__ (which returns 8 for double) rather than _Alignof ++ (which returns 4), and align each union member accordingly. */ ++# ifdef __GNUC__ ++# define _GL_STDDEF_ALIGNAS(type) \ ++ __attribute__ ((__aligned__ (__alignof__ (type)))) ++# else ++# define _GL_STDDEF_ALIGNAS(type) /* */ ++# endif ++typedef union ++{ ++ char *__p _GL_STDDEF_ALIGNAS (char *); ++ double __d _GL_STDDEF_ALIGNAS (double); ++ long double __ld _GL_STDDEF_ALIGNAS (long double); ++ long int __i _GL_STDDEF_ALIGNAS (long int); ++} max_align_t; ++#endif ++ ++# endif /* _GL_GTPO_STDDEF_H */ ++# endif /* _GL_GTPO_STDDEF_H */ ++#endif /* __need_XXX */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdint.h gettext-0.19/gettext-tools/libgettextpo/msvc/stdint.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/stdint.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,661 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Copyright (C) 2001-2002, 2004-2016 Free Software Foundation, Inc. ++ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood. ++ This file is part of gnulib. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* ++ * ISO C 99 for platforms that lack it. ++ * ++ */ ++ ++#if (_MSC_VER >= 1700) ++/* just include the stock stdint.h for Visual Studio 2012 and later */ ++# include <../include/stdint.h> ++#else ++ ++#ifndef _GL_GTPO_STDINT_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* When including a system file that in turn includes , ++ use the system , not our substitute. This avoids ++ problems with (for example) VMS, whose includes ++ . */ ++#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H ++ ++/* On Android (Bionic libc), includes this file before ++ having defined 'time_t'. Therefore in this case avoid including ++ other system header files; just include the system's . ++ Ideally we should test __BIONIC__ here, but it is only defined after ++ has been included; hence test __ANDROID__ instead. */ ++#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H ++# if (_MSC_VER >= 1600) ++# include <../include/stdint.h> ++# else ++# include ++# endif ++#else ++ ++/* Get those types that are already defined in other system include ++ files, so that we can "#define int8_t signed char" below without ++ worrying about a later system include file containing a "typedef ++ signed char int8_t;" that will get messed up by our macro. Our ++ macros should all be consistent with the system versions, except ++ for the "fast" types and macros, which we recommend against using ++ in public interfaces due to compiler differences. */ ++ ++#if (_MSC_VER >= 1600) ++# if defined __sgi && ! defined __c99 ++ /* Bypass IRIX's if in C89 mode, since it merely annoys users ++ with "This header file is to be used only for c99 mode compilations" ++ diagnostics. */ ++# define __STDINT_H__ ++# endif ++ ++ /* Some pre-C++11 implementations need this. */ ++# ifdef __cplusplus ++# ifndef __STDC_CONSTANT_MACROS ++# define __STDC_CONSTANT_MACROS 1 ++# endif ++# ifndef __STDC_LIMIT_MACROS ++# define __STDC_LIMIT_MACROS 1 ++# endif ++# endif ++ ++ /* Other systems may have an incomplete or buggy . ++ Include it before , since any "#include " ++ in would reinclude us, skipping our contents because ++ _GL_GTPO_STDINT_H is defined. ++ The include_next requires a split double-inclusion guard. */ ++# if (_MSC_VER >= 1600) ++# include <../include/stdint.h> ++# else ++# include ++# endif ++#endif ++ ++#if ! defined _GL_GTPO_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H ++#define _GL_GTPO_STDINT_H ++ ++/* defines some of the stdint.h types as well, on glibc, ++ IRIX 6.5, and OpenBSD 3.8 (via ). ++ AIX 5.2 isn't needed and causes troubles. ++ Mac OS X 10.4.6 includes (which is us), but ++ relies on the system definitions, so include ++ after . */ ++#if 1 && ! defined _AIX ++# include ++#endif ++ ++/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, ++ LONG_MIN, LONG_MAX, ULONG_MAX. */ ++#include ++ ++#if 0 ++ /* In OpenBSD 3.8, includes , which defines ++ int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. ++ also defines intptr_t and uintptr_t. */ ++# include ++#elif 0 ++ /* Solaris 7 has the types except the *_fast*_t types, and ++ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ ++# include ++#endif ++ ++#if 0 && ! defined __BIT_TYPES_DEFINED__ ++ /* Linux libc4 >= 4.6.7 and libc5 have a that defines ++ int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is ++ included by . */ ++# include ++#endif ++ ++#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H ++ ++/* Minimum and maximum values for an integer type under the usual assumption. ++ Return an unspecified value if BITS == 0, adding a check to pacify ++ picky compilers. */ ++ ++#define _STDINT_MIN(signed, bits, zero) \ ++ ((signed) ? ~ _STDINT_MAX (signed, bits, zero) : (zero)) ++ ++#define _STDINT_MAX(signed, bits, zero) \ ++ (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1) ++ ++#if !GNULIB_defined_stdint_types ++ ++/* 7.18.1.1. Exact-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. */ ++ ++#undef int8_t ++#undef uint8_t ++typedef signed char gl_int8_t; ++typedef unsigned char gl_uint8_t; ++#define int8_t gl_int8_t ++#define uint8_t gl_uint8_t ++ ++#undef int16_t ++#undef uint16_t ++typedef short int gl_int16_t; ++typedef unsigned short int gl_uint16_t; ++#define int16_t gl_int16_t ++#define uint16_t gl_uint16_t ++ ++#undef int32_t ++#undef uint32_t ++typedef int gl_int32_t; ++typedef unsigned int gl_uint32_t; ++#define int32_t gl_int32_t ++#define uint32_t gl_uint32_t ++ ++/* If the system defines INT64_MAX, assume int64_t works. That way, ++ if the underlying platform defines int64_t to be a 64-bit long long ++ int, the code below won't mistakenly define it to be a 64-bit long ++ int, which would mess up C++ name mangling. We must use #ifdef ++ rather than #if, to avoid an error with HP-UX 10.20 cc. */ ++ ++#ifdef INT64_MAX ++# define GL_INT64_T ++#else ++/* Do not undefine int64_t if gnulib is not being used with 64-bit ++ types, since otherwise it breaks platforms like Tandem/NSK. */ ++# if LONG_MAX >> 31 >> 31 == 1 ++# undef int64_t ++typedef long int gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# elif defined _MSC_VER ++# undef int64_t ++typedef __int64 gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# elif 1 ++# undef int64_t ++typedef long long int gl_int64_t; ++# define int64_t gl_int64_t ++# define GL_INT64_T ++# endif ++#endif ++ ++#ifdef UINT64_MAX ++# define GL_UINT64_T ++#else ++# if ULONG_MAX >> 31 >> 31 >> 1 == 1 ++# undef uint64_t ++typedef unsigned long int gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# elif defined _MSC_VER ++# undef uint64_t ++typedef unsigned __int64 gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# elif 1 ++# undef uint64_t ++typedef unsigned long long int gl_uint64_t; ++# define uint64_t gl_uint64_t ++# define GL_UINT64_T ++# endif ++#endif ++ ++/* Avoid collision with Solaris 2.5.1 etc. */ ++#define _UINT8_T ++#define _UINT32_T ++#define _UINT64_T ++ ++ ++/* 7.18.1.2. Minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types ++ are the same as the corresponding N_t types. */ ++ ++#undef int_least8_t ++#undef uint_least8_t ++#undef int_least16_t ++#undef uint_least16_t ++#undef int_least32_t ++#undef uint_least32_t ++#undef int_least64_t ++#undef uint_least64_t ++#define int_least8_t int8_t ++#define uint_least8_t uint8_t ++#define int_least16_t int16_t ++#define uint_least16_t uint16_t ++#define int_least32_t int32_t ++#define uint_least32_t uint32_t ++#ifdef GL_INT64_T ++# define int_least64_t int64_t ++#endif ++#ifdef GL_UINT64_T ++# define uint_least64_t uint64_t ++#endif ++ ++/* 7.18.1.3. Fastest minimum-width integer types */ ++ ++/* Note: Other substitutes may define these types differently. ++ It is not recommended to use these types in public header files. */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types ++ are taken from the same list of types. The following code normally ++ uses types consistent with glibc, as that lessens the chance of ++ incompatibility with older GNU hosts. */ ++ ++#undef int_fast8_t ++#undef uint_fast8_t ++#undef int_fast16_t ++#undef uint_fast16_t ++#undef int_fast32_t ++#undef uint_fast32_t ++#undef int_fast64_t ++#undef uint_fast64_t ++typedef signed char gl_int_fast8_t; ++typedef unsigned char gl_uint_fast8_t; ++ ++#ifdef __sun ++/* Define types compatible with SunOS 5.10, so that code compiled under ++ earlier SunOS versions works with code compiled under SunOS 5.10. */ ++typedef int gl_int_fast32_t; ++typedef unsigned int gl_uint_fast32_t; ++#else ++typedef long int gl_int_fast32_t; ++typedef unsigned long int gl_uint_fast32_t; ++#endif ++typedef gl_int_fast32_t gl_int_fast16_t; ++typedef gl_uint_fast32_t gl_uint_fast16_t; ++ ++#define int_fast8_t gl_int_fast8_t ++#define uint_fast8_t gl_uint_fast8_t ++#define int_fast16_t gl_int_fast16_t ++#define uint_fast16_t gl_uint_fast16_t ++#define int_fast32_t gl_int_fast32_t ++#define uint_fast32_t gl_uint_fast32_t ++#ifdef GL_INT64_T ++# define int_fast64_t int64_t ++#endif ++#ifdef GL_UINT64_T ++# define uint_fast64_t uint64_t ++#endif ++ ++/* 7.18.1.4. Integer types capable of holding object pointers */ ++ ++/* kLIBC's stdint.h defines _INTPTR_T_DECLARED and needs its own ++ definitions of intptr_t and uintptr_t (which use int and unsigned) ++ to avoid clashes with declarations of system functions like sbrk. */ ++#ifndef _INTPTR_T_DECLARED ++#undef intptr_t ++#undef uintptr_t ++typedef long int gl_intptr_t; ++typedef unsigned long int gl_uintptr_t; ++#define intptr_t gl_intptr_t ++#define uintptr_t gl_uintptr_t ++#endif ++ ++/* 7.18.1.5. Greatest-width integer types */ ++ ++/* Note: These types are compiler dependent. It may be unwise to use them in ++ public header files. */ ++ ++/* If the system defines INTMAX_MAX, assume that intmax_t works, and ++ similarly for UINTMAX_MAX and uintmax_t. This avoids problems with ++ assuming one type where another is used by the system. */ ++ ++#ifndef INTMAX_MAX ++# undef INTMAX_C ++# undef intmax_t ++# if 1 && LONG_MAX >> 30 == 1 ++typedef long long int gl_intmax_t; ++# define intmax_t gl_intmax_t ++# elif defined GL_INT64_T ++# define intmax_t int64_t ++# else ++typedef long int gl_intmax_t; ++# define intmax_t gl_intmax_t ++# endif ++#endif ++ ++#ifndef UINTMAX_MAX ++# undef UINTMAX_C ++# undef uintmax_t ++# if 1 && ULONG_MAX >> 31 == 1 ++typedef unsigned long long int gl_uintmax_t; ++# define uintmax_t gl_uintmax_t ++# elif defined GL_UINT64_T ++# define uintmax_t uint64_t ++# else ++typedef unsigned long int gl_uintmax_t; ++# define uintmax_t gl_uintmax_t ++# endif ++#endif ++ ++/* Verify that intmax_t and uintmax_t have the same size. Too much code ++ breaks if this is not the case. If this check fails, the reason is likely ++ to be found in the autoconf macros. */ ++typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t) ++ ? 1 : -1]; ++ ++#define GNULIB_defined_stdint_types 1 ++#endif /* !GNULIB_defined_stdint_types */ ++ ++/* 7.18.2. Limits of specified-width integer types */ ++ ++/* 7.18.2.1. Limits of exact-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. */ ++ ++#undef INT8_MIN ++#undef INT8_MAX ++#undef UINT8_MAX ++#define INT8_MIN (~ INT8_MAX) ++#define INT8_MAX 127 ++#define UINT8_MAX 255 ++ ++#undef INT16_MIN ++#undef INT16_MAX ++#undef UINT16_MAX ++#define INT16_MIN (~ INT16_MAX) ++#define INT16_MAX 32767 ++#define UINT16_MAX 65535 ++ ++#undef INT32_MIN ++#undef INT32_MAX ++#undef UINT32_MAX ++#define INT32_MIN (~ INT32_MAX) ++#define INT32_MAX 2147483647 ++#define UINT32_MAX 4294967295U ++ ++#if defined GL_INT64_T && ! defined INT64_MAX ++/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0 ++ evaluates the latter incorrectly in preprocessor expressions. */ ++# define INT64_MIN (- INTMAX_C (1) << 63) ++# define INT64_MAX INTMAX_C (9223372036854775807) ++#endif ++ ++#if defined GL_UINT64_T && ! defined UINT64_MAX ++# define UINT64_MAX UINTMAX_C (18446744073709551615) ++#endif ++ ++/* 7.18.2.2. Limits of minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types ++ are the same as the corresponding N_t types. */ ++ ++#undef INT_LEAST8_MIN ++#undef INT_LEAST8_MAX ++#undef UINT_LEAST8_MAX ++#define INT_LEAST8_MIN INT8_MIN ++#define INT_LEAST8_MAX INT8_MAX ++#define UINT_LEAST8_MAX UINT8_MAX ++ ++#undef INT_LEAST16_MIN ++#undef INT_LEAST16_MAX ++#undef UINT_LEAST16_MAX ++#define INT_LEAST16_MIN INT16_MIN ++#define INT_LEAST16_MAX INT16_MAX ++#define UINT_LEAST16_MAX UINT16_MAX ++ ++#undef INT_LEAST32_MIN ++#undef INT_LEAST32_MAX ++#undef UINT_LEAST32_MAX ++#define INT_LEAST32_MIN INT32_MIN ++#define INT_LEAST32_MAX INT32_MAX ++#define UINT_LEAST32_MAX UINT32_MAX ++ ++#undef INT_LEAST64_MIN ++#undef INT_LEAST64_MAX ++#ifdef GL_INT64_T ++# define INT_LEAST64_MIN INT64_MIN ++# define INT_LEAST64_MAX INT64_MAX ++#endif ++ ++#undef UINT_LEAST64_MAX ++#ifdef GL_UINT64_T ++# define UINT_LEAST64_MAX UINT64_MAX ++#endif ++ ++/* 7.18.2.3. Limits of fastest minimum-width integer types */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types ++ are taken from the same list of types. */ ++ ++#undef INT_FAST8_MIN ++#undef INT_FAST8_MAX ++#undef UINT_FAST8_MAX ++#define INT_FAST8_MIN SCHAR_MIN ++#define INT_FAST8_MAX SCHAR_MAX ++#define UINT_FAST8_MAX UCHAR_MAX ++ ++#undef INT_FAST16_MIN ++#undef INT_FAST16_MAX ++#undef UINT_FAST16_MAX ++#define INT_FAST16_MIN INT_FAST32_MIN ++#define INT_FAST16_MAX INT_FAST32_MAX ++#define UINT_FAST16_MAX UINT_FAST32_MAX ++ ++#undef INT_FAST32_MIN ++#undef INT_FAST32_MAX ++#undef UINT_FAST32_MAX ++#ifdef __sun ++# define INT_FAST32_MIN INT_MIN ++# define INT_FAST32_MAX INT_MAX ++# define UINT_FAST32_MAX UINT_MAX ++#else ++# define INT_FAST32_MIN LONG_MIN ++# define INT_FAST32_MAX LONG_MAX ++# define UINT_FAST32_MAX ULONG_MAX ++#endif ++ ++#undef INT_FAST64_MIN ++#undef INT_FAST64_MAX ++#ifdef GL_INT64_T ++# define INT_FAST64_MIN INT64_MIN ++# define INT_FAST64_MAX INT64_MAX ++#endif ++ ++#undef UINT_FAST64_MAX ++#ifdef GL_UINT64_T ++# define UINT_FAST64_MAX UINT64_MAX ++#endif ++ ++/* 7.18.2.4. Limits of integer types capable of holding object pointers */ ++ ++#undef INTPTR_MIN ++#undef INTPTR_MAX ++#undef UINTPTR_MAX ++#define INTPTR_MIN LONG_MIN ++#define INTPTR_MAX LONG_MAX ++#define UINTPTR_MAX ULONG_MAX ++ ++/* 7.18.2.5. Limits of greatest-width integer types */ ++ ++#ifndef INTMAX_MAX ++# undef INTMAX_MIN ++# ifdef INT64_MAX ++# define INTMAX_MIN INT64_MIN ++# define INTMAX_MAX INT64_MAX ++# else ++# define INTMAX_MIN INT32_MIN ++# define INTMAX_MAX INT32_MAX ++# endif ++#endif ++ ++#ifndef UINTMAX_MAX ++# ifdef UINT64_MAX ++# define UINTMAX_MAX UINT64_MAX ++# else ++# define UINTMAX_MAX UINT32_MAX ++# endif ++#endif ++ ++/* 7.18.3. Limits of other integer types */ ++ ++/* ptrdiff_t limits */ ++#undef PTRDIFF_MIN ++#undef PTRDIFF_MAX ++#if 0 ++# ifdef _LP64 ++# define PTRDIFF_MIN _STDINT_MIN (1, 64, 0l) ++# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l) ++# else ++# define PTRDIFF_MIN _STDINT_MIN (1, 32, 0) ++# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0) ++# endif ++#else ++# ifdef _WIN64 ++# define PTRDIFF_MIN \ ++ _STDINT_MIN (1, 64, 0ll) ++# define PTRDIFF_MAX \ ++ _STDINT_MAX (1, 64, 0ll) ++# else ++# define PTRDIFF_MIN \ ++ _STDINT_MIN (1, 32, 0) ++# define PTRDIFF_MAX \ ++ _STDINT_MAX (1, 32, 0) ++# endif ++#endif ++ ++/* sig_atomic_t limits */ ++#undef SIG_ATOMIC_MIN ++#undef SIG_ATOMIC_MAX ++#define SIG_ATOMIC_MIN \ ++ _STDINT_MIN (1, 32, \ ++ 0) ++#define SIG_ATOMIC_MAX \ ++ _STDINT_MAX (1, 32, \ ++ 0) ++ ++ ++/* size_t limit */ ++#undef SIZE_MAX ++#if 0 ++# ifdef _LP64 ++# define SIZE_MAX _STDINT_MAX (0, 64, 0ul) ++# else ++# define SIZE_MAX _STDINT_MAX (0, 32, 0ul) ++# endif ++#else ++# ifdef _WIN64 ++# define SIZE_MAX _STDINT_MAX (0, 64, 0ull) ++# else ++# define SIZE_MAX _STDINT_MAX (0, 32, 0u) ++# endif ++#endif ++ ++/* wchar_t limits */ ++/* Get WCHAR_MIN, WCHAR_MAX. ++ This include is not on the top, above, because on OSF/1 4.0 we have a ++ sequence of nested includes ++ -> -> -> , and the latter includes ++ and assumes its types are already defined. */ ++#if 1 && ! (defined WCHAR_MIN && defined WCHAR_MAX) ++ /* BSD/OS 4.0.1 has a bug: , and must be ++ included before . */ ++# include ++# include ++# include ++# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H ++# include ++# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H ++#endif ++#undef WCHAR_MIN ++#undef WCHAR_MAX ++#define WCHAR_MIN \ ++ _STDINT_MIN (0, 16, 0) ++#define WCHAR_MAX \ ++ _STDINT_MAX (0, 16, 0) ++ ++/* wint_t limits */ ++#undef WINT_MIN ++#undef WINT_MAX ++#define WINT_MIN \ ++ _STDINT_MIN (0, 32, 0) ++#define WINT_MAX \ ++ _STDINT_MAX (0, 32, 0) ++ ++/* 7.18.4. Macros for integer constants */ ++ ++/* 7.18.4.1. Macros for minimum-width integer constants */ ++/* According to ISO C 99 Technical Corrigendum 1 */ ++ ++/* Here we assume a standard architecture where the hardware integer ++ types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */ ++ ++#undef INT8_C ++#undef UINT8_C ++#define INT8_C(x) x ++#define UINT8_C(x) x ++ ++#undef INT16_C ++#undef UINT16_C ++#define INT16_C(x) x ++#define UINT16_C(x) x ++ ++#undef INT32_C ++#undef UINT32_C ++#define INT32_C(x) x ++#define UINT32_C(x) x ## U ++ ++#undef INT64_C ++#undef UINT64_C ++#if LONG_MAX >> 31 >> 31 == 1 ++# define INT64_C(x) x##L ++#elif defined _MSC_VER ++# define INT64_C(x) x##i64 ++#elif 1 ++# define INT64_C(x) x##LL ++#endif ++#if ULONG_MAX >> 31 >> 31 >> 1 == 1 ++# define UINT64_C(x) x##UL ++#elif defined _MSC_VER ++# define UINT64_C(x) x##ui64 ++#elif 1 ++# define UINT64_C(x) x##ULL ++#endif ++ ++/* 7.18.4.2. Macros for greatest-width integer constants */ ++ ++#ifndef INTMAX_C ++# if 1 && LONG_MAX >> 30 == 1 ++# define INTMAX_C(x) x##LL ++# elif defined GL_INT64_T ++# define INTMAX_C(x) INT64_C(x) ++# else ++# define INTMAX_C(x) x##L ++# endif ++#endif ++ ++#ifndef UINTMAX_C ++# if 1 && ULONG_MAX >> 31 == 1 ++# define UINTMAX_C(x) x##ULL ++# elif defined GL_UINT64_T ++# define UINTMAX_C(x) UINT64_C(x) ++# else ++# define UINTMAX_C(x) x##UL ++# endif ++#endif ++ ++#endif /* _GL_GTPO_STDINT_H */ ++#endif /* !(defined __ANDROID__ && ...) */ ++#endif /* !defined _GL_GTPO_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */ ++#endif /* _MSC_VER < 1700 */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdio.h gettext-0.19/gettext-tools/libgettextpo/msvc/stdio.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdio.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/stdio.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1669 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 2004, 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H ++/* Special invocation convention: ++ - Inside glibc header files. ++ - On OSF/1 5.1 we have a sequence of nested includes ++ -> -> -> -> ++ -> -> -> . ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. */ ++ ++#include MSVC_INCLUDE(stdio.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_GTPO_STDIO_H ++ ++#define _GL_ALREADY_INCLUDING_STDIO_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(stdio.h) ++ ++#undef _GL_ALREADY_INCLUDING_STDIO_H ++ ++#ifndef _GL_GTPO_STDIO_H ++#define _GL_GTPO_STDIO_H ++ ++/* Get va_list. Needed on many systems, including glibc 2.8. */ ++#include ++ ++#include ++ ++/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8 ++ and eglibc 2.11.2. ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The __-protected variants of the attributes 'format' and 'printf' are ++ accepted by gcc versions 2.6.4 (effectively 2.7) and later. ++ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because ++ gnulib and libintl do '#define printf __printf__' when they override ++ the 'printf' function. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) ++#else ++# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_PRINTF ++ indicates to GCC that the function takes a format string and arguments, ++ where the format string directives are the ones standardized by ISO C99 ++ and POSIX. */ ++#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) ++# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument)) ++#else ++# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF, ++ except that it indicates to GCC that the supported format string directives ++ are the ones of the system printf(), rather than the ones standardized by ++ ISO C99 and POSIX. */ ++#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU ++# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument) ++#else ++# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_SCANF ++ indicates to GCC that the function takes a format string and arguments, ++ where the format string directives are the ones standardized by ISO C99 ++ and POSIX. */ ++#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) ++# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument)) ++#else ++# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) ++#endif ++ ++/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF, ++ except that it indicates to GCC that the supported format string directives ++ are the ones of the system scanf(), rather than the ones standardized by ++ ISO C99 and POSIX. */ ++#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \ ++ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument)) ++ ++/* Solaris 10 declares renameat in , not in . */ ++/* But in any case avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __sun \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Macros for stringification. */ ++#define _GL_STDIO_STRINGIZE(token) #token ++#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token) ++ ++/* When also using extern inline, suppress the use of static inline in ++ standard headers of problematic Apple configurations, as Libc at ++ least through Libc-825.26 (2013-04-09) mishandles it; see, e.g., ++ . ++ Perhaps Apple will fix this some day. */ ++#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \ ++ && defined __GNUC__ && defined __STDC__) ++# undef putc_unlocked ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dprintf rpl_dprintf ++# endif ++_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (dprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef dprintf ++# if HAVE_RAW_DECL_DPRINTF ++_GL_WARN_ON_USE (dprintf, "dprintf is unportable - " ++ "use gnulib module dprintf for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Close STREAM and its underlying file descriptor. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fclose rpl_fclose ++# endif ++_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fclose, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fclose, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fclose); ++#elif defined GNULIB_POSIXCHECK ++# undef fclose ++/* Assume fclose is always declared. */ ++_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - " ++ "use gnulib module fclose for portable POSIX compliance"); ++#endif ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fdopen ++# define fdopen rpl_fdopen ++# endif ++_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode)); ++# else ++_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode)); ++# endif ++_GL_CXXALIASWARN (fdopen); ++#elif defined GNULIB_POSIXCHECK ++# undef fdopen ++/* Assume fdopen is always declared. */ ++_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module fdopen for portability"); ++#endif ++ ++#if 0 ++/* Flush all pending data on STREAM according to POSIX rules. Both ++ output and seekable input streams are supported. ++ Note! LOSS OF DATA can occur if fflush is applied on an input stream ++ that is _not_seekable_ or on an update stream that is _not_seekable_ ++ and in which the most recent operation was input. Seekability can ++ be tested with lseek(fileno(fp),0,SEEK_CUR). */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fflush rpl_fflush ++# endif ++_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream)); ++_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream)); ++# else ++_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream)); ++# endif ++_GL_CXXALIASWARN (fflush); ++#elif defined GNULIB_POSIXCHECK ++# undef fflush ++/* Assume fflush is always declared. */ ++_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - " ++ "use gnulib module fflush for portable POSIX compliance"); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fgetc ++# define fgetc rpl_fgetc ++# endif ++_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fgetc); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fgets ++# define fgets rpl_fgets ++# endif ++_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream) ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fgets); ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fopen ++# define fopen rpl_fopen ++# endif ++_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode)); ++# else ++_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode)); ++# endif ++_GL_CXXALIASWARN (fopen); ++#elif defined GNULIB_POSIXCHECK ++# undef fopen ++/* Assume fopen is always declared. */ ++_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module fopen for portability"); ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fprintf rpl_fprintf ++# endif ++# define GNULIB_overrides_fprintf 1 ++# if 0 || 0 ++_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# else ++_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (fprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_fprintf ++# undef fprintf ++# endif ++/* Assume fprintf is always declared. */ ++_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - " ++ "use gnulib module fprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++/* Discard all pending buffered I/O data on STREAM. ++ STREAM must not be wide-character oriented. ++ When discarding pending output, the file position is set back to where it ++ was before the write calls. When discarding pending input, the file ++ position is advanced to match the end of the previously read input. ++ Return 0 if successful. Upon error, return -1 and set errno. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define fpurge rpl_fpurge ++# endif ++_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream)); ++# endif ++_GL_CXXALIASWARN (fpurge); ++#elif defined GNULIB_POSIXCHECK ++# undef fpurge ++# if HAVE_RAW_DECL_FPURGE ++_GL_WARN_ON_USE (fpurge, "fpurge is not always present - " ++ "use gnulib module fpurge for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fputc ++# define fputc rpl_fputc ++# endif ++_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fputc); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fputs ++# define fputs rpl_fputs ++# endif ++_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fputs); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fread ++# define fread rpl_fread ++# endif ++_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream) ++ _GL_ARG_NONNULL ((4))); ++_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (fread); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef freopen ++# define freopen rpl_freopen ++# endif ++_GL_FUNCDECL_RPL (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (freopen, FILE *, ++ (const char *filename, const char *mode, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (freopen); ++#elif defined GNULIB_POSIXCHECK ++# undef freopen ++/* Assume freopen is always declared. */ ++_GL_WARN_ON_USE (freopen, ++ "freopen on native Windows platforms is not POSIX compliant - " ++ "use gnulib module freopen for portability"); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fscanf ++# define fscanf rpl_fscanf ++# endif ++_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (fscanf); ++#endif ++ ++ ++/* Set up the following warnings, based on which modules are in use. ++ GNU Coding Standards discourage the use of fseek, since it imposes ++ an arbitrary limitation on some 32-bit hosts. Remember that the ++ fseek module depends on the fseeko module, so we only have three ++ cases to consider: ++ ++ 1. The developer is not using either module. Issue a warning under ++ GNULIB_POSIXCHECK for both functions, to remind them that both ++ functions have bugs on some systems. _GL_NO_LARGE_FILES has no ++ impact on this warning. ++ ++ 2. The developer is using both modules. They may be unaware of the ++ arbitrary limitations of fseek, so issue a warning under ++ GNULIB_POSIXCHECK. On the other hand, they may be using both ++ modules intentionally, so the developer can define ++ _GL_NO_LARGE_FILES in the compilation units where the use of fseek ++ is safe, to silence the warning. ++ ++ 3. The developer is using the fseeko module, but not fseek. Gnulib ++ guarantees that fseek will still work around platform bugs in that ++ case, but we presume that the developer is aware of the pitfalls of ++ fseek and was trying to avoid it, so issue a warning even when ++ GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be ++ defined to silence the warning in particular compilation units. ++ In C++ compilations with GNULIB_NAMESPACE, in order to avoid that ++ fseek gets defined as a macro, it is recommended that the developer ++ uses the fseek module, even if he is not calling the fseek function. ++ ++ Most gnulib clients that perform stream operations should fall into ++ category 3. */ ++ ++#if 0 ++# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES ++# define _GL_FSEEK_WARN /* Category 2, above. */ ++# undef fseek ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fseek ++# define fseek rpl_fseek ++# endif ++_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence)); ++# else ++_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence)); ++# endif ++_GL_CXXALIASWARN (fseek); ++#endif ++ ++#if 0 ++# if !0 && !defined _GL_NO_LARGE_FILES ++# define _GL_FSEEK_WARN /* Category 3, above. */ ++# undef fseek ++# endif ++# if 0 ++/* Provide an fseeko function that is aware of a preceding fflush(), and which ++ detects pipes. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fseeko ++# define fseeko rpl_fseeko ++# endif ++_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)); ++# endif ++_GL_CXXALIASWARN (fseeko); ++#elif defined GNULIB_POSIXCHECK ++# define _GL_FSEEK_WARN /* Category 1, above. */ ++# undef fseek ++# undef fseeko ++# if HAVE_RAW_DECL_FSEEKO ++_GL_WARN_ON_USE (fseeko, "fseeko is unportable - " ++ "use gnulib module fseeko for portability"); ++# endif ++#endif ++ ++#ifdef _GL_FSEEK_WARN ++# undef _GL_FSEEK_WARN ++/* Here, either fseek is undefined (but C89 guarantees that it is ++ declared), or it is defined as rpl_fseek (declared above). */ ++_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB " ++ "on 32-bit platforms - " ++ "use fseeko function for handling of large files"); ++#endif ++ ++ ++/* ftell, ftello. See the comments on fseek/fseeko. */ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES ++# define _GL_FTELL_WARN /* Category 2, above. */ ++# undef ftell ++# endif ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftell ++# define ftell rpl_ftell ++# endif ++_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (ftell, long, (FILE *fp)); ++# else ++_GL_CXXALIAS_SYS (ftell, long, (FILE *fp)); ++# endif ++_GL_CXXALIASWARN (ftell); ++#endif ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if !IN_GETTEXT_TOOLS_GNULIB_TESTS && !defined _GL_NO_LARGE_FILES ++# define _GL_FTELL_WARN /* Category 3, above. */ ++# undef ftell ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftello ++# define ftello rpl_ftello ++# endif ++_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp)); ++# else ++# if ! 0 ++_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp)); ++# endif ++_GL_CXXALIASWARN (ftello); ++#elif defined GNULIB_POSIXCHECK ++# define _GL_FTELL_WARN /* Category 1, above. */ ++# undef ftell ++# undef ftello ++# if HAVE_RAW_DECL_FTELLO ++_GL_WARN_ON_USE (ftello, "ftello is unportable - " ++ "use gnulib module ftello for portability"); ++# endif ++#endif ++ ++#ifdef _GL_FTELL_WARN ++# undef _GL_FTELL_WARN ++/* Here, either ftell is undefined (but C89 guarantees that it is ++ declared), or it is defined as rpl_ftell (declared above). */ ++_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB " ++ "on 32-bit platforms - " ++ "use ftello function for handling of large files"); ++#endif ++ ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fwrite ++# define fwrite rpl_fwrite ++# endif ++_GL_FUNCDECL_RPL (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream) ++ _GL_ARG_NONNULL ((1, 4))); ++_GL_CXXALIAS_RPL (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (fwrite, size_t, ++ (const void *ptr, size_t s, size_t n, FILE *stream)); ++ ++/* Work around bug 11959 when fortifying glibc 2.4 through 2.15 ++ , ++ which sometimes causes an unwanted diagnostic for fwrite calls. ++ This affects only function declaration attributes under certain ++ versions of gcc and clang, and is not needed for C++. */ ++# if (0 < __USE_FORTIFY_LEVEL \ ++ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \ ++ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \ ++ && !defined __cplusplus) ++# undef fwrite ++# undef fwrite_unlocked ++extern size_t __REDIRECT (rpl_fwrite, ++ (const void *__restrict, size_t, size_t, ++ FILE *__restrict), ++ fwrite); ++extern size_t __REDIRECT (rpl_fwrite_unlocked, ++ (const void *__restrict, size_t, size_t, ++ FILE *__restrict), ++ fwrite_unlocked); ++# define fwrite rpl_fwrite ++# define fwrite_unlocked rpl_fwrite_unlocked ++# endif ++# endif ++_GL_CXXALIASWARN (fwrite); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getc ++# define getc rpl_fgetc ++# endif ++_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (getc, int, (FILE *stream)); ++# endif ++_GL_CXXALIASWARN (getc); ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getchar ++# define getchar rpl_getchar ++# endif ++_GL_FUNCDECL_RPL (getchar, int, (void)); ++_GL_CXXALIAS_RPL (getchar, int, (void)); ++# else ++_GL_CXXALIAS_SYS (getchar, int, (void)); ++# endif ++_GL_CXXALIASWARN (getchar); ++#endif ++ ++#if 1 ++/* Read input, up to (and including) the next occurrence of DELIMITER, from ++ STREAM, store it in *LINEPTR (and NUL-terminate it). ++ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE ++ bytes of space. It is realloc'd as necessary. ++ Return the number of bytes read and stored at *LINEPTR (not including the ++ NUL terminator), or -1 on error or EOF. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdelim ++# define getdelim rpl_getdelim ++# endif ++_GL_FUNCDECL_RPL (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 4))); ++_GL_CXXALIAS_RPL (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 4))); ++# endif ++_GL_CXXALIAS_SYS (getdelim, ssize_t, ++ (char **lineptr, size_t *linesize, int delimiter, ++ FILE *stream)); ++# endif ++_GL_CXXALIASWARN (getdelim); ++#elif defined GNULIB_POSIXCHECK ++# undef getdelim ++# if HAVE_RAW_DECL_GETDELIM ++_GL_WARN_ON_USE (getdelim, "getdelim is unportable - " ++ "use gnulib module getdelim for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Read a line, up to (and including) the next newline, from STREAM, store it ++ in *LINEPTR (and NUL-terminate it). ++ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE ++ bytes of space. It is realloc'd as necessary. ++ Return the number of bytes read and stored at *LINEPTR (not including the ++ NUL terminator), or -1 on error or EOF. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getline ++# define getline rpl_getline ++# endif ++_GL_FUNCDECL_RPL (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++_GL_CXXALIAS_RPL (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (getline, ssize_t, ++ (char **lineptr, size_t *linesize, FILE *stream)); ++# endif ++# if 0 ++_GL_CXXALIASWARN (getline); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef getline ++# if HAVE_RAW_DECL_GETLINE ++_GL_WARN_ON_USE (getline, "getline is unportable - " ++ "use gnulib module getline for portability"); ++# endif ++#endif ++ ++/* It is very rare that the developer ever has full control of stdin, ++ so any use of gets warrants an unconditional warning; besides, C11 ++ removed it. */ ++#undef gets ++#if HAVE_RAW_DECL_GETS && !defined __cplusplus ++_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ++#endif ++ ++#if 0 || 0 ++struct obstack; ++/* Grow an obstack with formatted output. Return the number of ++ bytes added to OBS. No trailing nul byte is added, and the ++ object should be closed with obstack_finish before use. Upon ++ memory allocation error, call obstack_alloc_failed_handler. Upon ++ other error, return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define obstack_printf rpl_obstack_printf ++# endif ++_GL_FUNCDECL_RPL (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (obstack_printf, int, ++ (struct obstack *obs, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (obstack_printf); ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define obstack_vprintf rpl_obstack_vprintf ++# endif ++_GL_FUNCDECL_RPL (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (obstack_vprintf, int, ++ (struct obstack *obs, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (obstack_vprintf); ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (pclose, int, (FILE *stream)); ++_GL_CXXALIASWARN (pclose); ++#elif defined GNULIB_POSIXCHECK ++# undef pclose ++# if HAVE_RAW_DECL_PCLOSE ++_GL_WARN_ON_USE (pclose, "pclose is unportable - " ++ "use gnulib module pclose for more portability"); ++# endif ++#endif ++ ++#if 0 ++/* Print a message to standard error, describing the value of ERRNO, ++ (if STRING is not NULL and not empty) prefixed with STRING and ": ", ++ and terminated with a newline. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define perror rpl_perror ++# endif ++_GL_FUNCDECL_RPL (perror, void, (const char *string)); ++_GL_CXXALIAS_RPL (perror, void, (const char *string)); ++# else ++_GL_CXXALIAS_SYS (perror, void, (const char *string)); ++# endif ++_GL_CXXALIASWARN (perror); ++#elif defined GNULIB_POSIXCHECK ++# undef perror ++/* Assume perror is always declared. */ ++_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - " ++ "use gnulib module perror for portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef popen ++# define popen rpl_popen ++# endif ++_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode)); ++# endif ++_GL_CXXALIASWARN (popen); ++#elif defined GNULIB_POSIXCHECK ++# undef popen ++# if HAVE_RAW_DECL_POPEN ++_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - " ++ "use gnulib module popen or pipe for more portability"); ++# endif ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if defined __GNUC__ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++/* Don't break __attribute__((format(printf,M,N))). */ ++# define printf __printf__ ++# endif ++# if 0 || 0 ++_GL_FUNCDECL_RPL_1 (__printf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) ++ _GL_ARG_NONNULL ((1))); ++# else ++_GL_FUNCDECL_RPL_1 (__printf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf)) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...)); ++# else ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define printf rpl_printf ++# endif ++_GL_FUNCDECL_RPL (printf, int, ++ (const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (printf, int, (const char *format, ...)); ++# endif ++# define GNULIB_overrides_printf 1 ++# else ++_GL_CXXALIAS_SYS (printf, int, (const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (printf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_printf ++# undef printf ++# endif ++/* Assume printf is always declared. */ ++_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - " ++ "use gnulib module printf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putc ++# define putc rpl_fputc ++# endif ++_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream)); ++# else ++_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream)); ++# endif ++_GL_CXXALIASWARN (putc); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putchar ++# define putchar rpl_putchar ++# endif ++_GL_FUNCDECL_RPL (putchar, int, (int c)); ++_GL_CXXALIAS_RPL (putchar, int, (int c)); ++# else ++_GL_CXXALIAS_SYS (putchar, int, (int c)); ++# endif ++_GL_CXXALIASWARN (putchar); ++#endif ++ ++#if 1 ++# if 1 && (0 || 1) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef puts ++# define puts rpl_puts ++# endif ++_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (puts, int, (const char *string)); ++# else ++_GL_CXXALIAS_SYS (puts, int, (const char *string)); ++# endif ++_GL_CXXALIASWARN (puts); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef remove ++# define remove rpl_remove ++# endif ++_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (remove, int, (const char *name)); ++# else ++_GL_CXXALIAS_SYS (remove, int, (const char *name)); ++# endif ++_GL_CXXALIASWARN (remove); ++#elif defined GNULIB_POSIXCHECK ++# undef remove ++/* Assume remove is always declared. */ ++_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - " ++ "use gnulib module remove for more portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef rename ++# define rename rpl_rename ++# endif ++_GL_FUNCDECL_RPL (rename, int, ++ (const char *old_filename, const char *new_filename) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (rename, int, ++ (const char *old_filename, const char *new_filename)); ++# else ++_GL_CXXALIAS_SYS (rename, int, ++ (const char *old_filename, const char *new_filename)); ++# endif ++_GL_CXXALIASWARN (rename); ++#elif defined GNULIB_POSIXCHECK ++# undef rename ++/* Assume rename is always declared. */ ++_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - " ++ "use gnulib module rename for more portability"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef renameat ++# define renameat rpl_renameat ++# endif ++_GL_FUNCDECL_RPL (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (renameat, int, ++ (int fd1, char const *file1, int fd2, char const *file2)); ++# endif ++_GL_CXXALIASWARN (renameat); ++#elif defined GNULIB_POSIXCHECK ++# undef renameat ++# if HAVE_RAW_DECL_RENAMEAT ++_GL_WARN_ON_USE (renameat, "renameat is not portable - " ++ "use gnulib module renameat for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 0 && 0 ++# if defined __GNUC__ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef scanf ++/* Don't break __attribute__((format(scanf,M,N))). */ ++# define scanf __scanf__ ++# endif ++_GL_FUNCDECL_RPL_1 (__scanf__, int, ++ (const char *format, ...) ++ __asm__ ("" ++ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf)) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...)); ++# else ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef scanf ++# define scanf rpl_scanf ++# endif ++_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...)); ++# endif ++# else ++_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (scanf); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define snprintf rpl_snprintf ++# endif ++_GL_FUNCDECL_RPL (snprintf, int, ++ (char *str, size_t size, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) ++ _GL_ARG_NONNULL ((3))); ++_GL_CXXALIAS_RPL (snprintf, int, ++ (char *str, size_t size, const char *format, ...)); ++# else ++# if (_MSC_VER < 1900) ++_GL_FUNCDECL_SYS (snprintf, int, ++ (char *str, size_t size, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4) ++ _GL_ARG_NONNULL ((3))); ++# endif ++_GL_CXXALIAS_SYS (snprintf, int, ++ (char *str, size_t size, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (snprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef snprintf ++# if HAVE_RAW_DECL_SNPRINTF ++_GL_WARN_ON_USE (snprintf, "snprintf is unportable - " ++ "use gnulib module snprintf for portability"); ++# endif ++#endif ++ ++/* Some people would argue that all sprintf uses should be warned about ++ (for example, OpenBSD issues a link warning for it), ++ since it can cause security holes due to buffer overruns. ++ However, we believe that sprintf can be used safely, and is more ++ efficient than snprintf in those safe cases; and as proof of our ++ belief, we use sprintf in several gnulib modules. So this header ++ intentionally avoids adding a warning to sprintf except when ++ GNULIB_POSIXCHECK is defined. */ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define sprintf rpl_sprintf ++# endif ++_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...)); ++# else ++_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (sprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef sprintf ++/* Assume sprintf is always declared. */ ++_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - " ++ "use gnulib module sprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define tmpfile rpl_tmpfile ++# endif ++_GL_FUNCDECL_RPL (tmpfile, FILE *, (void)); ++_GL_CXXALIAS_RPL (tmpfile, FILE *, (void)); ++# else ++_GL_CXXALIAS_SYS (tmpfile, FILE *, (void)); ++# endif ++_GL_CXXALIASWARN (tmpfile); ++#elif defined GNULIB_POSIXCHECK ++# undef tmpfile ++# if HAVE_RAW_DECL_TMPFILE ++_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - " ++ "use gnulib module tmpfile for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Write formatted output to a string dynamically allocated with malloc(). ++ If the memory allocation succeeds, store the address of the string in ++ *RESULT and return the number of resulting bytes, excluding the trailing ++ NUL. Upon memory allocation error, or some other error, return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define asprintf rpl_asprintf ++# endif ++_GL_FUNCDECL_RPL (asprintf, int, ++ (char **result, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (asprintf, int, ++ (char **result, const char *format, ...)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (asprintf, int, ++ (char **result, const char *format, ...) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (asprintf, int, ++ (char **result, const char *format, ...)); ++# endif ++_GL_CXXALIASWARN (asprintf); ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vasprintf rpl_vasprintf ++# endif ++_GL_FUNCDECL_RPL (vasprintf, int, ++ (char **result, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vasprintf, int, ++ (char **result, const char *format, va_list args)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (vasprintf, int, ++ (char **result, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (vasprintf, int, ++ (char **result, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vasprintf); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vdprintf rpl_vdprintf ++# endif ++_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((2))); ++# endif ++/* Need to cast, because on Solaris, the third parameter will likely be ++ __va_list args. */ ++_GL_CXXALIAS_SYS_CAST (vdprintf, int, ++ (int fd, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vdprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vdprintf ++# if HAVE_RAW_DECL_VDPRINTF ++_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - " ++ "use gnulib module vdprintf for portability"); ++# endif ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vfprintf rpl_vfprintf ++# endif ++# define GNULIB_overrides_vfprintf 1 ++# if 0 ++_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# else ++_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the third parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vfprintf, int, ++ (FILE *fp, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vfprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_vfprintf ++# undef vfprintf ++# endif ++/* Assume vfprintf is always declared. */ ++_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - " ++ "use gnulib module vfprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef vfscanf ++# define vfscanf rpl_vfscanf ++# endif ++_GL_FUNCDECL_RPL (vfscanf, int, ++ (FILE *stream, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vfscanf, int, ++ (FILE *stream, const char *format, va_list args)); ++# else ++_GL_CXXALIAS_SYS (vfscanf, int, ++ (FILE *stream, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vfscanf); ++#endif ++ ++#if 0 || 1 ++# if (0 && 0) \ ++ || (1 && 1 && (0 || 1)) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vprintf rpl_vprintf ++# endif ++# define GNULIB_overrides_vprintf 1 ++# if 0 || 0 ++_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0) ++ _GL_ARG_NONNULL ((1))); ++# else ++_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the second parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vprintf); ++#endif ++#if !0 && defined GNULIB_POSIXCHECK ++# if !GNULIB_overrides_vprintf ++# undef vprintf ++# endif ++/* Assume vprintf is always declared. */ ++_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - " ++ "use gnulib module vprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#if 0 ++# if 0 && 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef vscanf ++# define vscanf rpl_vscanf ++# endif ++_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args)); ++# else ++_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vscanf); ++#endif ++ ++#if 1 ++# if (_MSC_VER < 1900) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vsnprintf rpl_vsnprintf ++# endif ++_GL_FUNCDECL_RPL (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) ++ _GL_ARG_NONNULL ((3))); ++_GL_CXXALIAS_RPL (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) ++ _GL_ARG_NONNULL ((3))); ++# endif ++_GL_CXXALIAS_SYS (vsnprintf, int, ++ (char *str, size_t size, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vsnprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vsnprintf ++# if HAVE_RAW_DECL_VSNPRINTF ++_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - " ++ "use gnulib module vsnprintf for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define vsprintf rpl_vsprintf ++# endif ++_GL_FUNCDECL_RPL (vsprintf, int, ++ (char *str, const char *format, va_list args) ++ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (vsprintf, int, ++ (char *str, const char *format, va_list args)); ++# else ++/* Need to cast, because on Solaris, the third parameter is ++ __va_list args ++ and GCC's fixincludes did not change this to __gnuc_va_list. */ ++_GL_CXXALIAS_SYS_CAST (vsprintf, int, ++ (char *str, const char *format, va_list args)); ++# endif ++_GL_CXXALIASWARN (vsprintf); ++#elif defined GNULIB_POSIXCHECK ++# undef vsprintf ++/* Assume vsprintf is always declared. */ ++_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - " ++ "use gnulib module vsprintf-posix for portable " ++ "POSIX compliance"); ++#endif ++ ++#endif /* _GL_GTPO_STDIO_H */ ++#endif /* _GL_GTPO_STDIO_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdlib.h gettext-0.19/gettext-tools/libgettextpo/msvc/stdlib.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/stdlib.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/stdlib.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1299 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 1995, 2001-2004, 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc ++/* Special invocation conventions inside some gnulib header files, ++ and inside some glibc header files, respectively. */ ++ ++#include MSVC_INCLUDE(stdlib.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_GTPO_STDLIB_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(stdlib.h) ++ ++#ifndef _GL_GTPO_STDLIB_H ++#define _GL_GTPO_STDLIB_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* MirBSD 10 defines WEXITSTATUS in , not in . */ ++#if 0 && !defined WEXITSTATUS ++# include ++#endif ++ ++/* Solaris declares getloadavg() in . */ ++#if (0 || defined GNULIB_POSIXCHECK) && 0 ++# include ++#endif ++ ++/* Native Windows platforms declare mktemp() in . */ ++#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++#if 0 ++ ++/* OSF/1 5.1 declares 'struct random_data' in , which is included ++ from if _REENTRANT is defined. Include it whenever we need ++ 'struct random_data'. */ ++# if 1 ++# include ++# endif ++ ++# if !1 || 0 || !1 ++# include ++# endif ++ ++# if !1 ++/* Define 'struct random_data'. ++ But allow multiple gnulib generated replacements to coexist. */ ++# if !GNULIB_defined_struct_random_data ++struct random_data ++{ ++ int32_t *fptr; /* Front pointer. */ ++ int32_t *rptr; /* Rear pointer. */ ++ int32_t *state; /* Array of state values. */ ++ int rand_type; /* Type of random number generator. */ ++ int rand_deg; /* Degree of random number generator. */ ++ int rand_sep; /* Distance between front and rear. */ ++ int32_t *end_ptr; /* Pointer behind state table. */ ++}; ++# define GNULIB_defined_struct_random_data 1 ++# endif ++# endif ++#endif ++ ++#if (0 || 0 || 0 || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++/* On Mac OS X 10.3, only declares mkstemp. */ ++/* On Mac OS X 10.5, only declares mkstemps. */ ++/* On Cygwin 1.7.1, only declares getsubopt. */ ++/* But avoid namespace pollution on glibc systems and native Windows. */ ++# include ++#endif ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The definition of _Noreturn is copied here. */ ++#if !defined _Noreturn && __STDC_VERSION__ < 201112 ++# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ ++ || 0x5110 <= __SUNPRO_C) ++# define _Noreturn __attribute__ ((__noreturn__)) ++# elif 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn ++# endif ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Some systems do not define EXIT_*, despite otherwise supporting C89. */ ++#ifndef EXIT_SUCCESS ++# define EXIT_SUCCESS 0 ++#endif ++/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere ++ with proper operation of xargs. */ ++#ifndef EXIT_FAILURE ++# define EXIT_FAILURE 1 ++#elif EXIT_FAILURE != 1 ++# undef EXIT_FAILURE ++# define EXIT_FAILURE 1 ++#endif ++ ++ ++#if 0 ++/* Terminate the current process with the given return code, without running ++ the 'atexit' handlers. */ ++# if !1 ++_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status)); ++# endif ++_GL_CXXALIAS_SYS (_Exit, void, (int status)); ++_GL_CXXALIASWARN (_Exit); ++#elif defined GNULIB_POSIXCHECK ++# undef _Exit ++# if HAVE_RAW_DECL__EXIT ++_GL_WARN_ON_USE (_Exit, "_Exit is unportable - " ++ "use gnulib module _Exit for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Parse a signed decimal integer. ++ Returns the value of the integer. Errors are not detected. */ ++# if !1 ++_GL_FUNCDECL_SYS (atoll, long long, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (atoll, long long, (const char *string)); ++_GL_CXXALIASWARN (atoll); ++#elif defined GNULIB_POSIXCHECK ++# undef atoll ++# if HAVE_RAW_DECL_ATOLL ++_GL_WARN_ON_USE (atoll, "atoll is unportable - " ++ "use gnulib module atoll for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef calloc ++# define calloc rpl_calloc ++# endif ++_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size)); ++_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size)); ++# else ++_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size)); ++# endif ++_GL_CXXALIASWARN (calloc); ++#elif defined GNULIB_POSIXCHECK ++# undef calloc ++/* Assume calloc is always declared. */ ++_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - " ++ "use gnulib module calloc-posix for portability"); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define canonicalize_file_name rpl_canonicalize_file_name ++# endif ++_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name)); ++# endif ++_GL_CXXALIASWARN (canonicalize_file_name); ++#elif defined GNULIB_POSIXCHECK ++# undef canonicalize_file_name ++# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME ++_GL_WARN_ON_USE (canonicalize_file_name, ++ "canonicalize_file_name is unportable - " ++ "use gnulib module canonicalize-lgpl for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Store max(NELEM,3) load average numbers in LOADAVG[]. ++ The three numbers are the load average of the last 1 minute, the last 5 ++ minutes, and the last 15 minutes, respectively. ++ LOADAVG is an array of NELEM numbers. */ ++# if !1 ++_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem)); ++_GL_CXXALIASWARN (getloadavg); ++#elif defined GNULIB_POSIXCHECK ++# undef getloadavg ++# if HAVE_RAW_DECL_GETLOADAVG ++_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - " ++ "use gnulib module getloadavg for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Assuming *OPTIONP is a comma separated list of elements of the form ++ "token" or "token=value", getsubopt parses the first of these elements. ++ If the first element refers to a "token" that is member of the given ++ NULL-terminated array of tokens: ++ - It replaces the comma with a NUL byte, updates *OPTIONP to point past ++ the first option and the comma, sets *VALUEP to the value of the ++ element (or NULL if it doesn't contain an "=" sign), ++ - It returns the index of the "token" in the given array of tokens. ++ Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined. ++ For more details see the POSIX:2001 specification. ++ http://www.opengroup.org/susv3xsh/getsubopt.html */ ++# if !1 ++_GL_FUNCDECL_SYS (getsubopt, int, ++ (char **optionp, char *const *tokens, char **valuep) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (getsubopt, int, ++ (char **optionp, char *const *tokens, char **valuep)); ++_GL_CXXALIASWARN (getsubopt); ++#elif defined GNULIB_POSIXCHECK ++# undef getsubopt ++# if HAVE_RAW_DECL_GETSUBOPT ++_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - " ++ "use gnulib module getsubopt for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Change the ownership and access permission of the slave side of the ++ pseudo-terminal whose master side is specified by FD. */ ++# if !1 ++_GL_FUNCDECL_SYS (grantpt, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (grantpt, int, (int fd)); ++_GL_CXXALIASWARN (grantpt); ++#elif defined GNULIB_POSIXCHECK ++# undef grantpt ++# if HAVE_RAW_DECL_GRANTPT ++_GL_WARN_ON_USE (grantpt, "grantpt is not portable - " ++ "use gnulib module grantpt for portability"); ++# endif ++#endif ++ ++/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not ++ rely on GNU or POSIX semantics for malloc and realloc (for example, ++ by never specifying a zero size), so it does not need malloc or ++ realloc to be redefined. */ ++#if 1 ++# if 1 ++# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ ++ || _GL_USE_STDLIB_ALLOC) ++# undef malloc ++# define malloc rpl_malloc ++# endif ++_GL_FUNCDECL_RPL (malloc, void *, (size_t size)); ++_GL_CXXALIAS_RPL (malloc, void *, (size_t size)); ++# else ++_GL_CXXALIAS_SYS (malloc, void *, (size_t size)); ++# endif ++_GL_CXXALIASWARN (malloc); ++#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC ++# undef malloc ++/* Assume malloc is always declared. */ ++_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - " ++ "use gnulib module malloc-posix for portability"); ++#endif ++ ++/* Convert a multibyte character to a wide character. */ ++#if (IN_GETTEXT_TOOLS_GNULIB_TESTS || IN_GETTEXT_TOOLS_LIBGREP) ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbtowc ++# define mbtowc rpl_mbtowc ++# endif ++_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++# else ++_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n)); ++# endif ++_GL_CXXALIASWARN (mbtowc); ++#endif ++ ++#if 1 ++/* Create a unique temporary directory from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the directory name unique. ++ Returns TEMPLATE, or a null pointer if it cannot get a unique name. ++ The directory is created mode 700. */ ++# if !0 ++_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/)); ++_GL_CXXALIASWARN (mkdtemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkdtemp ++# if HAVE_RAW_DECL_MKDTEMP ++_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - " ++ "use gnulib module mkdtemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ The file is then created, with the specified flags, ensuring it didn't exist ++ before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)); ++_GL_CXXALIASWARN (mkostemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkostemp ++# if HAVE_RAW_DECL_MKOSTEMP ++_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - " ++ "use gnulib module mkostemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE before a suffix of length ++ SUFFIXLEN must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ The file is then created, with the specified flags, ensuring it didn't exist ++ before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkostemps, int, ++ (char * /*template*/, int /*suffixlen*/, int /*flags*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkostemps, int, ++ (char * /*template*/, int /*suffixlen*/, int /*flags*/)); ++_GL_CXXALIASWARN (mkostemps); ++#elif defined GNULIB_POSIXCHECK ++# undef mkostemps ++# if HAVE_RAW_DECL_MKOSTEMPS ++_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - " ++ "use gnulib module mkostemps for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The file is then created, ensuring it didn't exist before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mkstemp rpl_mkstemp ++# endif ++_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/)); ++# endif ++_GL_CXXALIASWARN (mkstemp); ++#elif defined GNULIB_POSIXCHECK ++# undef mkstemp ++# if HAVE_RAW_DECL_MKSTEMP ++_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - " ++ "use gnulib module mkstemp for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Create a unique temporary file from TEMPLATE. ++ The last six characters of TEMPLATE prior to a suffix of length ++ SUFFIXLEN must be "XXXXXX"; ++ they are replaced with a string that makes the file name unique. ++ The file is then created, ensuring it didn't exist before. ++ The file is created read-write (mask at least 0600 & ~umask), but it may be ++ world-readable and world-writable (mask 0666 & ~umask), depending on the ++ implementation. ++ Returns the open file descriptor if successful, otherwise -1 and errno ++ set. */ ++# if !1 ++_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)); ++_GL_CXXALIASWARN (mkstemps); ++#elif defined GNULIB_POSIXCHECK ++# undef mkstemps ++# if HAVE_RAW_DECL_MKSTEMPS ++_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - " ++ "use gnulib module mkstemps for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Return an FD open to the master side of a pseudo-terminal. Flags should ++ include O_RDWR, and may also include O_NOCTTY. */ ++# if !1 ++_GL_FUNCDECL_SYS (posix_openpt, int, (int flags)); ++# endif ++_GL_CXXALIAS_SYS (posix_openpt, int, (int flags)); ++_GL_CXXALIASWARN (posix_openpt); ++#elif defined GNULIB_POSIXCHECK ++# undef posix_openpt ++# if HAVE_RAW_DECL_POSIX_OPENPT ++_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - " ++ "use gnulib module posix_openpt for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Return the pathname of the pseudo-terminal slave associated with ++ the master FD is open on, or NULL on errors. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ptsname ++# define ptsname rpl_ptsname ++# endif ++_GL_FUNCDECL_RPL (ptsname, char *, (int fd)); ++_GL_CXXALIAS_RPL (ptsname, char *, (int fd)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ptsname, char *, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (ptsname, char *, (int fd)); ++# endif ++_GL_CXXALIASWARN (ptsname); ++#elif defined GNULIB_POSIXCHECK ++# undef ptsname ++# if HAVE_RAW_DECL_PTSNAME ++_GL_WARN_ON_USE (ptsname, "ptsname is not portable - " ++ "use gnulib module ptsname for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Set the pathname of the pseudo-terminal slave associated with ++ the master FD is open on and return 0, or set errno and return ++ non-zero on errors. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ptsname_r ++# define ptsname_r rpl_ptsname_r ++# endif ++_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); ++_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); ++# endif ++_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len)); ++# endif ++_GL_CXXALIASWARN (ptsname_r); ++#elif defined GNULIB_POSIXCHECK ++# undef ptsname_r ++# if HAVE_RAW_DECL_PTSNAME_R ++_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - " ++ "use gnulib module ptsname_r for portability"); ++# endif ++#endif ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef putenv ++# define putenv rpl_putenv ++# endif ++_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (putenv, int, (char *string)); ++# else ++_GL_CXXALIAS_SYS (putenv, int, (char *string)); ++# endif ++_GL_CXXALIASWARN (putenv); ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef qsort_r ++# define qsort_r rpl_qsort_r ++# endif ++_GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg) _GL_ARG_NONNULL ((1, 4))); ++_GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg)); ++# else ++_GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size, ++ int (*compare) (void const *, void const *, ++ void *), ++ void *arg)); ++# endif ++_GL_CXXALIASWARN (qsort_r); ++#endif ++ ++ ++#if 0 ++# if !1 ++# ifndef RAND_MAX ++# define RAND_MAX 2147483647 ++# endif ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (random, long, (void)); ++# endif ++_GL_CXXALIAS_SYS (random, long, (void)); ++_GL_CXXALIASWARN (random); ++#elif defined GNULIB_POSIXCHECK ++# undef random ++# if HAVE_RAW_DECL_RANDOM ++_GL_WARN_ON_USE (random, "random is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed)); ++# endif ++_GL_CXXALIAS_SYS (srandom, void, (unsigned int seed)); ++_GL_CXXALIASWARN (srandom); ++#elif defined GNULIB_POSIXCHECK ++# undef srandom ++# if HAVE_RAW_DECL_SRANDOM ++_GL_WARN_ON_USE (srandom, "srandom is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (initstate, char *, ++ (unsigned int seed, char *buf, size_t buf_size) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (initstate, char *, ++ (unsigned int seed, char *buf, size_t buf_size)); ++_GL_CXXALIASWARN (initstate); ++#elif defined GNULIB_POSIXCHECK ++# undef initstate ++# if HAVE_RAW_DECL_INITSTATE_R ++_GL_WARN_ON_USE (initstate, "initstate is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (setstate, char *, (char *arg_state)); ++_GL_CXXALIASWARN (setstate); ++#elif defined GNULIB_POSIXCHECK ++# undef setstate ++# if HAVE_RAW_DECL_SETSTATE_R ++_GL_WARN_ON_USE (setstate, "setstate is unportable - " ++ "use gnulib module random for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef random_r ++# define random_r rpl_random_r ++# endif ++_GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result)); ++# endif ++_GL_CXXALIASWARN (random_r); ++#elif defined GNULIB_POSIXCHECK ++# undef random_r ++# if HAVE_RAW_DECL_RANDOM_R ++_GL_WARN_ON_USE (random_r, "random_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef srandom_r ++# define srandom_r rpl_srandom_r ++# endif ++_GL_FUNCDECL_RPL (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (srandom_r, int, ++ (unsigned int seed, struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (srandom_r); ++#elif defined GNULIB_POSIXCHECK ++# undef srandom_r ++# if HAVE_RAW_DECL_SRANDOM_R ++_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef initstate_r ++# define initstate_r rpl_initstate_r ++# endif ++_GL_FUNCDECL_RPL (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (initstate_r, int, ++ (unsigned int seed, char *buf, size_t buf_size, ++ struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (initstate_r); ++#elif defined GNULIB_POSIXCHECK ++# undef initstate_r ++# if HAVE_RAW_DECL_INITSTATE_R ++_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setstate_r ++# define setstate_r rpl_setstate_r ++# endif ++_GL_FUNCDECL_RPL (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (setstate_r, int, ++ (char *arg_state, struct random_data *rand_state)); ++# endif ++_GL_CXXALIASWARN (setstate_r); ++#elif defined GNULIB_POSIXCHECK ++# undef setstate_r ++# if HAVE_RAW_DECL_SETSTATE_R ++_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - " ++ "use gnulib module random_r for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \ ++ || _GL_USE_STDLIB_ALLOC) ++# undef realloc ++# define realloc rpl_realloc ++# endif ++_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size)); ++_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size)); ++# else ++_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size)); ++# endif ++_GL_CXXALIASWARN (realloc); ++#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC ++# undef realloc ++/* Assume realloc is always declared. */ ++_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - " ++ "use gnulib module realloc-posix for portability"); ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define realpath rpl_realpath ++# endif ++_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved)); ++# endif ++_GL_CXXALIASWARN (realpath); ++#elif defined GNULIB_POSIXCHECK ++# undef realpath ++# if HAVE_RAW_DECL_REALPATH ++_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module " ++ "canonicalize or canonicalize-lgpl for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Test a user response to a question. ++ Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */ ++# if !1 ++_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (rpmatch, int, (const char *response)); ++_GL_CXXALIASWARN (rpmatch); ++#elif defined GNULIB_POSIXCHECK ++# undef rpmatch ++# if HAVE_RAW_DECL_RPMATCH ++_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - " ++ "use gnulib module rpmatch for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Look up NAME in the environment, returning 0 in insecure situations. */ ++# if !0 ++_GL_FUNCDECL_SYS (secure_getenv, char *, ++ (char const *name) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name)); ++_GL_CXXALIASWARN (secure_getenv); ++#elif defined GNULIB_POSIXCHECK ++# undef secure_getenv ++# if HAVE_RAW_DECL_SECURE_GETENV ++_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - " ++ "use gnulib module secure_getenv for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Set NAME to VALUE in the environment. ++ If REPLACE is nonzero, overwrite an existing value. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef setenv ++# define setenv rpl_setenv ++# endif ++_GL_FUNCDECL_RPL (setenv, int, ++ (const char *name, const char *value, int replace) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (setenv, int, ++ (const char *name, const char *value, int replace)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (setenv, int, ++ (const char *name, const char *value, int replace) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (setenv, int, ++ (const char *name, const char *value, int replace)); ++# endif ++# if !(0 && !0) ++_GL_CXXALIASWARN (setenv); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef setenv ++# if HAVE_RAW_DECL_SETENV ++_GL_WARN_ON_USE (setenv, "setenv is unportable - " ++ "use gnulib module setenv for portability"); ++# endif ++#endif ++ ++#if 0 ++ /* Parse a double from STRING, updating ENDP if appropriate. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strtod rpl_strtod ++# endif ++_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp)); ++# endif ++_GL_CXXALIASWARN (strtod); ++#elif defined GNULIB_POSIXCHECK ++# undef strtod ++# if HAVE_RAW_DECL_STRTOD ++_GL_WARN_ON_USE (strtod, "strtod is unportable - " ++ "use gnulib module strtod for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Parse a signed integer whose textual representation starts at STRING. ++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, ++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix ++ "0x"). ++ If ENDPTR is not NULL, the address of the first byte after the integer is ++ stored in *ENDPTR. ++ Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set ++ to ERANGE. */ ++# if !1 ++_GL_FUNCDECL_SYS (strtoll, long long, ++ (const char *string, char **endptr, int base) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtoll, long long, ++ (const char *string, char **endptr, int base)); ++_GL_CXXALIASWARN (strtoll); ++#elif defined GNULIB_POSIXCHECK ++# undef strtoll ++# if HAVE_RAW_DECL_STRTOLL ++_GL_WARN_ON_USE (strtoll, "strtoll is unportable - " ++ "use gnulib module strtoll for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Parse an unsigned integer whose textual representation starts at STRING. ++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0, ++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix ++ "0x"). ++ If ENDPTR is not NULL, the address of the first byte after the integer is ++ stored in *ENDPTR. ++ Upon overflow, the return value is ULLONG_MAX, and errno is set to ++ ERANGE. */ ++# if !1 ++_GL_FUNCDECL_SYS (strtoull, unsigned long long, ++ (const char *string, char **endptr, int base) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strtoull, unsigned long long, ++ (const char *string, char **endptr, int base)); ++_GL_CXXALIASWARN (strtoull); ++#elif defined GNULIB_POSIXCHECK ++# undef strtoull ++# if HAVE_RAW_DECL_STRTOULL ++_GL_WARN_ON_USE (strtoull, "strtoull is unportable - " ++ "use gnulib module strtoull for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Unlock the slave side of the pseudo-terminal whose master side is specified ++ by FD, so that it can be opened. */ ++# if !1 ++_GL_FUNCDECL_SYS (unlockpt, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (unlockpt, int, (int fd)); ++_GL_CXXALIASWARN (unlockpt); ++#elif defined GNULIB_POSIXCHECK ++# undef unlockpt ++# if HAVE_RAW_DECL_UNLOCKPT ++_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - " ++ "use gnulib module unlockpt for portability"); ++# endif ++#endif ++ ++#if 1 ++/* Remove the variable NAME from the environment. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unsetenv ++# define unsetenv rpl_unsetenv ++# endif ++_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (unsetenv, int, (const char *name)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (unsetenv, int, (const char *name)); ++# endif ++# if !(0 && !0) ++_GL_CXXALIASWARN (unsetenv); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef unsetenv ++# if HAVE_RAW_DECL_UNSETENV ++_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - " ++ "use gnulib module unsetenv for portability"); ++# endif ++#endif ++ ++/* Convert a wide character to a multibyte character. */ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wctomb ++# define wctomb rpl_wctomb ++# endif ++_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc)); ++_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc)); ++# else ++_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc)); ++# endif ++_GL_CXXALIASWARN (wctomb); ++#endif ++ ++ ++#endif /* _GL_GTPO_STDLIB_H */ ++#endif /* _GL_GTPO_STDLIB_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/string.h gettext-0.19/gettext-tools/libgettextpo/msvc/string.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/string.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/string.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1358 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A GNU-like . ++ ++ Copyright (C) 1995-1996, 2001-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined _GL_ALREADY_INCLUDING_STRING_H ++/* Special invocation convention: ++ - On OS X/NetBSD we have a sequence of nested includes ++ -> -> "string.h" ++ In this situation system _chk variants due to -D_FORTIFY_SOURCE ++ might be used after any replacements defined here. */ ++ ++#include MSVC_INCLUDE(string.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_GTPO_STRING_H ++ ++#define _GL_ALREADY_INCLUDING_STRING_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(string.h) ++ ++#undef _GL_ALREADY_INCLUDING_STRING_H ++ ++#ifndef _GL_GTPO_STRING_H ++#define _GL_GTPO_STRING_H ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++#include ++ ++/* MirBSD defines mbslen as a macro. */ ++#if 1 && defined __MirBSD__ ++# include ++#endif ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* NetBSD 5.0 declares strsignal in , not in . */ ++/* But in any case avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Find the index of the least-significant set bit. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (ffsl, int, (long int i)); ++# endif ++_GL_CXXALIAS_SYS (ffsl, int, (long int i)); ++_GL_CXXALIASWARN (ffsl); ++#elif defined GNULIB_POSIXCHECK ++# undef ffsl ++# if HAVE_RAW_DECL_FFSL ++_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); ++# endif ++#endif ++ ++ ++/* Find the index of the least-significant set bit. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (ffsll, int, (long long int i)); ++# endif ++_GL_CXXALIAS_SYS (ffsll, int, (long long int i)); ++_GL_CXXALIASWARN (ffsll); ++#elif defined GNULIB_POSIXCHECK ++# undef ffsll ++# if HAVE_RAW_DECL_FFSLL ++_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); ++# endif ++#endif ++ ++ ++/* Return the first instance of C within N bytes of S, or NULL. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define memchr rpl_memchr ++# endif ++_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C" { const void * std::memchr (const void *, int, size_t); } ++ extern "C++" { void * std::memchr (void *, int, size_t); } */ ++_GL_CXXALIAS_SYS_CAST2 (memchr, ++ void *, (void const *__s, int __c, size_t __n), ++ void const *, (void const *__s, int __c, size_t __n)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); ++_GL_CXXALIASWARN1 (memchr, void const *, ++ (void const *__s, int __c, size_t __n)); ++# else ++_GL_CXXALIASWARN (memchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef memchr ++/* Assume memchr is always declared. */ ++_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " ++ "use gnulib module memchr for portability" ); ++#endif ++ ++/* Return the first occurrence of NEEDLE in HAYSTACK. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define memmem rpl_memmem ++# endif ++_GL_FUNCDECL_RPL (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 3))); ++# endif ++_GL_CXXALIAS_SYS (memmem, void *, ++ (void const *__haystack, size_t __haystack_len, ++ void const *__needle, size_t __needle_len)); ++# endif ++_GL_CXXALIASWARN (memmem); ++#elif defined GNULIB_POSIXCHECK ++# undef memmem ++# if HAVE_RAW_DECL_MEMMEM ++_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - " ++ "use gnulib module memmem-simple for portability, " ++ "and module memmem for speed" ); ++# endif ++#endif ++ ++/* Copy N bytes of SRC to DEST, return pointer to bytes after the ++ last written byte. */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (mempcpy, void *, ++ (void *restrict __dest, void const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (mempcpy, void *, ++ (void *restrict __dest, void const *restrict __src, ++ size_t __n)); ++_GL_CXXALIASWARN (mempcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef mempcpy ++# if HAVE_RAW_DECL_MEMPCPY ++_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " ++ "use gnulib module mempcpy for portability"); ++# endif ++#endif ++ ++/* Search backwards through a block for a byte (specified as an int). */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const void * std::memrchr (const void *, int, size_t); } ++ extern "C++" { void * std::memrchr (void *, int, size_t); } */ ++_GL_CXXALIAS_SYS_CAST2 (memrchr, ++ void *, (void const *, int, size_t), ++ void const *, (void const *, int, size_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); ++_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); ++# else ++_GL_CXXALIASWARN (memrchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef memrchr ++# if HAVE_RAW_DECL_MEMRCHR ++_GL_WARN_ON_USE (memrchr, "memrchr is unportable - " ++ "use gnulib module memrchr for portability"); ++# endif ++#endif ++ ++/* Find the first occurrence of C in S. More efficient than ++ memchr(S,C,N), at the expense of undefined behavior if C does not ++ occur within N bytes. */ ++#if 1 ++# if ! 0 ++_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const void * std::rawmemchr (const void *, int); } ++ extern "C++" { void * std::rawmemchr (void *, int); } */ ++_GL_CXXALIAS_SYS_CAST2 (rawmemchr, ++ void *, (void const *__s, int __c_in), ++ void const *, (void const *__s, int __c_in)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); ++_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); ++# else ++_GL_CXXALIASWARN (rawmemchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef rawmemchr ++# if HAVE_RAW_DECL_RAWMEMCHR ++_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - " ++ "use gnulib module rawmemchr for portability"); ++# endif ++#endif ++ ++/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */ ++#if 1 ++# if ! 0 ++_GL_FUNCDECL_SYS (stpcpy, char *, ++ (char *restrict __dst, char const *restrict __src) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (stpcpy, char *, ++ (char *restrict __dst, char const *restrict __src)); ++_GL_CXXALIASWARN (stpcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef stpcpy ++# if HAVE_RAW_DECL_STPCPY ++_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " ++ "use gnulib module stpcpy for portability"); ++# endif ++#endif ++ ++/* Copy no more than N bytes of SRC to DST, returning a pointer past the ++ last non-NUL byte written into DST. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef stpncpy ++# define stpncpy rpl_stpncpy ++# endif ++_GL_FUNCDECL_RPL (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n)); ++# else ++# if ! 0 ++_GL_FUNCDECL_SYS (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (stpncpy, char *, ++ (char *restrict __dst, char const *restrict __src, ++ size_t __n)); ++# endif ++_GL_CXXALIASWARN (stpncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef stpncpy ++# if HAVE_RAW_DECL_STPNCPY ++_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " ++ "use gnulib module stpncpy for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strchr() does not work with multibyte strings if the locale encoding is ++ GB18030 and the character to be searched is a digit. */ ++# undef strchr ++/* Assume strchr is always declared. */ ++_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " ++ "in some multibyte locales - " ++ "use mbschr if you care about internationalization"); ++#endif ++ ++/* Find the first occurrence of C in S or the final NUL byte. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strchrnul rpl_strchrnul ++# endif ++_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strchrnul, char *, ++ (const char *str, int ch)); ++# else ++# if ! 0 ++_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * std::strchrnul (const char *, int); } ++ extern "C++" { char * std::strchrnul (char *, int); } */ ++_GL_CXXALIAS_SYS_CAST2 (strchrnul, ++ char *, (char const *__s, int __c_in), ++ char const *, (char const *__s, int __c_in)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); ++_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); ++# else ++_GL_CXXALIASWARN (strchrnul); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strchrnul ++# if HAVE_RAW_DECL_STRCHRNUL ++_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " ++ "use gnulib module strchrnul for portability"); ++# endif ++#endif ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strdup ++# define strdup rpl_strdup ++# endif ++_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); ++# else ++# if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup ++ /* strdup exists as a function and as a macro. Get rid of the macro. */ ++# undef strdup ++# endif ++# if !(1 || defined strdup) ++_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); ++# endif ++_GL_CXXALIASWARN (strdup); ++#elif defined GNULIB_POSIXCHECK ++# undef strdup ++# if HAVE_RAW_DECL_STRDUP ++_GL_WARN_ON_USE (strdup, "strdup is unportable - " ++ "use gnulib module strdup for portability"); ++# endif ++#endif ++ ++/* Append no more than N characters from SRC onto DEST. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strncat ++# define strncat rpl_strncat ++# endif ++_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); ++# else ++_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); ++# endif ++_GL_CXXALIASWARN (strncat); ++#elif defined GNULIB_POSIXCHECK ++# undef strncat ++# if HAVE_RAW_DECL_STRNCAT ++_GL_WARN_ON_USE (strncat, "strncat is unportable - " ++ "use gnulib module strncat for portability"); ++# endif ++#endif ++ ++/* Return a newly allocated copy of at most N bytes of STRING. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strndup ++# define strndup rpl_strndup ++# endif ++_GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); ++# endif ++_GL_CXXALIASWARN (strndup); ++#elif defined GNULIB_POSIXCHECK ++# undef strndup ++# if HAVE_RAW_DECL_STRNDUP ++_GL_WARN_ON_USE (strndup, "strndup is unportable - " ++ "use gnulib module strndup for portability"); ++# endif ++#endif ++ ++/* Find the length (number of bytes) of STRING, but scan at most ++ MAXLEN bytes. If no '\0' terminator is found in that many bytes, ++ return MAXLEN. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strnlen ++# define strnlen rpl_strnlen ++# endif ++_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); ++# endif ++_GL_CXXALIASWARN (strnlen); ++#elif defined GNULIB_POSIXCHECK ++# undef strnlen ++# if HAVE_RAW_DECL_STRNLEN ++_GL_WARN_ON_USE (strnlen, "strnlen is unportable - " ++ "use gnulib module strnlen for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strcspn() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it does not work with multibyte strings if the ++ locale encoding is GB18030 and one of the characters to be searched is a ++ digit. */ ++# undef strcspn ++/* Assume strcspn is always declared. */ ++_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbscspn if you care about internationalization"); ++#endif ++ ++/* Find the first occurrence in S of any character in ACCEPT. */ ++#if 1 ++# if ! 1 ++_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C" { const char * strpbrk (const char *, const char *); } ++ extern "C++" { char * strpbrk (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strpbrk, ++ char *, (char const *__s, char const *__accept), ++ const char *, (char const *__s, char const *__accept)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); ++_GL_CXXALIASWARN1 (strpbrk, char const *, ++ (char const *__s, char const *__accept)); ++# else ++_GL_CXXALIASWARN (strpbrk); ++# endif ++# if defined GNULIB_POSIXCHECK ++/* strpbrk() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it does not work with multibyte strings if the ++ locale encoding is GB18030 and one of the characters to be searched is a ++ digit. */ ++# undef strpbrk ++_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbspbrk if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strpbrk ++# if HAVE_RAW_DECL_STRPBRK ++_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " ++ "use gnulib module strpbrk for portability"); ++# endif ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strspn() assumes the second argument is a list of single-byte characters. ++ Even in this simple case, it cannot work with multibyte strings. */ ++# undef strspn ++/* Assume strspn is always declared. */ ++_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbsspn if you care about internationalization"); ++#endif ++ ++#if defined GNULIB_POSIXCHECK ++/* strrchr() does not work with multibyte strings if the locale encoding is ++ GB18030 and the character to be searched is a digit. */ ++# undef strrchr ++/* Assume strrchr is always declared. */ ++_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " ++ "in some multibyte locales - " ++ "use mbsrchr if you care about internationalization"); ++#endif ++ ++/* Search the next delimiter (char listed in DELIM) starting at *STRINGP. ++ If one is found, overwrite it with a NUL, and advance *STRINGP ++ to point to the next char after it. Otherwise, set *STRINGP to NULL. ++ If *STRINGP was already NULL, nothing happens. ++ Return the old value of *STRINGP. ++ ++ This is a variant of strtok() that is multithread-safe and supports ++ empty fields. ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ Caveat: It doesn't work with multibyte strings unless all of the delimiter ++ characters are ASCII characters < 0x30. ++ ++ See also strtok_r(). */ ++#if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (strsep, char *, ++ (char **restrict __stringp, char const *restrict __delim) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (strsep, char *, ++ (char **restrict __stringp, char const *restrict __delim)); ++_GL_CXXALIASWARN (strsep); ++# if defined GNULIB_POSIXCHECK ++# undef strsep ++_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings " ++ "in multibyte locales - " ++ "use mbssep if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strsep ++# if HAVE_RAW_DECL_STRSEP ++_GL_WARN_ON_USE (strsep, "strsep is unportable - " ++ "use gnulib module strsep for portability"); ++# endif ++#endif ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strstr rpl_strstr ++# endif ++_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); ++# else ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * strstr (const char *, const char *); } ++ extern "C++" { char * strstr (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strstr, ++ char *, (const char *haystack, const char *needle), ++ const char *, (const char *haystack, const char *needle)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); ++_GL_CXXALIASWARN1 (strstr, const char *, ++ (const char *haystack, const char *needle)); ++# else ++_GL_CXXALIASWARN (strstr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++/* strstr() does not work with multibyte strings if the locale encoding is ++ different from UTF-8: ++ POSIX says that it operates on "strings", and "string" in POSIX is defined ++ as a sequence of bytes, not of characters. */ ++# undef strstr ++/* Assume strstr is always declared. */ ++_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " ++ "work correctly on character strings in most " ++ "multibyte locales - " ++ "use mbsstr if you care about internationalization, " ++ "or use strstr if you care about speed"); ++#endif ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive ++ comparison. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strcasestr rpl_strcasestr ++# endif ++_GL_FUNCDECL_RPL (strcasestr, char *, ++ (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (strcasestr, char *, ++ (const char *haystack, const char *needle)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strcasestr, char *, ++ (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { const char * strcasestr (const char *, const char *); } ++ extern "C++" { char * strcasestr (char *, const char *); } */ ++_GL_CXXALIAS_SYS_CAST2 (strcasestr, ++ char *, (const char *haystack, const char *needle), ++ const char *, (const char *haystack, const char *needle)); ++# endif ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); ++_GL_CXXALIASWARN1 (strcasestr, const char *, ++ (const char *haystack, const char *needle)); ++# else ++_GL_CXXALIASWARN (strcasestr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++/* strcasestr() does not work with multibyte strings: ++ It is a glibc extension, and glibc implements it only for unibyte ++ locales. */ ++# undef strcasestr ++# if HAVE_RAW_DECL_STRCASESTR ++_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " ++ "strings in multibyte locales - " ++ "use mbscasestr if you care about " ++ "internationalization, or use c-strcasestr if you want " ++ "a locale independent function"); ++# endif ++#endif ++ ++/* Parse S into tokens separated by characters in DELIM. ++ If S is NULL, the saved pointer in SAVE_PTR is used as ++ the next starting point. For example: ++ char s[] = "-abc-=-def"; ++ char *sp; ++ x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" ++ x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL ++ x = strtok_r(NULL, "=", &sp); // x = NULL ++ // s = "abc\0-def\0" ++ ++ This is a variant of strtok() that is multithread-safe. ++ ++ For the POSIX documentation for this function, see: ++ http://www.opengroup.org/susv3xsh/strtok.html ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ Caveat: It doesn't work with multibyte strings unless all of the delimiter ++ characters are ASCII characters < 0x30. ++ ++ See also strsep(). */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strtok_r ++# define strtok_r rpl_strtok_r ++# endif ++_GL_FUNCDECL_RPL (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr)); ++# else ++# if 0 || defined GNULIB_POSIXCHECK ++# undef strtok_r ++# endif ++# if ! 1 ++_GL_FUNCDECL_SYS (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (strtok_r, char *, ++ (char *restrict s, char const *restrict delim, ++ char **restrict save_ptr)); ++# endif ++_GL_CXXALIASWARN (strtok_r); ++# if defined GNULIB_POSIXCHECK ++_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character " ++ "strings in multibyte locales - " ++ "use mbstok_r if you care about internationalization"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strtok_r ++# if HAVE_RAW_DECL_STRTOK_R ++_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " ++ "use gnulib module strtok_r for portability"); ++# endif ++#endif ++ ++ ++/* The following functions are not specified by POSIX. They are gnulib ++ extensions. */ ++ ++#if 1 ++/* Return the number of multibyte characters in the character string STRING. ++ This considers multibyte characters, unlike strlen, which counts bytes. */ ++# ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */ ++# undef mbslen ++# endif ++# if 0 /* AIX, OSF/1, MirBSD define mbslen already in libc. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbslen rpl_mbslen ++# endif ++_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); ++# else ++_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); ++# endif ++_GL_CXXALIASWARN (mbslen); ++#endif ++ ++#if 0 ++/* Return the number of multibyte characters in the character string starting ++ at STRING and ending at STRING + LEN. */ ++_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1)); ++#endif ++ ++#if 0 ++/* Locate the first single-byte character C in the character string STRING, ++ and return a pointer to it. Return NULL if C is not found in STRING. ++ Unlike strchr(), this function works correctly in multibyte locales with ++ encodings such as GB18030. */ ++# if defined __hpux ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbschr rpl_mbschr /* avoid collision with HP-UX function */ ++# endif ++_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); ++# else ++_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); ++# endif ++_GL_CXXALIASWARN (mbschr); ++#endif ++ ++#if 0 ++/* Locate the last single-byte character C in the character string STRING, ++ and return a pointer to it. Return NULL if C is not found in STRING. ++ Unlike strrchr(), this function works correctly in multibyte locales with ++ encodings such as GB18030. */ ++# if defined __hpux || defined __INTERIX ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbsrchr rpl_mbsrchr /* avoid collision with system function */ ++# endif ++_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); ++# else ++_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); ++# endif ++_GL_CXXALIASWARN (mbsrchr); ++#endif ++ ++#if 1 ++/* Find the first occurrence of the character string NEEDLE in the character ++ string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK. ++ Unlike strstr(), this function works correctly in multibyte locales with ++ encodings different from UTF-8. */ ++_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the character strings S1 and S2, ignoring case, returning less than, ++ equal to or greater than zero if S1 is lexicographically less than, equal to ++ or greater than S2. ++ Note: This function may, in multibyte locales, return 0 for strings of ++ different lengths! ++ Unlike strcasecmp(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the initial segment of the character string S1 consisting of at most ++ N characters with the initial segment of the character string S2 consisting ++ of at most N characters, ignoring case, returning less than, equal to or ++ greater than zero if the initial segment of S1 is lexicographically less ++ than, equal to or greater than the initial segment of S2. ++ Note: This function may, in multibyte locales, return 0 for initial segments ++ of different lengths! ++ Unlike strncasecmp(), this function works correctly in multibyte locales. ++ But beware that N is not a byte count but a character count! */ ++_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Compare the initial segment of the character string STRING consisting of ++ at most mbslen (PREFIX) characters with the character string PREFIX, ++ ignoring case. If the two match, return a pointer to the first byte ++ after this prefix in STRING. Otherwise, return NULL. ++ Note: This function may, in multibyte locales, return non-NULL if STRING ++ is of smaller length than PREFIX! ++ Unlike strncasecmp(), this function works correctly in multibyte ++ locales. */ ++_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence of the character string NEEDLE in the character ++ string HAYSTACK, using case-insensitive comparison. ++ Note: This function may, in multibyte locales, return success even if ++ strlen (haystack) < strlen (needle) ! ++ Unlike strcasestr(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ in the character string ACCEPT. Return the number of bytes from the ++ beginning of the string to this occurrence, or to the end of the string ++ if none exists. ++ Unlike strcspn(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ in the character string ACCEPT. Return the pointer to it, or NULL if none ++ exists. ++ Unlike strpbrk(), this function works correctly in multibyte locales. */ ++# if defined __hpux ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ ++# endif ++_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); ++# else ++_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); ++# endif ++_GL_CXXALIASWARN (mbspbrk); ++#endif ++ ++#if 0 ++/* Find the first occurrence in the character string STRING of any character ++ not in the character string REJECT. Return the number of bytes from the ++ beginning of the string to this occurrence, or to the end of the string ++ if none exists. ++ Unlike strspn(), this function works correctly in multibyte locales. */ ++_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Search the next delimiter (multibyte character listed in the character ++ string DELIM) starting at the character string *STRINGP. ++ If one is found, overwrite it with a NUL, and advance *STRINGP to point ++ to the next multibyte character after it. Otherwise, set *STRINGP to NULL. ++ If *STRINGP was already NULL, nothing happens. ++ Return the old value of *STRINGP. ++ ++ This is a variant of mbstok_r() that supports empty fields. ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ ++ See also mbstok_r(). */ ++_GL_EXTERN_C char * mbssep (char **stringp, const char *delim) ++ _GL_ARG_NONNULL ((1, 2)); ++#endif ++ ++#if 0 ++/* Parse the character string STRING into tokens separated by characters in ++ the character string DELIM. ++ If STRING is NULL, the saved pointer in SAVE_PTR is used as ++ the next starting point. For example: ++ char s[] = "-abc-=-def"; ++ char *sp; ++ x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def" ++ x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL ++ x = mbstok_r(NULL, "=", &sp); // x = NULL ++ // s = "abc\0-def\0" ++ ++ Caveat: It modifies the original string. ++ Caveat: These functions cannot be used on constant strings. ++ Caveat: The identity of the delimiting character is lost. ++ ++ See also mbssep(). */ ++_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) ++ _GL_ARG_NONNULL ((2, 3)); ++#endif ++ ++/* Map any int, typically from errno, into an error message. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strerror ++# define strerror rpl_strerror ++# endif ++_GL_FUNCDECL_RPL (strerror, char *, (int)); ++_GL_CXXALIAS_RPL (strerror, char *, (int)); ++# else ++_GL_CXXALIAS_SYS (strerror, char *, (int)); ++# endif ++_GL_CXXALIASWARN (strerror); ++#elif defined GNULIB_POSIXCHECK ++# undef strerror ++/* Assume strerror is always declared. */ ++_GL_WARN_ON_USE (strerror, "strerror is unportable - " ++ "use gnulib module strerror to guarantee non-NULL result"); ++#endif ++ ++/* Map any int, typically from errno, into an error message. Multithread-safe. ++ Uses the POSIX declaration, not the glibc declaration. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef strerror_r ++# define strerror_r rpl_strerror_r ++# endif ++_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (strerror_r); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef strerror_r ++# if HAVE_RAW_DECL_STRERROR_R ++_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " ++ "use gnulib module strerror_r-posix for portability"); ++# endif ++#endif ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define strsignal rpl_strsignal ++# endif ++_GL_FUNCDECL_RPL (strsignal, char *, (int __sig)); ++_GL_CXXALIAS_RPL (strsignal, char *, (int __sig)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (strsignal, char *, (int __sig)); ++# endif ++/* Need to cast, because on Cygwin 1.5.x systems, the return type is ++ 'const char *'. */ ++_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig)); ++# endif ++_GL_CXXALIASWARN (strsignal); ++#elif defined GNULIB_POSIXCHECK ++# undef strsignal ++# if HAVE_RAW_DECL_STRSIGNAL ++_GL_WARN_ON_USE (strsignal, "strsignal is unportable - " ++ "use gnulib module strsignal for portability"); ++# endif ++#endif ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) ++ _GL_ATTRIBUTE_PURE ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); ++_GL_CXXALIASWARN (strverscmp); ++#elif defined GNULIB_POSIXCHECK ++# undef strverscmp ++# if HAVE_RAW_DECL_STRVERSCMP ++_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " ++ "use gnulib module strverscmp for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_GTPO_STRING_H */ ++#endif /* _GL_GTPO_STRING_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/sys/stat.h gettext-0.19/gettext-tools/libgettextpo/msvc/sys/stat.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/sys/stat.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/sys/stat.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1044 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/stat header file. ++ Copyright (C) 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake, Paul Eggert, and Jim Meyering. */ ++ ++/* This file is supposed to be used on platforms where is ++ incomplete. It is intended to provide definitions and prototypes ++ needed by an application. Start with what the system provides. */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if defined __need_system_sys_stat_h ++/* Special invocation convention. */ ++ ++#include MSVC_INCLUDE(sys/stat.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_GTPO_SYS_STAT_H ++ ++/* Get nlink_t. ++ May also define off_t to a 64-bit type on native Windows. */ ++#include ++ ++/* Get struct timespec. */ ++#include ++ ++/* The include_next requires a split double-inclusion guard. */ ++#include MSVC_INCLUDE(sys/stat.h) ++ ++#ifndef _GL_GTPO_SYS_STAT_H ++#define _GL_GTPO_SYS_STAT_H ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Before doing "#define mkdir rpl_mkdir" below, we need to include all ++ headers that may declare mkdir(). Native Windows platforms declare mkdir ++ in and/or , not in . */ ++#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++# include /* mingw32, mingw64 */ ++# include /* mingw64, MSVC 9 */ ++#endif ++ ++/* Native Windows platforms declare umask() in . */ ++#if 0 && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++/* Large File Support on native Windows. */ ++#if 1 ++# define stat _stati64 ++#endif ++ ++#ifndef S_IFIFO ++# ifdef _S_IFIFO ++# define S_IFIFO _S_IFIFO ++# endif ++#endif ++ ++#ifndef S_IFMT ++# define S_IFMT 0170000 ++#endif ++ ++#if STAT_MACROS_BROKEN ++# undef S_ISBLK ++# undef S_ISCHR ++# undef S_ISDIR ++# undef S_ISFIFO ++# undef S_ISLNK ++# undef S_ISNAM ++# undef S_ISMPB ++# undef S_ISMPC ++# undef S_ISNWK ++# undef S_ISREG ++# undef S_ISSOCK ++#endif ++ ++#ifndef S_ISBLK ++# ifdef S_IFBLK ++# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) ++# else ++# define S_ISBLK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISCHR ++# ifdef S_IFCHR ++# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) ++# else ++# define S_ISCHR(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISDIR ++# ifdef S_IFDIR ++# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) ++# else ++# define S_ISDIR(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISDOOR /* Solaris 2.5 and up */ ++# define S_ISDOOR(m) 0 ++#endif ++ ++#ifndef S_ISFIFO ++# ifdef S_IFIFO ++# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) ++# else ++# define S_ISFIFO(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISLNK ++# ifdef S_IFLNK ++# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) ++# else ++# define S_ISLNK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISMPB /* V7 */ ++# ifdef S_IFMPB ++# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) ++# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) ++# else ++# define S_ISMPB(m) 0 ++# define S_ISMPC(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISMPX /* AIX */ ++# define S_ISMPX(m) 0 ++#endif ++ ++#ifndef S_ISNAM /* Xenix */ ++# ifdef S_IFNAM ++# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) ++# else ++# define S_ISNAM(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISNWK /* HP/UX */ ++# ifdef S_IFNWK ++# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) ++# else ++# define S_ISNWK(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISPORT /* Solaris 10 and up */ ++# define S_ISPORT(m) 0 ++#endif ++ ++#ifndef S_ISREG ++# ifdef S_IFREG ++# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) ++# else ++# define S_ISREG(m) 0 ++# endif ++#endif ++ ++#ifndef S_ISSOCK ++# ifdef S_IFSOCK ++# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) ++# else ++# define S_ISSOCK(m) 0 ++# endif ++#endif ++ ++ ++#ifndef S_TYPEISMQ ++# define S_TYPEISMQ(p) 0 ++#endif ++ ++#ifndef S_TYPEISTMO ++# define S_TYPEISTMO(p) 0 ++#endif ++ ++ ++#ifndef S_TYPEISSEM ++# ifdef S_INSEM ++# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) ++# else ++# define S_TYPEISSEM(p) 0 ++# endif ++#endif ++ ++#ifndef S_TYPEISSHM ++# ifdef S_INSHD ++# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) ++# else ++# define S_TYPEISSHM(p) 0 ++# endif ++#endif ++ ++/* high performance ("contiguous data") */ ++#ifndef S_ISCTG ++# define S_ISCTG(p) 0 ++#endif ++ ++/* Cray DMF (data migration facility): off line, with data */ ++#ifndef S_ISOFD ++# define S_ISOFD(p) 0 ++#endif ++ ++/* Cray DMF (data migration facility): off line, with no data */ ++#ifndef S_ISOFL ++# define S_ISOFL(p) 0 ++#endif ++ ++/* 4.4BSD whiteout */ ++#ifndef S_ISWHT ++# define S_ISWHT(m) 0 ++#endif ++ ++/* If any of the following are undefined, ++ define them to their de facto standard values. */ ++#if !S_ISUID ++# define S_ISUID 04000 ++#endif ++#if !S_ISGID ++# define S_ISGID 02000 ++#endif ++ ++/* S_ISVTX is a common extension to POSIX. */ ++#ifndef S_ISVTX ++# define S_ISVTX 01000 ++#endif ++ ++#if !S_IRUSR && S_IREAD ++# define S_IRUSR S_IREAD ++#endif ++#if !S_IRUSR ++# define S_IRUSR 00400 ++#endif ++#if !S_IRGRP ++# define S_IRGRP (S_IRUSR >> 3) ++#endif ++#if !S_IROTH ++# define S_IROTH (S_IRUSR >> 6) ++#endif ++ ++#if !S_IWUSR && S_IWRITE ++# define S_IWUSR S_IWRITE ++#endif ++#if !S_IWUSR ++# define S_IWUSR 00200 ++#endif ++#if !S_IWGRP ++# define S_IWGRP (S_IWUSR >> 3) ++#endif ++#if !S_IWOTH ++# define S_IWOTH (S_IWUSR >> 6) ++#endif ++ ++#if !S_IXUSR && S_IEXEC ++# define S_IXUSR S_IEXEC ++#endif ++#if !S_IXUSR ++# define S_IXUSR 00100 ++#endif ++#if !S_IXGRP ++# define S_IXGRP (S_IXUSR >> 3) ++#endif ++#if !S_IXOTH ++# define S_IXOTH (S_IXUSR >> 6) ++#endif ++ ++#if !S_IRWXU ++# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) ++#endif ++#if !S_IRWXG ++# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) ++#endif ++#if !S_IRWXO ++# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) ++#endif ++ ++/* S_IXUGO is a common extension to POSIX. */ ++#if !S_IXUGO ++# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) ++#endif ++ ++#ifndef S_IRWXUGO ++# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO) ++#endif ++ ++/* Macros for futimens and utimensat. */ ++#ifndef UTIME_NOW ++# define UTIME_NOW (-1) ++# define UTIME_OMIT (-2) ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (fchmodat, int, ++ (int fd, char const *file, mode_t mode, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (fchmodat, int, ++ (int fd, char const *file, mode_t mode, int flag)); ++_GL_CXXALIASWARN (fchmodat); ++#elif defined GNULIB_POSIXCHECK ++# undef fchmodat ++# if HAVE_RAW_DECL_FCHMODAT ++_GL_WARN_ON_USE (fchmodat, "fchmodat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fstat ++# define fstat rpl_fstat ++# endif ++_GL_FUNCDECL_RPL (fstat, int, (int fd, struct stat *buf) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fstat, int, (int fd, struct stat *buf)); ++# else ++_GL_CXXALIAS_SYS (fstat, int, (int fd, struct stat *buf)); ++# endif ++_GL_CXXALIASWARN (fstat); ++#elif 1 ++/* Above, we define stat to _stati64. */ ++# define fstat _fstati64 ++#elif defined GNULIB_POSIXCHECK ++# undef fstat ++# if HAVE_RAW_DECL_FSTAT ++_GL_WARN_ON_USE (fstat, "fstat has portability problems - " ++ "use gnulib module fstat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fstatat ++# define fstatat rpl_fstatat ++# endif ++_GL_FUNCDECL_RPL (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (fstatat, int, ++ (int fd, char const *name, struct stat *st, int flags)); ++# endif ++_GL_CXXALIASWARN (fstatat); ++#elif defined GNULIB_POSIXCHECK ++# undef fstatat ++# if HAVE_RAW_DECL_FSTATAT ++_GL_WARN_ON_USE (fstatat, "fstatat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our futimens ++ implementation relies on futimesat, which on Solaris 10 makes an invocation ++ to futimens that is meant to invoke the libc's futimens(), not gnulib's ++ futimens(). */ ++# if 0 || (!1 && defined __sun) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef futimens ++# define futimens rpl_futimens ++# endif ++_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2])); ++_GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2])); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2])); ++# endif ++_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2])); ++# endif ++# if 1 ++_GL_CXXALIASWARN (futimens); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef futimens ++# if HAVE_RAW_DECL_FUTIMENS ++_GL_WARN_ON_USE (futimens, "futimens is not portable - " ++ "use gnulib module futimens for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the mode of FILENAME to MODE, without dereferencing it if FILENAME ++ denotes a symbolic link. */ ++# if !1 ++/* The lchmod replacement follows symbolic links. Callers should take ++ this into account; lchmod should be applied only to arguments that ++ are known to not be symbolic links. On hosts that lack lchmod, ++ this can lead to race conditions between the check and the ++ invocation of lchmod, but we know of no workarounds that are ++ reliable in general. You might try requesting support for lchmod ++ from your operating system supplier. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lchmod chmod ++# endif ++/* Need to cast, because on mingw, the second parameter of chmod is ++ int mode. */ ++_GL_CXXALIAS_RPL_CAST_1 (lchmod, chmod, int, ++ (const char *filename, mode_t mode)); ++# else ++# if 0 /* assume already declared */ ++_GL_FUNCDECL_SYS (lchmod, int, (const char *filename, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (lchmod, int, (const char *filename, mode_t mode)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (lchmod); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef lchmod ++# if HAVE_RAW_DECL_LCHMOD ++_GL_WARN_ON_USE (lchmod, "lchmod is unportable - " ++ "use gnulib module lchmod for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if ! 0 ++/* mingw does not support symlinks, therefore it does not have lstat. But ++ without links, stat does just fine. */ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lstat stat ++# endif ++_GL_CXXALIAS_RPL_1 (lstat, stat, int, (const char *name, struct stat *buf)); ++# elif 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef lstat ++# define lstat rpl_lstat ++# endif ++_GL_FUNCDECL_RPL (lstat, int, (const char *name, struct stat *buf) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (lstat, int, (const char *name, struct stat *buf)); ++# else ++_GL_CXXALIAS_SYS (lstat, int, (const char *name, struct stat *buf)); ++# endif ++# if 0 ++_GL_CXXALIASWARN (lstat); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef lstat ++# if HAVE_RAW_DECL_LSTAT ++_GL_WARN_ON_USE (lstat, "lstat is unportable - " ++ "use gnulib module lstat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mkdir ++# define mkdir rpl_mkdir ++# endif ++_GL_FUNCDECL_RPL (mkdir, int, (char const *name, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); ++#else ++/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments. ++ Additionally, it declares _mkdir (and depending on compile flags, an ++ alias mkdir), only in the nonstandard includes and , ++ which are included above. */ ++# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ ++ ++# if !GNULIB_defined_rpl_mkdir ++static int ++rpl_mkdir (char const *name, mode_t mode) ++{ ++ return _mkdir (name); ++} ++# define GNULIB_defined_rpl_mkdir 1 ++# endif ++ ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mkdir rpl_mkdir ++# endif ++_GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode)); ++# else ++_GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode)); ++# endif ++#endif ++_GL_CXXALIASWARN (mkdir); ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mkdirat, int, (int fd, char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mkdirat, int, (int fd, char const *file, mode_t mode)); ++_GL_CXXALIASWARN (mkdirat); ++#elif defined GNULIB_POSIXCHECK ++# undef mkdirat ++# if HAVE_RAW_DECL_MKDIRAT ++_GL_WARN_ON_USE (mkdirat, "mkdirat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mkfifo ++# define mkfifo rpl_mkfifo ++# endif ++_GL_FUNCDECL_RPL (mkfifo, int, (char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mkfifo, int, (char const *file, mode_t mode)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mkfifo, int, (char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (mkfifo, int, (char const *file, mode_t mode)); ++# endif ++_GL_CXXALIASWARN (mkfifo); ++#elif defined GNULIB_POSIXCHECK ++# undef mkfifo ++# if HAVE_RAW_DECL_MKFIFO ++_GL_WARN_ON_USE (mkfifo, "mkfifo is not portable - " ++ "use gnulib module mkfifo for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)); ++_GL_CXXALIASWARN (mkfifoat); ++#elif defined GNULIB_POSIXCHECK ++# undef mkfifoat ++# if HAVE_RAW_DECL_MKFIFOAT ++_GL_WARN_ON_USE (mkfifoat, "mkfifoat is not portable - " ++ "use gnulib module mkfifoat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mknod ++# define mknod rpl_mknod ++# endif ++_GL_FUNCDECL_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mknod, int, (char const *file, mode_t mode, dev_t dev)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mknod, int, (char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on OSF/1 5.1, the third parameter is '...'. */ ++_GL_CXXALIAS_SYS_CAST (mknod, int, (char const *file, mode_t mode, dev_t dev)); ++# endif ++_GL_CXXALIASWARN (mknod); ++#elif defined GNULIB_POSIXCHECK ++# undef mknod ++# if HAVE_RAW_DECL_MKNOD ++_GL_WARN_ON_USE (mknod, "mknod is not portable - " ++ "use gnulib module mknod for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (mknodat, int, ++ (int fd, char const *file, mode_t mode, dev_t dev) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mknodat, int, ++ (int fd, char const *file, mode_t mode, dev_t dev)); ++_GL_CXXALIASWARN (mknodat); ++#elif defined GNULIB_POSIXCHECK ++# undef mknodat ++# if HAVE_RAW_DECL_MKNODAT ++_GL_WARN_ON_USE (mknodat, "mknodat is not portable - " ++ "use gnulib module mkfifoat for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if (_MSC_VER < 1900) ++/* We can't use the object-like #define stat rpl_stat, because of ++ struct stat. This means that rpl_stat will not be used if the user ++ does (stat)(a,b). Oh well. */ ++# if defined _AIX && defined stat && defined _LARGE_FILES ++ /* With _LARGE_FILES defined, AIX (only) defines stat to stat64, ++ so we have to replace stat64() instead of stat(). */ ++# undef stat64 ++# define stat64(name, st) rpl_stat (name, st) ++# elif 1 ++ /* Above, we define stat to _stati64. */ ++# if defined __MINGW32__ && defined _stati64 ++# ifndef _USE_32BIT_TIME_T ++ /* The system headers define _stati64 to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# elif defined _MSC_VER && defined _stati64 ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define _stati64 to _stat32i64. */ ++# undef _stat32i64 ++# define _stat32i64(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define _stati64 to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# else ++# undef _stati64 ++# define _stati64(name, st) rpl_stat (name, st) ++# endif ++# elif defined __MINGW32__ && defined stat ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define stat to _stat32i64. */ ++# undef _stat32i64 ++# define _stat32i64(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define stat to _stat64. */ ++# undef _stat64 ++# define _stat64(name, st) rpl_stat (name, st) ++# endif ++# elif defined _MSC_VER && defined stat ++# ifdef _USE_32BIT_TIME_T ++ /* The system headers define stat to _stat32. */ ++# undef _stat32 ++# define _stat32(name, st) rpl_stat (name, st) ++# else ++ /* The system headers define stat to _stat64i32. */ ++# undef _stat64i32 ++# define _stat64i32(name, st) rpl_stat (name, st) ++# endif ++# else /* !(_AIX ||__MINGW32__ || _MSC_VER) */ ++# undef stat ++# define stat(name, st) rpl_stat (name, st) ++# endif /* !_LARGE_FILES */ ++_GL_EXTERN_C int stat (const char *name, struct stat *buf) ++ _GL_ARG_NONNULL ((1, 2)); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef stat ++# if HAVE_RAW_DECL_STAT ++_GL_WARN_ON_USE (stat, "stat is unportable - " ++ "use gnulib module stat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Use the rpl_ prefix also on Solaris <= 9, because on Solaris 9 our utimensat ++ implementation relies on futimesat, which on Solaris 10 makes an invocation ++ to utimensat that is meant to invoke the libc's utimensat(), not gnulib's ++ utimensat(). */ ++# if 0 || (!1 && defined __sun) ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef utimensat ++# define utimensat rpl_utimensat ++# endif ++_GL_FUNCDECL_RPL (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name, ++ struct timespec const times[2], int flag)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (utimensat); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef utimensat ++# if HAVE_RAW_DECL_UTIMENSAT ++_GL_WARN_ON_USE (utimensat, "utimensat is not portable - " ++ "use gnulib module utimensat for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_GTPO_SYS_STAT_H */ ++#endif /* _GL_GTPO_SYS_STAT_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/sys/time.h gettext-0.19/gettext-tools/libgettextpo/msvc/sys/time.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/sys/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/sys/time.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,525 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/time.h. ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Paul Eggert. */ ++ ++#ifndef _GL_GTPO_SYS_TIME_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* On Cygwin and on many BSDish systems, includes itself ++ recursively via . ++ Simply delegate to the system's header in this case; it is a no-op. ++ Without this extra ifdef, the C++ gettimeofday declaration below ++ would be a forward declaration in gnulib's nested . */ ++#if defined _CYGWIN_SYS_TIME_H || defined _SYS_TIME_H || defined _SYS_TIME_H_ ++# include ++#else ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# include ++#endif ++ ++#ifndef _GL_GTPO_SYS_TIME_H ++#define _GL_GTPO_SYS_TIME_H ++ ++#if ! 0 ++# include ++#endif ++ ++/* On native Windows with MSVC, get the 'struct timeval' type. ++ Also, on native Windows with a 64-bit time_t, where we are overriding the ++ 'struct timeval' type, get all declarations of system functions whose ++ signature contains 'struct timeval'. */ ++#if (defined _MSC_VER || 1) && 1 && !defined _GL_INCLUDING_WINSOCK2_H ++# define _GL_INCLUDING_WINSOCK2_H ++# include ++# undef _GL_INCLUDING_WINSOCK2_H ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#if !1 || 1 ++ ++# if 1 ++# define timeval rpl_timeval ++# endif ++ ++# if !GNULIB_defined_struct_timeval ++struct timeval ++{ ++ time_t tv_sec; ++ long int tv_usec; ++}; ++# define GNULIB_defined_struct_timeval 1 ++# endif ++ ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gettimeofday ++# define gettimeofday rpl_gettimeofday ++# endif ++_GL_FUNCDECL_RPL (gettimeofday, int, ++ (struct timeval *restrict, void *restrict) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gettimeofday, int, ++ (struct timeval *restrict, void *restrict)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (gettimeofday, int, ++ (struct timeval *restrict, void *restrict) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on glibc systems, by default, the second argument is ++ struct timezone *. */ ++_GL_CXXALIAS_SYS_CAST (gettimeofday, int, ++ (struct timeval *restrict, void *restrict)); ++# endif ++_GL_CXXALIASWARN (gettimeofday); ++#elif defined GNULIB_POSIXCHECK ++# undef gettimeofday ++# if HAVE_RAW_DECL_GETTIMEOFDAY ++_GL_WARN_ON_USE (gettimeofday, "gettimeofday is unportable - " ++ "use gnulib module gettimeofday for portability"); ++# endif ++#endif ++ ++/* Hide some function declarations from . */ ++ ++#if defined _MSC_VER && 1 ++# if !defined _GL_GTPO_UNISTD_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef close ++# define close close_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (close, ++ "close() used without including "); ++# endif ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gethostname ++# define gethostname gethostname_used_without_including_unistd_h ++# else ++ _GL_WARN_ON_USE (gethostname, ++ "gethostname() used without including "); ++# endif ++# endif ++# if !defined _GL_GTPO_SYS_SOCKET_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef socket ++# define socket socket_used_without_including_sys_socket_h ++# undef connect ++# define connect connect_used_without_including_sys_socket_h ++# undef accept ++# define accept accept_used_without_including_sys_socket_h ++# undef bind ++# define bind bind_used_without_including_sys_socket_h ++# undef getpeername ++# define getpeername getpeername_used_without_including_sys_socket_h ++# undef getsockname ++# define getsockname getsockname_used_without_including_sys_socket_h ++# undef getsockopt ++# define getsockopt getsockopt_used_without_including_sys_socket_h ++# undef listen ++# define listen listen_used_without_including_sys_socket_h ++# undef recv ++# define recv recv_used_without_including_sys_socket_h ++# undef send ++# define send send_used_without_including_sys_socket_h ++# undef recvfrom ++# define recvfrom recvfrom_used_without_including_sys_socket_h ++# undef sendto ++# define sendto sendto_used_without_including_sys_socket_h ++# undef setsockopt ++# define setsockopt setsockopt_used_without_including_sys_socket_h ++# undef shutdown ++# define shutdown shutdown_used_without_including_sys_socket_h ++# else ++ _GL_WARN_ON_USE (socket, ++ "socket() used without including "); ++ _GL_WARN_ON_USE (connect, ++ "connect() used without including "); ++ _GL_WARN_ON_USE (accept, ++ "accept() used without including "); ++ _GL_WARN_ON_USE (bind, ++ "bind() used without including "); ++ _GL_WARN_ON_USE (getpeername, ++ "getpeername() used without including "); ++ _GL_WARN_ON_USE (getsockname, ++ "getsockname() used without including "); ++ _GL_WARN_ON_USE (getsockopt, ++ "getsockopt() used without including "); ++ _GL_WARN_ON_USE (listen, ++ "listen() used without including "); ++ _GL_WARN_ON_USE (recv, ++ "recv() used without including "); ++ _GL_WARN_ON_USE (send, ++ "send() used without including "); ++ _GL_WARN_ON_USE (recvfrom, ++ "recvfrom() used without including "); ++ _GL_WARN_ON_USE (sendto, ++ "sendto() used without including "); ++ _GL_WARN_ON_USE (setsockopt, ++ "setsockopt() used without including "); ++ _GL_WARN_ON_USE (shutdown, ++ "shutdown() used without including "); ++# endif ++# endif ++# if !defined _GL_GTPO_SYS_SELECT_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef select ++# define select select_used_without_including_sys_select_h ++# else ++ _GL_WARN_ON_USE (select, ++ "select() used without including "); ++# endif ++# endif ++#endif ++ ++#endif /* _GL_GTPO_SYS_TIME_H */ ++#endif /* _CYGWIN_SYS_TIME_H */ ++#endif /* _GL_GTPO_SYS_TIME_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/sys/types.h gettext-0.19/gettext-tools/libgettextpo/msvc/sys/types.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/sys/types.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/sys/types.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,54 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Provide a more complete sys/types.h. ++ ++ Copyright (C) 2011-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifndef _GL_GTPO_SYS_TYPES_H ++ ++/* The include_next requires a split double-inclusion guard. */ ++# define _GL_INCLUDING_SYS_TYPES_H ++#include MSVC_INCLUDE(sys/types.h) ++# undef _GL_INCLUDING_SYS_TYPES_H ++ ++#ifndef _GL_GTPO_SYS_TYPES_H ++#define _GL_GTPO_SYS_TYPES_H ++ ++/* Override off_t if Large File Support is requested on native Windows. */ ++#if 1 ++/* Same as int64_t in . */ ++# if defined _MSC_VER ++# define off_t __int64 ++# else ++# define off_t long long int ++# endif ++/* Indicator, for gnulib internal purposes. */ ++# define _GL_WINDOWS_64_BIT_OFF_T 1 ++#endif ++ ++/* MSVC 9 defines size_t in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++#endif /* _GL_GTPO_SYS_TYPES_H */ ++#endif /* _GL_GTPO_SYS_TYPES_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/time.h gettext-0.19/gettext-tools/libgettextpo/msvc/time.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/time.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/time.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,609 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A more-standard . ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++/* Don't get in the way of glibc when it includes time.h merely to ++ declare a few standard symbols, rather than to declare all the ++ symbols. (However, skip this for MinGW as it treats __need_time_t ++ incompatibly.) Also, Solaris 8 eventually includes itself ++ recursively; if that is happening, just include the system ++ without adding our own declarations. */ ++#if (((defined __need_time_t || defined __need_clock_t \ ++ || defined __need_timespec) \ ++ && !defined __MINGW32__) \ ++ || defined _GL_GTPO_TIME_H) ++ ++# include MSVC_INCLUDE(time.h) ++ ++#else ++ ++# define _GL_GTPO_TIME_H ++ ++# include MSVC_INCLUDE(time.h) ++ ++/* NetBSD 5.0 mis-defines NULL. */ ++# include ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3). ++ Or they define it with the wrong member names or define it in ++ (e.g., FreeBSD circa 1997). Stock Mingw prior to 3.0 does not define it, ++ but the pthreads-win32 library defines it in . */ ++# if (_MSC_VER < 1900) ++# if 0 ++# include ++# elif 0 ++# include ++# elif 0 ++# include ++# else ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# if !GNULIB_defined_struct_timespec ++# undef timespec ++# define timespec rpl_timespec ++struct timespec ++{ ++ time_t tv_sec; ++ long int tv_nsec; ++}; ++# define GNULIB_defined_struct_timespec 1 ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++ ++# endif ++# endif ++ ++# if !GNULIB_defined_struct_time_t_must_be_integral ++/* Per http://austingroupbugs.net/view.php?id=327, POSIX requires ++ time_t to be an integer type, even though C99 permits floating ++ point. We don't know of any implementation that uses floating ++ point, and it is much easier to write code that doesn't have to ++ worry about that corner case, so we force the issue. */ ++struct __time_t_must_be_integral { ++ unsigned int __floating_time_t_unsupported : (time_t) 1; ++}; ++# define GNULIB_defined_struct_time_t_must_be_integral 1 ++# endif ++ ++/* Sleep for at least RQTP seconds unless interrupted, If interrupted, ++ return -1 and store the remaining time into RMTP. See ++ . */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define nanosleep rpl_nanosleep ++# endif ++_GL_FUNCDECL_RPL (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (nanosleep, int, ++ (struct timespec const *__rqtp, struct timespec *__rmtp)); ++# endif ++_GL_CXXALIASWARN (nanosleep); ++# endif ++ ++/* Return the 'time_t' representation of TP and normalize TP. */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define mktime rpl_mktime ++# endif ++_GL_FUNCDECL_RPL (mktime, time_t, (struct tm *__tp) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (mktime, time_t, (struct tm *__tp)); ++# else ++_GL_CXXALIAS_SYS (mktime, time_t, (struct tm *__tp)); ++# endif ++_GL_CXXALIASWARN (mktime); ++# endif ++ ++/* Convert TIMER to RESULT, assuming local time and UTC respectively. See ++ and ++ . */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localtime_r ++# define localtime_r rpl_localtime_r ++# endif ++_GL_FUNCDECL_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (localtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (localtime_r); ++# endif ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gmtime_r ++# define gmtime_r rpl_gmtime_r ++# endif ++_GL_FUNCDECL_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (gmtime_r, struct tm *, (time_t const *restrict __timer, ++ struct tm *restrict __result)); ++# endif ++# if 1 ++_GL_CXXALIASWARN (gmtime_r); ++# endif ++# endif ++ ++/* Convert TIMER to RESULT, assuming local time and UTC respectively. See ++ and ++ . */ ++# if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef localtime ++# define localtime rpl_localtime ++# endif ++_GL_FUNCDECL_RPL (localtime, struct tm *, (time_t const *__timer) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (localtime, struct tm *, (time_t const *__timer)); ++# else ++_GL_CXXALIAS_SYS (localtime, struct tm *, (time_t const *__timer)); ++# endif ++_GL_CXXALIASWARN (localtime); ++# endif ++ ++# if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gmtime ++# define gmtime rpl_gmtime ++# endif ++_GL_FUNCDECL_RPL (gmtime, struct tm *, (time_t const *__timer) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gmtime, struct tm *, (time_t const *__timer)); ++# else ++_GL_CXXALIAS_SYS (gmtime, struct tm *, (time_t const *__timer)); ++# endif ++_GL_CXXALIASWARN (gmtime); ++# endif ++ ++/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store ++ the resulting broken-down time into TM. See ++ . */ ++# if 0 ++# if ! 1 ++_GL_FUNCDECL_SYS (strptime, char *, (char const *restrict __buf, ++ char const *restrict __format, ++ struct tm *restrict __tm) ++ _GL_ARG_NONNULL ((1, 2, 3))); ++# endif ++_GL_CXXALIAS_SYS (strptime, char *, (char const *restrict __buf, ++ char const *restrict __format, ++ struct tm *restrict __tm)); ++_GL_CXXALIASWARN (strptime); ++# endif ++ ++# if defined _GNU_SOURCE && 0 && ! 0 ++typedef struct tm_zone *timezone_t; ++_GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name)); ++_GL_CXXALIAS_SYS (tzalloc, timezone_t, (char const *__name)); ++_GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz)); ++_GL_CXXALIAS_SYS (tzfree, void, (timezone_t __tz)); ++_GL_FUNCDECL_SYS (localtime_rz, struct tm *, ++ (timezone_t __tz, time_t const *restrict __timer, ++ struct tm *restrict __result) _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_SYS (localtime_rz, struct tm *, ++ (timezone_t __tz, time_t const *restrict __timer, ++ struct tm *restrict __result)); ++_GL_FUNCDECL_SYS (mktime_z, time_t, ++ (timezone_t __tz, struct tm *restrict __result) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_SYS (mktime_z, time_t, ++ (timezone_t __tz, struct tm *restrict __result)); ++# endif ++ ++/* Convert TM to a time_t value, assuming UTC. */ ++# if 0 ++# if GNULIB_PORTCHECK ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef timegm ++# define timegm rpl_timegm ++# endif ++_GL_FUNCDECL_RPL (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (timegm, time_t, (struct tm *__tm)); ++# else ++# if ! 1 ++_GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm)); ++# endif ++_GL_CXXALIASWARN (timegm); ++# endif ++ ++/* Encourage applications to avoid unsafe functions that can overrun ++ buffers when given outlandish struct tm values. Portable ++ applications should use strftime (or even sprintf) instead. */ ++# if defined GNULIB_POSIXCHECK ++# undef asctime ++_GL_WARN_ON_USE (asctime, "asctime can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef asctime_r ++_GL_WARN_ON_USE (asctime, "asctime_r can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef ctime ++_GL_WARN_ON_USE (asctime, "ctime can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++# if defined GNULIB_POSIXCHECK ++# undef ctime_r ++_GL_WARN_ON_USE (asctime, "ctime_r can overrun buffers in some cases - " ++ "better use strftime (or even sprintf) instead"); ++# endif ++ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/uniconv.h gettext-0.19/gettext-tools/libgettextpo/msvc/uniconv.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/uniconv.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/uniconv.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,173 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Conversions between Unicode and legacy encodings. ++ Copyright (C) 2002, 2005, 2007, 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNICONV_H ++#define _UNICONV_H ++ ++/* Get size_t. */ ++#include ++ ++#include "unitypes.h" ++ ++/* Get enum iconv_ilseq_handler. */ ++#include "iconveh.h" ++ ++/* Get uniconv_register_autodetect() declaration. */ ++#include "striconveha.h" ++ ++/* Get locale_charset() declaration. */ ++#include "localcharset.h" ++ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Converts an entire string, possibly including NUL bytes, from one encoding ++ to a Unicode encoding. ++ Converts a memory region given in encoding FROMCODE. FROMCODE is as for ++ iconv_open(3). ++ The input is in the memory region between SRC (inclusive) and SRC + SRCLEN ++ (exclusive). ++ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this ++ array is filled with offsets into the result, i.e. the character starting ++ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]], ++ and other offsets are set to (size_t)(-1). ++ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size, ++ or *RESULTBUF can be NULL. ++ May erase the contents of the memory at RESULTBUF. ++ If successful: The resulting Unicode string (non-NULL) is returned and its ++ length stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic ++ memory allocation was necessary, or a freshly allocated memory block ++ otherwise. ++ In case of error: NULL is returned and errno is set. Particular errno ++ values: EINVAL, EILSEQ, ENOMEM. */ ++extern uint8_t * ++ u8_conv_from_encoding (const char *fromcode, ++ enum iconv_ilseq_handler handler, ++ const char *src, size_t srclen, ++ size_t *offsets, ++ uint8_t *resultbuf, size_t *lengthp); ++extern uint16_t * ++ u16_conv_from_encoding (const char *fromcode, ++ enum iconv_ilseq_handler handler, ++ const char *src, size_t srclen, ++ size_t *offsets, ++ uint16_t *resultbuf, size_t *lengthp); ++extern uint32_t * ++ u32_conv_from_encoding (const char *fromcode, ++ enum iconv_ilseq_handler handler, ++ const char *src, size_t srclen, ++ size_t *offsets, ++ uint32_t *resultbuf, size_t *lengthp); ++ ++/* Converts an entire Unicode string, possibly including NUL units, from a ++ Unicode encoding to a given encoding. ++ Converts a memory region to encoding TOCODE. TOCODE is as for ++ iconv_open(3). ++ The input is in the memory region between SRC (inclusive) and SRC + SRCLEN ++ (exclusive). ++ If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this ++ array is filled with offsets into the result, i.e. the character starting ++ at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]], ++ and other offsets are set to (size_t)(-1). ++ RESULTBUF and *LENGTHP should initially be a scratch buffer and its size, ++ or RESULTBUF can be NULL. ++ May erase the contents of the memory at RESULTBUF. ++ If successful: The resulting string (non-NULL) is returned and its length ++ stored in *LENGTHP. The resulting string is RESULTBUF if no dynamic memory ++ allocation was necessary, or a freshly allocated memory block otherwise. ++ In case of error: NULL is returned and errno is set. Particular errno ++ values: EINVAL, EILSEQ, ENOMEM. */ ++extern char * ++ u8_conv_to_encoding (const char *tocode, ++ enum iconv_ilseq_handler handler, ++ const uint8_t *src, size_t srclen, ++ size_t *offsets, ++ char *resultbuf, size_t *lengthp); ++extern char * ++ u16_conv_to_encoding (const char *tocode, ++ enum iconv_ilseq_handler handler, ++ const uint16_t *src, size_t srclen, ++ size_t *offsets, ++ char *resultbuf, size_t *lengthp); ++extern char * ++ u32_conv_to_encoding (const char *tocode, ++ enum iconv_ilseq_handler handler, ++ const uint32_t *src, size_t srclen, ++ size_t *offsets, ++ char *resultbuf, size_t *lengthp); ++ ++/* Converts a NUL terminated string from a given encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: EILSEQ, ENOMEM. */ ++extern uint8_t * ++ u8_strconv_from_encoding (const char *string, ++ const char *fromcode, ++ enum iconv_ilseq_handler handler); ++extern uint16_t * ++ u16_strconv_from_encoding (const char *string, ++ const char *fromcode, ++ enum iconv_ilseq_handler handler); ++extern uint32_t * ++ u32_strconv_from_encoding (const char *string, ++ const char *fromcode, ++ enum iconv_ilseq_handler handler); ++ ++/* Converts a NUL terminated string to a given encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: EILSEQ, ENOMEM. */ ++extern char * ++ u8_strconv_to_encoding (const uint8_t *string, ++ const char *tocode, ++ enum iconv_ilseq_handler handler); ++extern char * ++ u16_strconv_to_encoding (const uint16_t *string, ++ const char *tocode, ++ enum iconv_ilseq_handler handler); ++extern char * ++ u32_strconv_to_encoding (const uint32_t *string, ++ const char *tocode, ++ enum iconv_ilseq_handler handler); ++ ++/* Converts a NUL terminated string from the locale encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: ENOMEM. */ ++extern uint8_t * ++ u8_strconv_from_locale (const char *string); ++extern uint16_t * ++ u16_strconv_from_locale (const char *string); ++extern uint32_t * ++ u32_strconv_from_locale (const char *string); ++ ++/* Converts a NUL terminated string to the locale encoding. ++ The result is malloc allocated, or NULL (with errno set) in case of error. ++ Particular errno values: ENOMEM. */ ++extern char * ++ u8_strconv_to_locale (const uint8_t *string); ++extern char * ++ u16_strconv_to_locale (const uint16_t *string); ++extern char * ++ u32_strconv_to_locale (const uint32_t *string); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNICONV_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unictype.h gettext-0.19/gettext-tools/libgettextpo/msvc/unictype.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unictype.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/unictype.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1051 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Unicode character classification and properties. ++ Copyright (C) 2002, 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNICTYPE_H ++#define _UNICTYPE_H ++ ++#include "unitypes.h" ++ ++/* Get bool. */ ++#include ++ ++/* Get size_t. */ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* ========================================================================= */ ++ ++/* Field 1 of Unicode Character Database: Character name. ++ See "uniname.h". */ ++ ++/* ========================================================================= */ ++ ++/* Field 2 of Unicode Character Database: General category. */ ++ ++/* Data type denoting a General category value. This is not just a bitmask, ++ but rather a bitmask and a pointer to the lookup table, so that programs ++ that use only the predefined bitmasks (i.e. don't combine bitmasks with & ++ and |) don't have a link-time dependency towards the big general table. */ ++typedef struct ++{ ++ uint32_t bitmask : 31; ++ /*bool*/ unsigned int generic : 1; ++ union ++ { ++ const void *table; /* when generic is 0 */ ++ bool (*lookup_fn) (ucs4_t uc, uint32_t bitmask); /* when generic is 1 */ ++ } lookup; ++} ++uc_general_category_t; ++ ++/* Bits and bit masks denoting General category values. UnicodeData-3.2.0.html ++ says a 32-bit integer will always suffice to represent them. ++ These bit masks can only be used with the uc_is_general_category_withtable ++ function. */ ++enum ++{ ++ UC_CATEGORY_MASK_L = 0x0000001f, ++ UC_CATEGORY_MASK_LC = 0x00000007, ++ UC_CATEGORY_MASK_Lu = 0x00000001, ++ UC_CATEGORY_MASK_Ll = 0x00000002, ++ UC_CATEGORY_MASK_Lt = 0x00000004, ++ UC_CATEGORY_MASK_Lm = 0x00000008, ++ UC_CATEGORY_MASK_Lo = 0x00000010, ++ UC_CATEGORY_MASK_M = 0x000000e0, ++ UC_CATEGORY_MASK_Mn = 0x00000020, ++ UC_CATEGORY_MASK_Mc = 0x00000040, ++ UC_CATEGORY_MASK_Me = 0x00000080, ++ UC_CATEGORY_MASK_N = 0x00000700, ++ UC_CATEGORY_MASK_Nd = 0x00000100, ++ UC_CATEGORY_MASK_Nl = 0x00000200, ++ UC_CATEGORY_MASK_No = 0x00000400, ++ UC_CATEGORY_MASK_P = 0x0003f800, ++ UC_CATEGORY_MASK_Pc = 0x00000800, ++ UC_CATEGORY_MASK_Pd = 0x00001000, ++ UC_CATEGORY_MASK_Ps = 0x00002000, ++ UC_CATEGORY_MASK_Pe = 0x00004000, ++ UC_CATEGORY_MASK_Pi = 0x00008000, ++ UC_CATEGORY_MASK_Pf = 0x00010000, ++ UC_CATEGORY_MASK_Po = 0x00020000, ++ UC_CATEGORY_MASK_S = 0x003c0000, ++ UC_CATEGORY_MASK_Sm = 0x00040000, ++ UC_CATEGORY_MASK_Sc = 0x00080000, ++ UC_CATEGORY_MASK_Sk = 0x00100000, ++ UC_CATEGORY_MASK_So = 0x00200000, ++ UC_CATEGORY_MASK_Z = 0x01c00000, ++ UC_CATEGORY_MASK_Zs = 0x00400000, ++ UC_CATEGORY_MASK_Zl = 0x00800000, ++ UC_CATEGORY_MASK_Zp = 0x01000000, ++ UC_CATEGORY_MASK_C = 0x3e000000, ++ UC_CATEGORY_MASK_Cc = 0x02000000, ++ UC_CATEGORY_MASK_Cf = 0x04000000, ++ UC_CATEGORY_MASK_Cs = 0x08000000, ++ UC_CATEGORY_MASK_Co = 0x10000000, ++ UC_CATEGORY_MASK_Cn = 0x20000000 ++}; ++ ++/* Predefined General category values. */ ++extern const uc_general_category_t UC_CATEGORY_L; ++extern const uc_general_category_t UC_CATEGORY_LC; ++extern const uc_general_category_t UC_CATEGORY_Lu; ++extern const uc_general_category_t UC_CATEGORY_Ll; ++extern const uc_general_category_t UC_CATEGORY_Lt; ++extern const uc_general_category_t UC_CATEGORY_Lm; ++extern const uc_general_category_t UC_CATEGORY_Lo; ++extern const uc_general_category_t UC_CATEGORY_M; ++extern const uc_general_category_t UC_CATEGORY_Mn; ++extern const uc_general_category_t UC_CATEGORY_Mc; ++extern const uc_general_category_t UC_CATEGORY_Me; ++extern const uc_general_category_t UC_CATEGORY_N; ++extern const uc_general_category_t UC_CATEGORY_Nd; ++extern const uc_general_category_t UC_CATEGORY_Nl; ++extern const uc_general_category_t UC_CATEGORY_No; ++extern const uc_general_category_t UC_CATEGORY_P; ++extern const uc_general_category_t UC_CATEGORY_Pc; ++extern const uc_general_category_t UC_CATEGORY_Pd; ++extern const uc_general_category_t UC_CATEGORY_Ps; ++extern const uc_general_category_t UC_CATEGORY_Pe; ++extern const uc_general_category_t UC_CATEGORY_Pi; ++extern const uc_general_category_t UC_CATEGORY_Pf; ++extern const uc_general_category_t UC_CATEGORY_Po; ++extern const uc_general_category_t UC_CATEGORY_S; ++extern const uc_general_category_t UC_CATEGORY_Sm; ++extern const uc_general_category_t UC_CATEGORY_Sc; ++extern const uc_general_category_t UC_CATEGORY_Sk; ++extern const uc_general_category_t UC_CATEGORY_So; ++extern const uc_general_category_t UC_CATEGORY_Z; ++extern const uc_general_category_t UC_CATEGORY_Zs; ++extern const uc_general_category_t UC_CATEGORY_Zl; ++extern const uc_general_category_t UC_CATEGORY_Zp; ++extern const uc_general_category_t UC_CATEGORY_C; ++extern const uc_general_category_t UC_CATEGORY_Cc; ++extern const uc_general_category_t UC_CATEGORY_Cf; ++extern const uc_general_category_t UC_CATEGORY_Cs; ++extern const uc_general_category_t UC_CATEGORY_Co; ++extern const uc_general_category_t UC_CATEGORY_Cn; ++/* Non-public. */ ++extern const uc_general_category_t _UC_CATEGORY_NONE; ++ ++/* Alias names for predefined General category values. */ ++#define UC_LETTER UC_CATEGORY_L ++#define UC_CASED_LETTER UC_CATEGORY_LC ++#define UC_UPPERCASE_LETTER UC_CATEGORY_Lu ++#define UC_LOWERCASE_LETTER UC_CATEGORY_Ll ++#define UC_TITLECASE_LETTER UC_CATEGORY_Lt ++#define UC_MODIFIER_LETTER UC_CATEGORY_Lm ++#define UC_OTHER_LETTER UC_CATEGORY_Lo ++#define UC_MARK UC_CATEGORY_M ++#define UC_NON_SPACING_MARK UC_CATEGORY_Mn ++#define UC_COMBINING_SPACING_MARK UC_CATEGORY_Mc ++#define UC_ENCLOSING_MARK UC_CATEGORY_Me ++#define UC_NUMBER UC_CATEGORY_N ++#define UC_DECIMAL_DIGIT_NUMBER UC_CATEGORY_Nd ++#define UC_LETTER_NUMBER UC_CATEGORY_Nl ++#define UC_OTHER_NUMBER UC_CATEGORY_No ++#define UC_PUNCTUATION UC_CATEGORY_P ++#define UC_CONNECTOR_PUNCTUATION UC_CATEGORY_Pc ++#define UC_DASH_PUNCTUATION UC_CATEGORY_Pd ++#define UC_OPEN_PUNCTUATION UC_CATEGORY_Ps /* a.k.a. UC_START_PUNCTUATION */ ++#define UC_CLOSE_PUNCTUATION UC_CATEGORY_Pe /* a.k.a. UC_END_PUNCTUATION */ ++#define UC_INITIAL_QUOTE_PUNCTUATION UC_CATEGORY_Pi ++#define UC_FINAL_QUOTE_PUNCTUATION UC_CATEGORY_Pf ++#define UC_OTHER_PUNCTUATION UC_CATEGORY_Po ++#define UC_SYMBOL UC_CATEGORY_S ++#define UC_MATH_SYMBOL UC_CATEGORY_Sm ++#define UC_CURRENCY_SYMBOL UC_CATEGORY_Sc ++#define UC_MODIFIER_SYMBOL UC_CATEGORY_Sk ++#define UC_OTHER_SYMBOL UC_CATEGORY_So ++#define UC_SEPARATOR UC_CATEGORY_Z ++#define UC_SPACE_SEPARATOR UC_CATEGORY_Zs ++#define UC_LINE_SEPARATOR UC_CATEGORY_Zl ++#define UC_PARAGRAPH_SEPARATOR UC_CATEGORY_Zp ++#define UC_OTHER UC_CATEGORY_C ++#define UC_CONTROL UC_CATEGORY_Cc ++#define UC_FORMAT UC_CATEGORY_Cf ++#define UC_SURROGATE UC_CATEGORY_Cs /* all of them are invalid characters */ ++#define UC_PRIVATE_USE UC_CATEGORY_Co ++#define UC_UNASSIGNED UC_CATEGORY_Cn /* some of them are invalid characters */ ++ ++/* Return the union of two general categories. ++ This corresponds to the unions of the two sets of characters. */ ++extern uc_general_category_t ++ uc_general_category_or (uc_general_category_t category1, ++ uc_general_category_t category2); ++ ++/* Return the intersection of two general categories as bit masks. ++ This *does*not* correspond to the intersection of the two sets of ++ characters. */ ++extern uc_general_category_t ++ uc_general_category_and (uc_general_category_t category1, ++ uc_general_category_t category2); ++ ++/* Return the intersection of a general category with the complement of a ++ second general category, as bit masks. ++ This *does*not* correspond to the intersection with complement, when ++ viewing the categories as sets of characters. */ ++extern uc_general_category_t ++ uc_general_category_and_not (uc_general_category_t category1, ++ uc_general_category_t category2); ++ ++/* Return the name of a general category. */ ++extern const char * ++ uc_general_category_name (uc_general_category_t category) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the long name of a general category. */ ++extern const char * ++ uc_general_category_long_name (uc_general_category_t category) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the general category given by name, e.g. "Lu", or by long name, ++ e.g. "Uppercase Letter". */ ++extern uc_general_category_t ++ uc_general_category_byname (const char *category_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the general category of a Unicode character. */ ++extern uc_general_category_t ++ uc_general_category (ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether a Unicode character belongs to a given category. ++ The CATEGORY argument can be the combination of several predefined ++ general categories. */ ++extern bool ++ uc_is_general_category (ucs4_t uc, uc_general_category_t category) ++ _UC_ATTRIBUTE_PURE; ++/* Likewise. This function uses a big table comprising all categories. */ ++extern bool ++ uc_is_general_category_withtable (ucs4_t uc, uint32_t bitmask) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 3 of Unicode Character Database: Canonical combining class. */ ++ ++/* The possible results of uc_combining_class (0..255) are described in ++ UCD.html. The list here is not definitive; more values can be added ++ in future versions. */ ++enum ++{ ++ UC_CCC_NR = 0, /* Not Reordered */ ++ UC_CCC_OV = 1, /* Overlay */ ++ UC_CCC_NK = 7, /* Nukta */ ++ UC_CCC_KV = 8, /* Kana Voicing */ ++ UC_CCC_VR = 9, /* Virama */ ++ UC_CCC_ATBL = 200, /* Attached Below Left */ ++ UC_CCC_ATB = 202, /* Attached Below */ ++ UC_CCC_ATA = 214, /* Attached Above */ ++ UC_CCC_ATAR = 216, /* Attached Above Right */ ++ UC_CCC_BL = 218, /* Below Left */ ++ UC_CCC_B = 220, /* Below */ ++ UC_CCC_BR = 222, /* Below Right */ ++ UC_CCC_L = 224, /* Left */ ++ UC_CCC_R = 226, /* Right */ ++ UC_CCC_AL = 228, /* Above Left */ ++ UC_CCC_A = 230, /* Above */ ++ UC_CCC_AR = 232, /* Above Right */ ++ UC_CCC_DB = 233, /* Double Below */ ++ UC_CCC_DA = 234, /* Double Above */ ++ UC_CCC_IS = 240 /* Iota Subscript */ ++}; ++ ++/* Return the canonical combining class of a Unicode character. */ ++extern int ++ uc_combining_class (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the name of a canonical combining class. */ ++extern const char * ++ uc_combining_class_name (int ccc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the long name of a canonical combining class. */ ++extern const char * ++ uc_combining_class_long_name (int ccc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the canonical combining class given by name, e.g. "BL", or by long ++ name, e.g. "Below Left". */ ++extern int ++ uc_combining_class_byname (const char *ccc_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* ========================================================================= */ ++ ++/* Field 4 of Unicode Character Database: Bidi class. ++ Before Unicode 4.0, this field was called "Bidirectional category". */ ++ ++enum ++{ ++ UC_BIDI_L, /* Left-to-Right */ ++ UC_BIDI_LRE, /* Left-to-Right Embedding */ ++ UC_BIDI_LRO, /* Left-to-Right Override */ ++ UC_BIDI_R, /* Right-to-Left */ ++ UC_BIDI_AL, /* Right-to-Left Arabic */ ++ UC_BIDI_RLE, /* Right-to-Left Embedding */ ++ UC_BIDI_RLO, /* Right-to-Left Override */ ++ UC_BIDI_PDF, /* Pop Directional Format */ ++ UC_BIDI_EN, /* European Number */ ++ UC_BIDI_ES, /* European Number Separator */ ++ UC_BIDI_ET, /* European Number Terminator */ ++ UC_BIDI_AN, /* Arabic Number */ ++ UC_BIDI_CS, /* Common Number Separator */ ++ UC_BIDI_NSM, /* Non-Spacing Mark */ ++ UC_BIDI_BN, /* Boundary Neutral */ ++ UC_BIDI_B, /* Paragraph Separator */ ++ UC_BIDI_S, /* Segment Separator */ ++ UC_BIDI_WS, /* Whitespace */ ++ UC_BIDI_ON, /* Other Neutral */ ++ UC_BIDI_LRI, /* Left-to-Right Isolate */ ++ UC_BIDI_RLI, /* Right-to-Left Isolate */ ++ UC_BIDI_FSI, /* First Strong Isolate */ ++ UC_BIDI_PDI /* Pop Directional Isolate */ ++}; ++ ++/* Return the name of a bidi class. */ ++extern const char * ++ uc_bidi_class_name (int bidi_class) ++ _UC_ATTRIBUTE_CONST; ++/* Same; obsolete function name. */ ++extern const char * ++ uc_bidi_category_name (int category) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the long name of a bidi class. */ ++extern const char * ++ uc_bidi_class_long_name (int bidi_class) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the bidi class given by name, e.g. "LRE", or by long name, e.g. ++ "Left-to-Right Embedding". */ ++extern int ++ uc_bidi_class_byname (const char *bidi_class_name) ++ _UC_ATTRIBUTE_PURE; ++/* Same; obsolete function name. */ ++extern int ++ uc_bidi_category_byname (const char *category_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the bidi class of a Unicode character. */ ++extern int ++ uc_bidi_class (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++/* Same; obsolete function name. */ ++extern int ++ uc_bidi_category (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test whether a Unicode character belongs to a given bidi class. */ ++extern bool ++ uc_is_bidi_class (ucs4_t uc, int bidi_class) ++ _UC_ATTRIBUTE_CONST; ++/* Same; obsolete function name. */ ++extern bool ++ uc_is_bidi_category (ucs4_t uc, int category) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 5 of Unicode Character Database: Character decomposition mapping. ++ See "uninorm.h". */ ++ ++/* ========================================================================= */ ++ ++/* Field 6 of Unicode Character Database: Decimal digit value. */ ++ ++/* Return the decimal digit value of a Unicode character. */ ++extern int ++ uc_decimal_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 7 of Unicode Character Database: Digit value. */ ++ ++/* Return the digit value of a Unicode character. */ ++extern int ++ uc_digit_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 8 of Unicode Character Database: Numeric value. */ ++ ++/* Return the numeric value of a Unicode character. */ ++typedef struct ++{ ++ int numerator; ++ int denominator; ++} ++uc_fraction_t; ++extern uc_fraction_t ++ uc_numeric_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 9 of Unicode Character Database: Mirrored. */ ++ ++/* Return the mirrored character of a Unicode character UC in *PUC. */ ++extern bool ++ uc_mirror_char (ucs4_t uc, ucs4_t *puc); ++ ++/* ========================================================================= */ ++ ++/* Field 10 of Unicode Character Database: Unicode 1.0 Name. ++ Not available in this library. */ ++ ++/* ========================================================================= */ ++ ++/* Field 11 of Unicode Character Database: ISO 10646 comment. ++ Not available in this library. */ ++ ++/* ========================================================================= */ ++ ++/* Field 12, 13, 14 of Unicode Character Database: Uppercase mapping, ++ lowercase mapping, titlecase mapping. See "unicase.h". */ ++ ++/* ========================================================================= */ ++ ++/* Field 2 of the file ArabicShaping.txt in the Unicode Character Database. */ ++ ++/* Possible joining types. */ ++enum ++{ ++ UC_JOINING_TYPE_U, /* Non_Joining */ ++ UC_JOINING_TYPE_T, /* Transparent */ ++ UC_JOINING_TYPE_C, /* Join_Causing */ ++ UC_JOINING_TYPE_L, /* Left_Joining */ ++ UC_JOINING_TYPE_R, /* Right_Joining */ ++ UC_JOINING_TYPE_D /* Dual_Joining */ ++}; ++ ++/* Return the name of a joining type. */ ++extern const char * ++ uc_joining_type_name (int joining_type) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the long name of a joining type. */ ++extern const char * ++ uc_joining_type_long_name (int joining_type) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the joining type given by name, e.g. "D", or by long name, e.g. ++ "Dual Joining". */ ++extern int ++ uc_joining_type_byname (const char *joining_type_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the joining type of a Unicode character. */ ++extern int ++ uc_joining_type (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Field 3 of the file ArabicShaping.txt in the Unicode Character Database. */ ++ ++/* Possible joining groups. ++ This enumeration may be extended in the future. */ ++enum ++{ ++ UC_JOINING_GROUP_NONE, /* No_Joining_Group */ ++ UC_JOINING_GROUP_AIN, /* Ain */ ++ UC_JOINING_GROUP_ALAPH, /* Alaph */ ++ UC_JOINING_GROUP_ALEF, /* Alef */ ++ UC_JOINING_GROUP_BEH, /* Beh */ ++ UC_JOINING_GROUP_BETH, /* Beth */ ++ UC_JOINING_GROUP_BURUSHASKI_YEH_BARREE, /* Burushaski_Yeh_Barree */ ++ UC_JOINING_GROUP_DAL, /* Dal */ ++ UC_JOINING_GROUP_DALATH_RISH, /* Dalath_Rish */ ++ UC_JOINING_GROUP_E, /* E */ ++ UC_JOINING_GROUP_FARSI_YEH, /* Farsi_Yeh */ ++ UC_JOINING_GROUP_FE, /* Fe */ ++ UC_JOINING_GROUP_FEH, /* Feh */ ++ UC_JOINING_GROUP_FINAL_SEMKATH, /* Final_Semkath */ ++ UC_JOINING_GROUP_GAF, /* Gaf */ ++ UC_JOINING_GROUP_GAMAL, /* Gamal */ ++ UC_JOINING_GROUP_HAH, /* Hah */ ++ UC_JOINING_GROUP_HE, /* He */ ++ UC_JOINING_GROUP_HEH, /* Heh */ ++ UC_JOINING_GROUP_HEH_GOAL, /* Heh_Goal */ ++ UC_JOINING_GROUP_HETH, /* Heth */ ++ UC_JOINING_GROUP_KAF, /* Kaf */ ++ UC_JOINING_GROUP_KAPH, /* Kaph */ ++ UC_JOINING_GROUP_KHAPH, /* Khaph */ ++ UC_JOINING_GROUP_KNOTTED_HEH, /* Knotted_Heh */ ++ UC_JOINING_GROUP_LAM, /* Lam */ ++ UC_JOINING_GROUP_LAMADH, /* Lamadh */ ++ UC_JOINING_GROUP_MEEM, /* Meem */ ++ UC_JOINING_GROUP_MIM, /* Mim */ ++ UC_JOINING_GROUP_NOON, /* Noon */ ++ UC_JOINING_GROUP_NUN, /* Nun */ ++ UC_JOINING_GROUP_NYA, /* Nya */ ++ UC_JOINING_GROUP_PE, /* Pe */ ++ UC_JOINING_GROUP_QAF, /* Qaf */ ++ UC_JOINING_GROUP_QAPH, /* Qaph */ ++ UC_JOINING_GROUP_REH, /* Reh */ ++ UC_JOINING_GROUP_REVERSED_PE, /* Reversed_Pe */ ++ UC_JOINING_GROUP_SAD, /* Sad */ ++ UC_JOINING_GROUP_SADHE, /* Sadhe */ ++ UC_JOINING_GROUP_SEEN, /* Seen */ ++ UC_JOINING_GROUP_SEMKATH, /* Semkath */ ++ UC_JOINING_GROUP_SHIN, /* Shin */ ++ UC_JOINING_GROUP_SWASH_KAF, /* Swash_Kaf */ ++ UC_JOINING_GROUP_SYRIAC_WAW, /* Syriac_Waw */ ++ UC_JOINING_GROUP_TAH, /* Tah */ ++ UC_JOINING_GROUP_TAW, /* Taw */ ++ UC_JOINING_GROUP_TEH_MARBUTA, /* Teh_Marbuta */ ++ UC_JOINING_GROUP_TEH_MARBUTA_GOAL, /* Teh_Marbuta_Goal */ ++ UC_JOINING_GROUP_TETH, /* Teth */ ++ UC_JOINING_GROUP_WAW, /* Waw */ ++ UC_JOINING_GROUP_YEH, /* Yeh */ ++ UC_JOINING_GROUP_YEH_BARREE, /* Yeh_Barree */ ++ UC_JOINING_GROUP_YEH_WITH_TAIL, /* Yeh_With_Tail */ ++ UC_JOINING_GROUP_YUDH, /* Yudh */ ++ UC_JOINING_GROUP_YUDH_HE, /* Yudh_He */ ++ UC_JOINING_GROUP_ZAIN, /* Zain */ ++ UC_JOINING_GROUP_ZHAIN, /* Zhain */ ++ UC_JOINING_GROUP_ROHINGYA_YEH, /* Rohingya_Yeh */ ++ UC_JOINING_GROUP_STRAIGHT_WAW, /* Straight_Waw */ ++ UC_JOINING_GROUP_MANICHAEAN_ALEPH, /* Manichaean_Aleph */ ++ UC_JOINING_GROUP_MANICHAEAN_BETH, /* Manichaean_Beth */ ++ UC_JOINING_GROUP_MANICHAEAN_GIMEL, /* Manichaean_Gimel */ ++ UC_JOINING_GROUP_MANICHAEAN_DALETH, /* Manichaean_Daleth */ ++ UC_JOINING_GROUP_MANICHAEAN_WAW, /* Manichaean_Waw */ ++ UC_JOINING_GROUP_MANICHAEAN_ZAYIN, /* Manichaean_Zayin */ ++ UC_JOINING_GROUP_MANICHAEAN_HETH, /* Manichaean_Heth */ ++ UC_JOINING_GROUP_MANICHAEAN_TETH, /* Manichaean_Teth */ ++ UC_JOINING_GROUP_MANICHAEAN_YODH, /* Manichaean_Yodh */ ++ UC_JOINING_GROUP_MANICHAEAN_KAPH, /* Manichaean_Kaph */ ++ UC_JOINING_GROUP_MANICHAEAN_LAMEDH, /* Manichaean_Lamedh */ ++ UC_JOINING_GROUP_MANICHAEAN_DHAMEDH, /* Manichaean_Dhamedh */ ++ UC_JOINING_GROUP_MANICHAEAN_THAMEDH, /* Manichaean_Thamedh */ ++ UC_JOINING_GROUP_MANICHAEAN_MEM, /* Manichaean_Mem */ ++ UC_JOINING_GROUP_MANICHAEAN_NUN, /* Manichaean_Nun */ ++ UC_JOINING_GROUP_MANICHAEAN_SAMEKH, /* Manichaean_Aleph */ ++ UC_JOINING_GROUP_MANICHAEAN_AYIN, /* Manichaean_Ayin */ ++ UC_JOINING_GROUP_MANICHAEAN_PE, /* Manichaean_Pe */ ++ UC_JOINING_GROUP_MANICHAEAN_SADHE, /* Manichaean_Sadhe */ ++ UC_JOINING_GROUP_MANICHAEAN_QOPH, /* Manichaean_Qoph */ ++ UC_JOINING_GROUP_MANICHAEAN_RESH, /* Manichaean_Resh */ ++ UC_JOINING_GROUP_MANICHAEAN_TAW, /* Manichaean_Taw */ ++ UC_JOINING_GROUP_MANICHAEAN_ONE, /* Manichaean_One */ ++ UC_JOINING_GROUP_MANICHAEAN_FIVE, /* Manichaean_Five */ ++ UC_JOINING_GROUP_MANICHAEAN_TEN, /* Manichaean_Ten */ ++ UC_JOINING_GROUP_MANICHAEAN_TWENTY, /* Manichaean_Twenty */ ++ UC_JOINING_GROUP_MANICHAEAN_HUNDRED /* Manichaean_Hundred */ ++}; ++ ++/* Return the name of a joining group. */ ++extern const char * ++ uc_joining_group_name (int joining_group) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the joining group given by name, e.g. "Teh_Marbuta". */ ++extern int ++ uc_joining_group_byname (const char *joining_group_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the joining group of a Unicode character. */ ++extern int ++ uc_joining_group (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Common API for properties. */ ++ ++/* Data type denoting a property. This is not just a number, but rather a ++ pointer to the test functions, so that programs that use only few of the ++ properties don't have a link-time dependency towards all the tables. */ ++typedef struct ++{ ++ bool (*test_fn) (ucs4_t uc); ++} ++uc_property_t; ++ ++/* Predefined properties. */ ++/* General. */ ++extern const uc_property_t UC_PROPERTY_WHITE_SPACE; ++extern const uc_property_t UC_PROPERTY_ALPHABETIC; ++extern const uc_property_t UC_PROPERTY_OTHER_ALPHABETIC; ++extern const uc_property_t UC_PROPERTY_NOT_A_CHARACTER; ++extern const uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT; ++extern const uc_property_t UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT; ++extern const uc_property_t UC_PROPERTY_DEPRECATED; ++extern const uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION; ++extern const uc_property_t UC_PROPERTY_VARIATION_SELECTOR; ++extern const uc_property_t UC_PROPERTY_PRIVATE_USE; ++extern const uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE; ++/* Case. */ ++extern const uc_property_t UC_PROPERTY_UPPERCASE; ++extern const uc_property_t UC_PROPERTY_OTHER_UPPERCASE; ++extern const uc_property_t UC_PROPERTY_LOWERCASE; ++extern const uc_property_t UC_PROPERTY_OTHER_LOWERCASE; ++extern const uc_property_t UC_PROPERTY_TITLECASE; ++extern const uc_property_t UC_PROPERTY_CASED; ++extern const uc_property_t UC_PROPERTY_CASE_IGNORABLE; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_LOWERCASED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_UPPERCASED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_TITLECASED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEFOLDED; ++extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEMAPPED; ++extern const uc_property_t UC_PROPERTY_SOFT_DOTTED; ++/* Identifiers. */ ++extern const uc_property_t UC_PROPERTY_ID_START; ++extern const uc_property_t UC_PROPERTY_OTHER_ID_START; ++extern const uc_property_t UC_PROPERTY_ID_CONTINUE; ++extern const uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE; ++extern const uc_property_t UC_PROPERTY_XID_START; ++extern const uc_property_t UC_PROPERTY_XID_CONTINUE; ++extern const uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE; ++extern const uc_property_t UC_PROPERTY_PATTERN_SYNTAX; ++/* Shaping and rendering. */ ++extern const uc_property_t UC_PROPERTY_JOIN_CONTROL; ++extern const uc_property_t UC_PROPERTY_GRAPHEME_BASE; ++extern const uc_property_t UC_PROPERTY_GRAPHEME_EXTEND; ++extern const uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND; ++extern const uc_property_t UC_PROPERTY_GRAPHEME_LINK; ++/* Bidi. */ ++extern const uc_property_t UC_PROPERTY_BIDI_CONTROL; ++extern const uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT; ++extern const uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT; ++extern const uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT; ++extern const uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT; ++extern const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT; ++extern const uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_BIDI_WHITESPACE; ++extern const uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK; ++extern const uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL; ++extern const uc_property_t UC_PROPERTY_BIDI_PDF; ++extern const uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE; ++extern const uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL; ++/* Numeric. */ ++extern const uc_property_t UC_PROPERTY_HEX_DIGIT; ++extern const uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT; ++/* CJK. */ ++extern const uc_property_t UC_PROPERTY_IDEOGRAPHIC; ++extern const uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH; ++extern const uc_property_t UC_PROPERTY_RADICAL; ++extern const uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR; ++extern const uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR; ++/* Misc. */ ++extern const uc_property_t UC_PROPERTY_ZERO_WIDTH; ++extern const uc_property_t UC_PROPERTY_SPACE; ++extern const uc_property_t UC_PROPERTY_NON_BREAK; ++extern const uc_property_t UC_PROPERTY_ISO_CONTROL; ++extern const uc_property_t UC_PROPERTY_FORMAT_CONTROL; ++extern const uc_property_t UC_PROPERTY_DASH; ++extern const uc_property_t UC_PROPERTY_HYPHEN; ++extern const uc_property_t UC_PROPERTY_PUNCTUATION; ++extern const uc_property_t UC_PROPERTY_LINE_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR; ++extern const uc_property_t UC_PROPERTY_QUOTATION_MARK; ++extern const uc_property_t UC_PROPERTY_SENTENCE_TERMINAL; ++extern const uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION; ++extern const uc_property_t UC_PROPERTY_CURRENCY_SYMBOL; ++extern const uc_property_t UC_PROPERTY_MATH; ++extern const uc_property_t UC_PROPERTY_OTHER_MATH; ++extern const uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION; ++extern const uc_property_t UC_PROPERTY_LEFT_OF_PAIR; ++extern const uc_property_t UC_PROPERTY_COMBINING; ++extern const uc_property_t UC_PROPERTY_COMPOSITE; ++extern const uc_property_t UC_PROPERTY_DECIMAL_DIGIT; ++extern const uc_property_t UC_PROPERTY_NUMERIC; ++extern const uc_property_t UC_PROPERTY_DIACRITIC; ++extern const uc_property_t UC_PROPERTY_EXTENDER; ++extern const uc_property_t UC_PROPERTY_IGNORABLE_CONTROL; ++ ++/* Return the property given by name, e.g. "White space". */ ++extern uc_property_t ++ uc_property_byname (const char *property_name); ++ ++/* Test whether a property is valid. */ ++#define uc_property_is_valid(property) ((property).test_fn != NULL) ++ ++/* Test whether a Unicode character has a given property. */ ++extern bool ++ uc_is_property (ucs4_t uc, uc_property_t property); ++extern bool uc_is_property_white_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_alphabetic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_alphabetic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_not_a_character (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_default_ignorable_code_point (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_default_ignorable_code_point (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_deprecated (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_logical_order_exception (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_variation_selector (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_private_use (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_unassigned_code_value (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_uppercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_uppercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_lowercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_lowercase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_titlecase (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_cased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_case_ignorable (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_lowercased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_uppercased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_titlecased (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_casefolded (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_changes_when_casemapped (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_soft_dotted (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_id_start (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_id_start (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_id_continue (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_id_continue (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_xid_start (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_xid_continue (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_pattern_white_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_pattern_syntax (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_join_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_grapheme_base (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_grapheme_extend (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_grapheme_extend (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_grapheme_link (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_left_to_right (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_hebrew_right_to_left (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_arabic_right_to_left (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_european_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_eur_num_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_eur_num_terminator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_arabic_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_common_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_block_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_segment_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_whitespace (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_non_spacing_mark (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_boundary_neutral (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_pdf (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_embedding_or_override (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_bidi_other_neutral (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_hex_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ascii_hex_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ideographic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_unified_ideograph (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_radical (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ids_binary_operator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ids_trinary_operator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_zero_width (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_non_break (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_iso_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_format_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_dash (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_hyphen (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_punctuation (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_line_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_paragraph_separator (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_quotation_mark (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_sentence_terminal (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_terminal_punctuation (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_currency_symbol (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_math (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_other_math (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_paired_punctuation (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_left_of_pair (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_combining (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_composite (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_decimal_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_numeric (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_diacritic (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_extender (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++extern bool uc_is_property_ignorable_control (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Subdivision of the Unicode characters into scripts. */ ++ ++typedef struct ++{ ++ unsigned int code : 21; ++ unsigned int start : 1; ++ unsigned int end : 1; ++} ++uc_interval_t; ++typedef struct ++{ ++ unsigned int nintervals; ++ const uc_interval_t *intervals; ++ const char *name; ++} ++uc_script_t; ++ ++/* Return the script of a Unicode character. */ ++extern const uc_script_t * ++ uc_script (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the script given by name, e.g. "HAN". */ ++extern const uc_script_t * ++ uc_script_byname (const char *script_name) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether a Unicode character belongs to a given script. */ ++extern bool ++ uc_is_script (ucs4_t uc, const uc_script_t *script) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Get the list of all scripts. */ ++extern void ++ uc_all_scripts (const uc_script_t **scripts, size_t *count); ++ ++/* ========================================================================= */ ++ ++/* Subdivision of the Unicode character range into blocks. */ ++ ++typedef struct ++{ ++ ucs4_t start; ++ ucs4_t end; ++ const char *name; ++} ++uc_block_t; ++ ++/* Return the block a character belongs to. */ ++extern const uc_block_t * ++ uc_block (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test whether a Unicode character belongs to a given block. */ ++extern bool ++ uc_is_block (ucs4_t uc, const uc_block_t *block) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Get the list of all blocks. */ ++extern void ++ uc_all_blocks (const uc_block_t **blocks, size_t *count); ++ ++/* ========================================================================= */ ++ ++/* Properties taken from language standards. */ ++ ++/* Test whether a Unicode character is considered whitespace in ISO C 99. */ ++extern bool ++ uc_is_c_whitespace (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test whether a Unicode character is considered whitespace in Java. */ ++extern bool ++ uc_is_java_whitespace (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++enum ++{ ++ UC_IDENTIFIER_START, /* valid as first or subsequent character */ ++ UC_IDENTIFIER_VALID, /* valid as subsequent character only */ ++ UC_IDENTIFIER_INVALID, /* not valid */ ++ UC_IDENTIFIER_IGNORABLE /* ignorable (Java only) */ ++}; ++ ++/* Return the categorization of a Unicode character w.r.t. the ISO C 99 ++ identifier syntax. */ ++extern int ++ uc_c_ident_category (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Return the categorization of a Unicode character w.r.t. the Java ++ identifier syntax. */ ++extern int ++ uc_java_ident_category (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++/* Like ISO C and . These functions are deprecated, ++ because this set of functions was designed with ASCII in mind and cannot ++ reflect the more diverse reality of the Unicode character set. But they ++ can be a quick-and-dirty porting aid when migrating from wchar_t APIs ++ to Unicode strings. */ ++ ++/* Test for any character for which 'uc_is_alpha' or 'uc_is_digit' is true. */ ++extern bool ++ uc_is_alnum (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character for which 'uc_is_upper' or 'uc_is_lower' is true, ++ or any character that is one of a locale-specific set of characters for ++ which none of 'uc_is_cntrl', 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' ++ is true. */ ++extern bool ++ uc_is_alpha (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any control character. */ ++extern bool ++ uc_is_cntrl (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a decimal-digit character. */ ++extern bool ++ uc_is_digit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character for which 'uc_is_print' is true and 'uc_is_space' ++ is false. */ ++extern bool ++ uc_is_graph (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a lowercase letter or is one ++ of a locale-specific set of characters for which none of 'uc_is_cntrl', ++ 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true. */ ++extern bool ++ uc_is_lower (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any printing character. */ ++extern bool ++ uc_is_print (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any printing character that is one of a locale-specific set of ++ characters for which neither 'uc_is_space' nor 'uc_is_alnum' is true. */ ++extern bool ++ uc_is_punct (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a locale-specific set of ++ characters for which none of 'uc_is_alnum', 'uc_is_graph', or 'uc_is_punct' ++ is true. */ ++extern bool ++ uc_is_space (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to an uppercase letter or is one ++ of a locale-specific set of character for which none of 'uc_is_cntrl', ++ 'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true. */ ++extern bool ++ uc_is_upper (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* Test for any character that corresponds to a hexadecimal-digit ++ character. */ ++extern bool ++ uc_is_xdigit (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* GNU extension. */ ++/* Test for any character that corresponds to a standard blank character or ++ a locale-specific set of characters for which 'uc_is_alnum' is false. */ ++extern bool ++ uc_is_blank (ucs4_t uc) ++ _UC_ATTRIBUTE_CONST; ++ ++/* ========================================================================= */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNICTYPE_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unilbrk.h gettext-0.19/gettext-tools/libgettextpo/msvc/unilbrk.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unilbrk.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/unilbrk.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,111 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Line breaking of Unicode strings. ++ Copyright (C) 2001-2003, 2005-2016 Free Software Foundation, Inc. ++ Written by Bruno Haible , 2001. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNILBRK_H ++#define _UNILBRK_H ++ ++/* Get size_t. */ ++#include ++ ++#include "unitypes.h" ++ ++/* Get locale_charset() declaration. */ ++#include "localcharset.h" ++ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* These functions are locale dependent. The encoding argument identifies ++ the encoding (e.g. "ISO-8859-2" for Polish). */ ++ ++ ++/* Line breaking. */ ++ ++enum ++{ ++ UC_BREAK_UNDEFINED, ++ UC_BREAK_PROHIBITED, ++ UC_BREAK_POSSIBLE, ++ UC_BREAK_MANDATORY, ++ UC_BREAK_HYPHENATION ++}; ++ ++/* Determine the line break points in S, and store the result at p[0..n-1]. ++ p[i] = UC_BREAK_MANDATORY means that s[i] is a line break character. ++ p[i] = UC_BREAK_POSSIBLE means that a line break may be inserted between ++ s[i-1] and s[i]. ++ p[i] = UC_BREAK_HYPHENATION means that a hyphen and a line break may be ++ inserted between s[i-1] and s[i]. But beware of language dependent ++ hyphenation rules. ++ p[i] = UC_BREAK_PROHIBITED means that s[i-1] and s[i] must not be separated. ++ */ ++extern void ++ u8_possible_linebreaks (const uint8_t *s, size_t n, ++ const char *encoding, char *p); ++extern void ++ u16_possible_linebreaks (const uint16_t *s, size_t n, ++ const char *encoding, char *p); ++extern void ++ u32_possible_linebreaks (const uint32_t *s, size_t n, ++ const char *encoding, char *p); ++extern void ++ ulc_possible_linebreaks (const char *s, size_t n, ++ const char *encoding, char *p); ++ ++/* Choose the best line breaks, assuming the uc_width function. ++ The string is s[0..n-1]. The maximum number of columns per line is given ++ as WIDTH. The starting column of the string is given as START_COLUMN. ++ If the algorithm shall keep room after the last piece, they can be given ++ as AT_END_COLUMNS. ++ o is an optional override; if o[i] != UC_BREAK_UNDEFINED, o[i] takes ++ precedence over p[i] as returned by the *_possible_linebreaks function. ++ The given ENCODING is used for disambiguating widths in uc_width. ++ Return the column after the end of the string, and store the result at ++ p[0..n-1]. ++ */ ++extern int ++ u8_width_linebreaks (const uint8_t *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++extern int ++ u16_width_linebreaks (const uint16_t *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++extern int ++ u32_width_linebreaks (const uint32_t *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++extern int ++ ulc_width_linebreaks (const char *s, size_t n, int width, ++ int start_column, int at_end_columns, ++ const char *o, const char *encoding, ++ char *p); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++ ++#endif /* _UNILBRK_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unistd.h gettext-0.19/gettext-tools/libgettextpo/msvc/unistd.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unistd.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/unistd.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1902 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Substitute for and wrapper around . ++ Copyright (C) 2003-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++#ifndef _GL_GTPO_UNISTD_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#ifdef _GL_INCLUDING_UNISTD_H ++/* Special invocation convention: ++ - On Mac OS X 10.3.9 we have a sequence of nested includes ++ -> -> -> ++ In this situation, the functions are not yet declared, therefore we cannot ++ provide the C++ aliases. */ ++ ++#include ++ ++#else ++/* Normal invocation convention. */ ++ ++/* The include_next requires a split double-inclusion guard. */ ++#if 0 ++# define _GL_INCLUDING_UNISTD_H ++# include ++# undef _GL_INCLUDING_UNISTD_H ++#endif ++ ++/* Get all possible declarations of gethostname(). */ ++#if 0 && 1 \ ++ && !defined _GL_INCLUDING_WINSOCK2_H ++# define _GL_INCLUDING_WINSOCK2_H ++# include ++# undef _GL_INCLUDING_WINSOCK2_H ++#endif ++ ++#if !defined _GL_GTPO_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H ++#define _GL_GTPO_UNISTD_H ++ ++/* NetBSD 5.0 mis-defines NULL. Also get size_t. */ ++#include ++ ++/* mingw doesn't define the SEEK_* or *_FILENO macros in . */ ++/* Cygwin 1.7.1 declares symlinkat in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ ++ || ((0 || defined GNULIB_POSIXCHECK) \ ++ && defined __CYGWIN__)) \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* Cygwin 1.7.1 declares unlinkat in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if (0 || defined GNULIB_POSIXCHECK) && defined __CYGWIN__ \ ++ && ! defined __GLIBC__ ++# include ++#endif ++ ++/* mingw fails to declare _exit in . */ ++/* mingw, MSVC, BeOS, Haiku declare environ in , not in ++ . */ ++/* Solaris declares getcwd not only in but also in . */ ++/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system is ++ included here. */ ++/* But avoid namespace pollution on glibc systems. */ ++#if !defined __GLIBC__ && !defined __osf__ ++# define __need_system_stdlib_h ++# include ++# undef __need_system_stdlib_h ++#endif ++ ++/* Native Windows platforms declare chdir, getcwd, rmdir in ++ and/or , not in . ++ They also declare access(), chmod(), close(), dup(), dup2(), isatty(), ++ lseek(), read(), unlink(), write() in . */ ++#if ((0 || IN_GETTEXT_TOOLS_GNULIB_TESTS || 1 \ ++ || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) ++# include /* mingw32, mingw64 */ ++# include /* mingw64, MSVC 9 */ ++#elif (1 || IN_GETTEXT_TOOLS_GNULIB_TESTS || 1 || 0 \ ++ || IN_GETTEXT_TOOLS_GNULIB_TESTS || 1 || 0 || 1 \ ++ || defined GNULIB_POSIXCHECK) \ ++ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__) ++# include ++#endif ++ ++/* AIX and OSF/1 5.1 declare getdomainname in , not in . ++ NonStop Kernel declares gethostname in , not in . */ ++/* But avoid namespace pollution on glibc systems. */ ++#if ((0 && (defined _AIX || defined __osf__)) \ ++ || (0 && defined __TANDEM)) \ ++ && !defined __GLIBC__ ++# include ++#endif ++ ++/* MSVC defines off_t in . ++ May also define off_t to a 64-bit type on native Windows. */ ++#if !0 || 1 ++/* Get off_t. */ ++# include ++#endif ++ ++#if (1 || 1 \ ++ || 1 || 0 \ ++ || 0 || 0 || defined GNULIB_POSIXCHECK) ++/* Get ssize_t. */ ++# include ++#endif ++ ++/* Get getopt(), optarg, optind, opterr, optopt. ++ But avoid namespace pollution on glibc systems. */ ++/* Also, don't include inside libgettextpo, because we use ++ the getopt module only in gettext-tools/gnulib-lib/, not in ++ gettext-tools/libgettextpo/, but there is only a single ++ GNULIB_UNISTD_H_GETOPT variable for both. */ ++#if 0 && !defined GTPO_CONFIG_H && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT ++# define __need_getopt ++# include ++#endif ++ ++#ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++#endif ++_GL_INLINE_HEADER_BEGIN ++#ifndef _GL_UNISTD_INLINE ++# define _GL_UNISTD_INLINE _GL_INLINE ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Hide some function declarations from . */ ++ ++#if 0 && 1 ++# if !defined _GL_GTPO_SYS_SOCKET_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef socket ++# define socket socket_used_without_including_sys_socket_h ++# undef connect ++# define connect connect_used_without_including_sys_socket_h ++# undef accept ++# define accept accept_used_without_including_sys_socket_h ++# undef bind ++# define bind bind_used_without_including_sys_socket_h ++# undef getpeername ++# define getpeername getpeername_used_without_including_sys_socket_h ++# undef getsockname ++# define getsockname getsockname_used_without_including_sys_socket_h ++# undef getsockopt ++# define getsockopt getsockopt_used_without_including_sys_socket_h ++# undef listen ++# define listen listen_used_without_including_sys_socket_h ++# undef recv ++# define recv recv_used_without_including_sys_socket_h ++# undef send ++# define send send_used_without_including_sys_socket_h ++# undef recvfrom ++# define recvfrom recvfrom_used_without_including_sys_socket_h ++# undef sendto ++# define sendto sendto_used_without_including_sys_socket_h ++# undef setsockopt ++# define setsockopt setsockopt_used_without_including_sys_socket_h ++# undef shutdown ++# define shutdown shutdown_used_without_including_sys_socket_h ++# else ++ _GL_WARN_ON_USE (socket, ++ "socket() used without including "); ++ _GL_WARN_ON_USE (connect, ++ "connect() used without including "); ++ _GL_WARN_ON_USE (accept, ++ "accept() used without including "); ++ _GL_WARN_ON_USE (bind, ++ "bind() used without including "); ++ _GL_WARN_ON_USE (getpeername, ++ "getpeername() used without including "); ++ _GL_WARN_ON_USE (getsockname, ++ "getsockname() used without including "); ++ _GL_WARN_ON_USE (getsockopt, ++ "getsockopt() used without including "); ++ _GL_WARN_ON_USE (listen, ++ "listen() used without including "); ++ _GL_WARN_ON_USE (recv, ++ "recv() used without including "); ++ _GL_WARN_ON_USE (send, ++ "send() used without including "); ++ _GL_WARN_ON_USE (recvfrom, ++ "recvfrom() used without including "); ++ _GL_WARN_ON_USE (sendto, ++ "sendto() used without including "); ++ _GL_WARN_ON_USE (setsockopt, ++ "setsockopt() used without including "); ++ _GL_WARN_ON_USE (shutdown, ++ "shutdown() used without including "); ++# endif ++# endif ++# if !defined _GL_GTPO_SYS_SELECT_H ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef select ++# define select select_used_without_including_sys_select_h ++# else ++ _GL_WARN_ON_USE (select, ++ "select() used without including "); ++# endif ++# endif ++#endif ++ ++ ++/* OS/2 EMX lacks these macros. */ ++#ifndef STDIN_FILENO ++# define STDIN_FILENO 0 ++#endif ++#ifndef STDOUT_FILENO ++# define STDOUT_FILENO 1 ++#endif ++#ifndef STDERR_FILENO ++# define STDERR_FILENO 2 ++#endif ++ ++/* Ensure *_OK macros exist. */ ++#ifndef F_OK ++# define F_OK 0 ++# define X_OK 1 ++# define W_OK 2 ++# define R_OK 4 ++#endif ++ ++ ++/* Declare overridden functions. */ ++ ++ ++#if defined GNULIB_POSIXCHECK ++/* The access() function is a security risk. */ ++_GL_WARN_ON_USE (access, "the access function is a security risk - " ++ "use the gnulib module faccessat instead"); ++#endif ++ ++ ++#if 0 ++_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIASWARN (chdir); ++#elif defined GNULIB_POSIXCHECK ++# undef chdir ++# if HAVE_RAW_DECL_CHDIR ++_GL_WARN_ON_USE (chown, "chdir is not always in - " ++ "use gnulib module chdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE ++ to GID (if GID is not -1). Follow symbolic links. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dup2 rpl_dup2 ++# endif ++_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd)); ++_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd)); ++# endif ++_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd)); ++# endif ++_GL_CXXALIASWARN (dup2); ++#elif defined GNULIB_POSIXCHECK ++# undef dup2 ++# if HAVE_RAW_DECL_DUP2 ++_GL_WARN_ON_USE (dup2, "dup2 is unportable - " ++ "use gnulib module dup2 for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the ++ specified flags. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ Close NEWFD first if it is open. ++ Return newfd if successful, otherwise -1 and errno set. ++ See the Linux man page at ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define dup3 rpl_dup3 ++# endif ++_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags)); ++_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags)); ++# else ++_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags)); ++_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags)); ++# endif ++_GL_CXXALIASWARN (dup3); ++#elif defined GNULIB_POSIXCHECK ++# undef dup3 ++# if HAVE_RAW_DECL_DUP3 ++_GL_WARN_ON_USE (dup3, "dup3 is unportable - " ++ "use gnulib module dup3 for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++# if !1 ++/* Set of environment variables and values. An array of strings of the form ++ "VARIABLE=VALUE", terminated with a NULL. */ ++# if defined __APPLE__ && defined __MACH__ ++# include ++# if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR ++# define _GL_USE_CRT_EXTERNS ++# endif ++# endif ++# ifdef _GL_USE_CRT_EXTERNS ++# include ++# define environ (*_NSGetEnviron ()) ++# else ++# ifdef __cplusplus ++extern "C" { ++# endif ++extern char **environ; ++# ifdef __cplusplus ++} ++# endif ++# endif ++# endif ++#elif defined GNULIB_POSIXCHECK ++# if HAVE_RAW_DECL_ENVIRON ++_GL_UNISTD_INLINE char *** ++rpl_environ (void) ++{ ++ return &environ; ++} ++_GL_WARN_ON_USE (rpl_environ, "environ is unportable - " ++ "use gnulib module environ for portability"); ++# undef environ ++# define environ (*rpl_environ ()) ++# endif ++#endif ++ ++ ++#if 0 ++/* Like access(), except that it uses the effective user id and group id of ++ the current process. */ ++# if !1 ++_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode)); ++_GL_CXXALIASWARN (euidaccess); ++# if defined GNULIB_POSIXCHECK ++/* Like access(), this function is a security risk. */ ++_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - " ++ "use the gnulib module faccessat instead"); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef euidaccess ++# if HAVE_RAW_DECL_EUIDACCESS ++_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - " ++ "use gnulib module euidaccess for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (faccessat, int, ++ (int fd, char const *file, int mode, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (faccessat, int, ++ (int fd, char const *file, int mode, int flag)); ++_GL_CXXALIASWARN (faccessat); ++#elif defined GNULIB_POSIXCHECK ++# undef faccessat ++# if HAVE_RAW_DECL_FACCESSAT ++_GL_WARN_ON_USE (faccessat, "faccessat is not portable - " ++ "use gnulib module faccessat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the process' current working directory to the directory on which ++ the given file descriptor is open. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if ! 1 ++_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); ++ ++/* Gnulib internal hooks needed to maintain the fchdir metadata. */ ++_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename) ++ _GL_ARG_NONNULL ((2)); ++_GL_EXTERN_C void _gl_unregister_fd (int fd); ++_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd); ++_GL_EXTERN_C const char *_gl_directory_name (int fd); ++ ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/)); ++# endif ++# endif ++_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/)); ++_GL_CXXALIASWARN (fchdir); ++#elif defined GNULIB_POSIXCHECK ++# undef fchdir ++# if HAVE_RAW_DECL_FCHDIR ++_GL_WARN_ON_USE (fchdir, "fchdir is unportable - " ++ "use gnulib module fchdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef fchownat ++# define fchownat rpl_fchownat ++# endif ++_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file, ++ uid_t owner, gid_t group, int flag)); ++# endif ++_GL_CXXALIASWARN (fchownat); ++#elif defined GNULIB_POSIXCHECK ++# undef fchownat ++# if HAVE_RAW_DECL_FCHOWNAT ++_GL_WARN_ON_USE (fchownat, "fchownat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Synchronize changes to a file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if !1 || !1 ++_GL_FUNCDECL_SYS (fdatasync, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (fdatasync, int, (int fd)); ++_GL_CXXALIASWARN (fdatasync); ++#elif defined GNULIB_POSIXCHECK ++# undef fdatasync ++# if HAVE_RAW_DECL_FDATASYNC ++_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - " ++ "use gnulib module fdatasync for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Synchronize changes, including metadata, to a file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if !1 ++_GL_FUNCDECL_SYS (fsync, int, (int fd)); ++# endif ++_GL_CXXALIAS_SYS (fsync, int, (int fd)); ++_GL_CXXALIASWARN (fsync); ++#elif defined GNULIB_POSIXCHECK ++# undef fsync ++# if HAVE_RAW_DECL_FSYNC ++_GL_WARN_ON_USE (fsync, "fsync is unportable - " ++ "use gnulib module fsync for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the size of the file to which FD is opened to become equal to LENGTH. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ftruncate ++# define ftruncate rpl_ftruncate ++# endif ++_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length)); ++_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length)); ++# endif ++_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length)); ++# endif ++_GL_CXXALIASWARN (ftruncate); ++#elif defined GNULIB_POSIXCHECK ++# undef ftruncate ++# if HAVE_RAW_DECL_FTRUNCATE ++_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - " ++ "use gnulib module ftruncate for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++/* Get the name of the current working directory, and put it in SIZE bytes ++ of BUF. ++ Return BUF if successful, or NULL if the directory couldn't be determined ++ or SIZE was too small. ++ See the POSIX:2008 specification ++ . ++ Additionally, the gnulib module 'getcwd' guarantees the following GNU ++ extension: If BUF is NULL, an array is allocated with 'malloc'; the array ++ is SIZE bytes long, unless SIZE == 0, in which case it is as big as ++ necessary. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getcwd rpl_getcwd ++# endif ++_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size)); ++_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size)); ++# else ++/* Need to cast, because on mingw, the second parameter is ++ int size. */ ++_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size)); ++# endif ++_GL_CXXALIASWARN (getcwd); ++#elif defined GNULIB_POSIXCHECK ++# undef getcwd ++# if HAVE_RAW_DECL_GETCWD ++_GL_WARN_ON_USE (getcwd, "getcwd is unportable - " ++ "use gnulib module getcwd for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the NIS domain name of the machine. ++ WARNING! The NIS domain name is unrelated to the fully qualified host name ++ of the machine. It is also unrelated to email addresses. ++ WARNING! The NIS domain name is usually the empty string or "(none)" when ++ not using NIS. ++ ++ Put up to LEN bytes of the NIS domain name into NAME. ++ Null terminate it if the name is shorter than LEN. ++ If the NIS domain name is longer than LEN, set errno = EINVAL and return -1. ++ Return 0 if successful, otherwise set errno and return -1. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdomainname ++# define getdomainname rpl_getdomainname ++# endif ++_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len)); ++# endif ++_GL_CXXALIASWARN (getdomainname); ++#elif defined GNULIB_POSIXCHECK ++# undef getdomainname ++# if HAVE_RAW_DECL_GETDOMAINNAME ++_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - " ++ "use gnulib module getdomainname for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Return the maximum number of file descriptors in the current process. ++ In POSIX, this is same as sysconf (_SC_OPEN_MAX). */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getdtablesize ++# define getdtablesize rpl_getdtablesize ++# endif ++_GL_FUNCDECL_RPL (getdtablesize, int, (void)); ++_GL_CXXALIAS_RPL (getdtablesize, int, (void)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (getdtablesize, int, (void)); ++# endif ++_GL_CXXALIAS_SYS (getdtablesize, int, (void)); ++# endif ++_GL_CXXALIASWARN (getdtablesize); ++#elif defined GNULIB_POSIXCHECK ++# undef getdtablesize ++# if HAVE_RAW_DECL_GETDTABLESIZE ++_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - " ++ "use gnulib module getdtablesize for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the supplemental groups that the current process belongs to. ++ It is unspecified whether the effective group id is in the list. ++ If N is 0, return the group count; otherwise, N describes how many ++ entries are available in GROUPS. Return -1 and set errno if N is ++ not 0 and not large enough. Fails with ENOSYS on some systems. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef getgroups ++# define getgroups rpl_getgroups ++# endif ++_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups)); ++_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups)); ++# endif ++_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups)); ++# endif ++_GL_CXXALIASWARN (getgroups); ++#elif defined GNULIB_POSIXCHECK ++# undef getgroups ++# if HAVE_RAW_DECL_GETGROUPS ++_GL_WARN_ON_USE (getgroups, "getgroups is unportable - " ++ "use gnulib module getgroups for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the standard host name of the machine. ++ WARNING! The host name may or may not be fully qualified. ++ ++ Put up to LEN bytes of the host name into NAME. ++ Null terminate it if the name is shorter than LEN. ++ If the host name is longer than LEN, set errno = EINVAL and return -1. ++ Return 0 if successful, otherwise set errno and return -1. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef gethostname ++# define gethostname rpl_gethostname ++# endif ++_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second ++ parameter is ++ int len. */ ++_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len)); ++# endif ++_GL_CXXALIASWARN (gethostname); ++#elif 1 ++# undef gethostname ++# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname ++#elif defined GNULIB_POSIXCHECK ++# undef gethostname ++# if HAVE_RAW_DECL_GETHOSTNAME ++_GL_WARN_ON_USE (gethostname, "gethostname is unportable - " ++ "use gnulib module gethostname for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Returns the user's login name, or NULL if it cannot be found. Upon error, ++ returns NULL with errno set. ++ ++ See . ++ ++ Most programs don't need to use this function, because the information is ++ available through environment variables: ++ ${LOGNAME-$USER} on Unix platforms, ++ $USERNAME on native Windows platforms. ++ */ ++# if !1 ++_GL_FUNCDECL_SYS (getlogin, char *, (void)); ++# endif ++_GL_CXXALIAS_SYS (getlogin, char *, (void)); ++_GL_CXXALIASWARN (getlogin); ++#elif defined GNULIB_POSIXCHECK ++# undef getlogin ++# if HAVE_RAW_DECL_GETLOGIN ++_GL_WARN_ON_USE (getlogin, "getlogin is unportable - " ++ "use gnulib module getlogin for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Copies the user's login name to NAME. ++ The array pointed to by NAME has room for SIZE bytes. ++ ++ Returns 0 if successful. Upon error, an error number is returned, or -1 in ++ the case that the login name cannot be found but no specific error is ++ provided (this case is hopefully rare but is left open by the POSIX spec). ++ ++ See . ++ ++ Most programs don't need to use this function, because the information is ++ available through environment variables: ++ ${LOGNAME-$USER} on Unix platforms, ++ $USERNAME on native Windows platforms. ++ */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getlogin_r rpl_getlogin_r ++# endif ++_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 10 systems, the second argument is ++ int size. */ ++_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size)); ++# endif ++_GL_CXXALIASWARN (getlogin_r); ++#elif defined GNULIB_POSIXCHECK ++# undef getlogin_r ++# if HAVE_RAW_DECL_GETLOGIN_R ++_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - " ++ "use gnulib module getlogin_r for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getpagesize rpl_getpagesize ++# endif ++_GL_FUNCDECL_RPL (getpagesize, int, (void)); ++_GL_CXXALIAS_RPL (getpagesize, int, (void)); ++# else ++# if !0 ++# if !defined getpagesize ++/* This is for POSIX systems. */ ++# if !defined _gl_getpagesize && defined _SC_PAGESIZE ++# if ! (defined __VMS && __VMS_VER < 70000000) ++# define _gl_getpagesize() sysconf (_SC_PAGESIZE) ++# endif ++# endif ++/* This is for older VMS. */ ++# if !defined _gl_getpagesize && defined __VMS ++# ifdef __ALPHA ++# define _gl_getpagesize() 8192 ++# else ++# define _gl_getpagesize() 512 ++# endif ++# endif ++/* This is for BeOS. */ ++# if !defined _gl_getpagesize && 0 ++# include ++# if defined B_PAGE_SIZE ++# define _gl_getpagesize() B_PAGE_SIZE ++# endif ++# endif ++/* This is for AmigaOS4.0. */ ++# if !defined _gl_getpagesize && defined __amigaos4__ ++# define _gl_getpagesize() 2048 ++# endif ++/* This is for older Unix systems. */ ++# if !defined _gl_getpagesize && 0 ++# include ++# ifdef EXEC_PAGESIZE ++# define _gl_getpagesize() EXEC_PAGESIZE ++# else ++# ifdef NBPG ++# ifndef CLSIZE ++# define CLSIZE 1 ++# endif ++# define _gl_getpagesize() (NBPG * CLSIZE) ++# else ++# ifdef NBPC ++# define _gl_getpagesize() NBPC ++# endif ++# endif ++# endif ++# endif ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define getpagesize() _gl_getpagesize () ++# else ++# if !GNULIB_defined_getpagesize_function ++_GL_UNISTD_INLINE int ++getpagesize () ++{ ++ return _gl_getpagesize (); ++} ++# define GNULIB_defined_getpagesize_function 1 ++# endif ++# endif ++# endif ++# endif ++/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */ ++_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void)); ++# endif ++# if 0 ++_GL_CXXALIASWARN (getpagesize); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef getpagesize ++# if HAVE_RAW_DECL_GETPAGESIZE ++_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - " ++ "use gnulib module getpagesize for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Return the next valid login shell on the system, or NULL when the end of ++ the list has been reached. */ ++# if !1 ++_GL_FUNCDECL_SYS (getusershell, char *, (void)); ++# endif ++_GL_CXXALIAS_SYS (getusershell, char *, (void)); ++_GL_CXXALIASWARN (getusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef getusershell ++# if HAVE_RAW_DECL_GETUSERSHELL ++_GL_WARN_ON_USE (getusershell, "getusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Rewind to pointer that is advanced at each getusershell() call. */ ++# if !1 ++_GL_FUNCDECL_SYS (setusershell, void, (void)); ++# endif ++_GL_CXXALIAS_SYS (setusershell, void, (void)); ++_GL_CXXALIASWARN (setusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef setusershell ++# if HAVE_RAW_DECL_SETUSERSHELL ++_GL_WARN_ON_USE (setusershell, "setusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++#if 0 ++/* Free the pointer that is advanced at each getusershell() call and ++ associated resources. */ ++# if !1 ++_GL_FUNCDECL_SYS (endusershell, void, (void)); ++# endif ++_GL_CXXALIAS_SYS (endusershell, void, (void)); ++_GL_CXXALIASWARN (endusershell); ++#elif defined GNULIB_POSIXCHECK ++# undef endusershell ++# if HAVE_RAW_DECL_ENDUSERSHELL ++_GL_WARN_ON_USE (endusershell, "endusershell is unportable - " ++ "use gnulib module getusershell for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Determine whether group id is in calling user's group list. */ ++# if !1 ++_GL_FUNCDECL_SYS (group_member, int, (gid_t gid)); ++# endif ++_GL_CXXALIAS_SYS (group_member, int, (gid_t gid)); ++_GL_CXXALIASWARN (group_member); ++#elif defined GNULIB_POSIXCHECK ++# undef group_member ++# if HAVE_RAW_DECL_GROUP_MEMBER ++_GL_WARN_ON_USE (group_member, "group_member is unportable - " ++ "use gnulib module group-member for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef isatty ++# define isatty rpl_isatty ++# endif ++_GL_FUNCDECL_RPL (isatty, int, (int fd)); ++_GL_CXXALIAS_RPL (isatty, int, (int fd)); ++# else ++_GL_CXXALIAS_SYS (isatty, int, (int fd)); ++# endif ++_GL_CXXALIASWARN (isatty); ++#elif defined GNULIB_POSIXCHECK ++# undef isatty ++# if HAVE_RAW_DECL_ISATTY ++_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - " ++ "use gnulib module isatty for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE ++ to GID (if GID is not -1). Do not follow symbolic links. ++ Return 0 if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef lchown ++# define lchown rpl_lchown ++# endif ++_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group) ++ _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group) ++ _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)); ++# endif ++_GL_CXXALIASWARN (lchown); ++#elif defined GNULIB_POSIXCHECK ++# undef lchown ++# if HAVE_RAW_DECL_LCHOWN ++_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - " ++ "use gnulib module lchown for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a new hard link for an existing file. ++ Return 0 if successful, otherwise -1 and errno set. ++ See POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define link rpl_link ++# endif ++_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2)); ++# endif ++_GL_CXXALIASWARN (link); ++#elif defined GNULIB_POSIXCHECK ++# undef link ++# if HAVE_RAW_DECL_LINK ++_GL_WARN_ON_USE (link, "link is unportable - " ++ "use gnulib module link for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a new hard link for an existing file, relative to two ++ directories. FLAG controls whether symlinks are followed. ++ Return 0 if successful, otherwise -1 and errno set. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef linkat ++# define linkat rpl_linkat ++# endif ++_GL_FUNCDECL_RPL (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag) ++ _GL_ARG_NONNULL ((2, 4))); ++_GL_CXXALIAS_RPL (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag) ++ _GL_ARG_NONNULL ((2, 4))); ++# endif ++_GL_CXXALIAS_SYS (linkat, int, ++ (int fd1, const char *path1, int fd2, const char *path2, ++ int flag)); ++# endif ++_GL_CXXALIASWARN (linkat); ++#elif defined GNULIB_POSIXCHECK ++# undef linkat ++# if HAVE_RAW_DECL_LINKAT ++_GL_WARN_ON_USE (linkat, "linkat is unportable - " ++ "use gnulib module linkat for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END. ++ Return the new offset if successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define lseek rpl_lseek ++# endif ++_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence)); ++_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence)); ++# else ++_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence)); ++# endif ++_GL_CXXALIASWARN (lseek); ++#elif defined GNULIB_POSIXCHECK ++# undef lseek ++# if HAVE_RAW_DECL_LSEEK ++_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some " ++ "systems - use gnulib module lseek for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Create a pipe, defaulting to O_BINARY mode. ++ Store the read-end as fd[0] and the write-end as fd[1]. ++ Return 0 upon success, or -1 with errno set upon failure. */ ++# if !1 ++_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1))); ++# endif ++_GL_CXXALIAS_SYS (pipe, int, (int fd[2])); ++_GL_CXXALIASWARN (pipe); ++#elif defined GNULIB_POSIXCHECK ++# undef pipe ++# if HAVE_RAW_DECL_PIPE ++_GL_WARN_ON_USE (pipe, "pipe is unportable - " ++ "use gnulib module pipe-posix for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Create a pipe, applying the given flags when opening the read-end of the ++ pipe and the write-end of the pipe. ++ The flags are a bitmask, possibly including O_CLOEXEC (defined in ) ++ and O_TEXT, O_BINARY (defined in "binary-io.h"). ++ Store the read-end as fd[0] and the write-end as fd[1]. ++ Return 0 upon success, or -1 with errno set upon failure. ++ See also the Linux man page at ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define pipe2 rpl_pipe2 ++# endif ++_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags)); ++# else ++_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags)); ++# endif ++_GL_CXXALIASWARN (pipe2); ++#elif defined GNULIB_POSIXCHECK ++# undef pipe2 ++# if HAVE_RAW_DECL_PIPE2 ++_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - " ++ "use gnulib module pipe2 for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET. ++ Return the number of bytes placed into BUF if successful, otherwise ++ set errno and return -1. 0 indicates EOF. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pread ++# define pread rpl_pread ++# endif ++_GL_FUNCDECL_RPL (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (pread, ssize_t, ++ (int fd, void *buf, size_t bufsize, off_t offset)); ++# endif ++_GL_CXXALIASWARN (pread); ++#elif defined GNULIB_POSIXCHECK ++# undef pread ++# if HAVE_RAW_DECL_PREAD ++_GL_WARN_ON_USE (pread, "pread is unportable - " ++ "use gnulib module pread for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET. ++ Return the number of bytes written if successful, otherwise ++ set errno and return -1. 0 indicates nothing written. See the ++ POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef pwrite ++# define pwrite rpl_pwrite ++# endif ++_GL_FUNCDECL_RPL (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (pwrite, ssize_t, ++ (int fd, const void *buf, size_t bufsize, off_t offset)); ++# endif ++_GL_CXXALIASWARN (pwrite); ++#elif defined GNULIB_POSIXCHECK ++# undef pwrite ++# if HAVE_RAW_DECL_PWRITE ++_GL_WARN_ON_USE (pwrite, "pwrite is unportable - " ++ "use gnulib module pwrite for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Read up to COUNT bytes from file descriptor FD into the buffer starting ++ at BUF. See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef read ++# define read rpl_read ++# endif ++_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count)); ++# else ++/* Need to cast, because on mingw, the third parameter is ++ unsigned int count ++ and the return type is 'int'. */ ++_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count)); ++# endif ++_GL_CXXALIASWARN (read); ++#endif ++ ++ ++#if 1 ++/* Read the contents of the symbolic link FILE and place the first BUFSIZE ++ bytes of it into BUF. Return the number of bytes placed into BUF if ++ successful, otherwise -1 and errno set. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define readlink rpl_readlink ++# endif ++_GL_FUNCDECL_RPL (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (readlink, ssize_t, ++ (const char *file, char *buf, size_t bufsize)); ++# endif ++_GL_CXXALIASWARN (readlink); ++#elif defined GNULIB_POSIXCHECK ++# undef readlink ++# if HAVE_RAW_DECL_READLINK ++_GL_WARN_ON_USE (readlink, "readlink is unportable - " ++ "use gnulib module readlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define readlinkat rpl_readlinkat ++# endif ++_GL_FUNCDECL_RPL (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len) ++ _GL_ARG_NONNULL ((2, 3))); ++_GL_CXXALIAS_RPL (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len) ++ _GL_ARG_NONNULL ((2, 3))); ++# endif ++_GL_CXXALIAS_SYS (readlinkat, ssize_t, ++ (int fd, char const *file, char *buf, size_t len)); ++# endif ++_GL_CXXALIASWARN (readlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef readlinkat ++# if HAVE_RAW_DECL_READLINKAT ++_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - " ++ "use gnulib module readlinkat for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Remove the directory DIR. */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define rmdir rpl_rmdir ++# endif ++_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (rmdir, int, (char const *name)); ++# else ++_GL_CXXALIAS_SYS (rmdir, int, (char const *name)); ++# endif ++_GL_CXXALIASWARN (rmdir); ++#elif defined GNULIB_POSIXCHECK ++# undef rmdir ++# if HAVE_RAW_DECL_RMDIR ++_GL_WARN_ON_USE (rmdir, "rmdir is unportable - " ++ "use gnulib module rmdir for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Set the host name of the machine. ++ The host name may or may not be fully qualified. ++ ++ Put LEN bytes of NAME into the host name. ++ Return 0 if successful, otherwise, set errno and return -1. ++ ++ Platforms with no ability to set the hostname return -1 and set ++ errno = ENOSYS. */ ++# if !1 || !1 ++_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len) ++ _GL_ARG_NONNULL ((1))); ++# endif ++/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5 ++ and FreeBSD 6.4 the second parameter is int. On Solaris 11 ++ 2011-10, the first parameter is not const. */ ++_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len)); ++_GL_CXXALIASWARN (sethostname); ++#elif defined GNULIB_POSIXCHECK ++# undef sethostname ++# if HAVE_RAW_DECL_SETHOSTNAME ++_GL_WARN_ON_USE (sethostname, "sethostname is unportable - " ++ "use gnulib module sethostname for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++/* Pause the execution of the current thread for N seconds. ++ Returns the number of seconds left to sleep. ++ See the POSIX:2008 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef sleep ++# define sleep rpl_sleep ++# endif ++_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n)); ++_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n)); ++# endif ++_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n)); ++# endif ++_GL_CXXALIASWARN (sleep); ++#elif defined GNULIB_POSIXCHECK ++# undef sleep ++# if HAVE_RAW_DECL_SLEEP ++_GL_WARN_ON_USE (sleep, "sleep is unportable - " ++ "use gnulib module sleep for portability"); ++# endif ++#endif ++ ++ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef symlink ++# define symlink rpl_symlink ++# endif ++_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file) ++ _GL_ARG_NONNULL ((1, 2))); ++_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file) ++ _GL_ARG_NONNULL ((1, 2))); ++# endif ++_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file)); ++# endif ++_GL_CXXALIASWARN (symlink); ++#elif defined GNULIB_POSIXCHECK ++# undef symlink ++# if HAVE_RAW_DECL_SYMLINK ++_GL_WARN_ON_USE (symlink, "symlink is not portable - " ++ "use gnulib module symlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef symlinkat ++# define symlinkat rpl_symlinkat ++# endif ++_GL_FUNCDECL_RPL (symlinkat, int, ++ (char const *contents, int fd, char const *file) ++ _GL_ARG_NONNULL ((1, 3))); ++_GL_CXXALIAS_RPL (symlinkat, int, ++ (char const *contents, int fd, char const *file)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (symlinkat, int, ++ (char const *contents, int fd, char const *file) ++ _GL_ARG_NONNULL ((1, 3))); ++# endif ++_GL_CXXALIAS_SYS (symlinkat, int, ++ (char const *contents, int fd, char const *file)); ++# endif ++_GL_CXXALIASWARN (symlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef symlinkat ++# if HAVE_RAW_DECL_SYMLINKAT ++_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - " ++ "use gnulib module symlinkat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Store at most BUFLEN characters of the pathname of the terminal FD is ++ open on in BUF. Return 0 on success, otherwise an error number. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef ttyname_r ++# define ttyname_r rpl_ttyname_r ++# endif ++_GL_FUNCDECL_RPL (ttyname_r, int, ++ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (ttyname_r, int, ++ (int fd, char *buf, size_t buflen)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (ttyname_r, int, ++ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (ttyname_r, int, ++ (int fd, char *buf, size_t buflen)); ++# endif ++_GL_CXXALIASWARN (ttyname_r); ++#elif defined GNULIB_POSIXCHECK ++# undef ttyname_r ++# if HAVE_RAW_DECL_TTYNAME_R ++_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - " ++ "use gnulib module ttyname_r for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unlink ++# define unlink rpl_unlink ++# endif ++_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1))); ++_GL_CXXALIAS_RPL (unlink, int, (char const *file)); ++# else ++_GL_CXXALIAS_SYS (unlink, int, (char const *file)); ++# endif ++_GL_CXXALIASWARN (unlink); ++#elif defined GNULIB_POSIXCHECK ++# undef unlink ++# if HAVE_RAW_DECL_UNLINK ++_GL_WARN_ON_USE (unlink, "unlink is not portable - " ++ "use gnulib module unlink for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef unlinkat ++# define unlinkat rpl_unlinkat ++# endif ++_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag)); ++# endif ++_GL_CXXALIASWARN (unlinkat); ++#elif defined GNULIB_POSIXCHECK ++# undef unlinkat ++# if HAVE_RAW_DECL_UNLINKAT ++_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - " ++ "use gnulib module openat for portability"); ++# endif ++#endif ++ ++ ++#if 0 ++/* Pause the execution of the current thread for N microseconds. ++ Returns 0 on completion, or -1 on range error. ++ See the POSIX:2001 specification ++ . */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef usleep ++# define usleep rpl_usleep ++# endif ++_GL_FUNCDECL_RPL (usleep, int, (useconds_t n)); ++_GL_CXXALIAS_RPL (usleep, int, (useconds_t n)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (usleep, int, (useconds_t n)); ++# endif ++_GL_CXXALIAS_SYS (usleep, int, (useconds_t n)); ++# endif ++_GL_CXXALIASWARN (usleep); ++#elif defined GNULIB_POSIXCHECK ++# undef usleep ++# if HAVE_RAW_DECL_USLEEP ++_GL_WARN_ON_USE (usleep, "usleep is unportable - " ++ "use gnulib module usleep for portability"); ++# endif ++#endif ++ ++ ++#if 1 ++/* Write up to COUNT bytes starting at BUF to file descriptor FD. ++ See the POSIX:2008 specification ++ . */ ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef write ++# define write rpl_write ++# endif ++_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count)); ++# else ++/* Need to cast, because on mingw, the third parameter is ++ unsigned int count ++ and the return type is 'int'. */ ++_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count)); ++# endif ++_GL_CXXALIASWARN (write); ++#endif ++ ++_GL_INLINE_HEADER_END ++ ++#endif /* _GL_GTPO_UNISTD_H */ ++#endif /* _GL_INCLUDING_UNISTD_H */ ++#endif /* _GL_GTPO_UNISTD_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unistr.h gettext-0.19/gettext-tools/libgettextpo/msvc/unistr.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unistr.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/unistr.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,751 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Elementary Unicode string functions. ++ Copyright (C) 2001-2002, 2005-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNISTR_H ++#define _UNISTR_H ++ ++#include "unitypes.h" ++ ++/* Get common macros for C. */ ++#include "unused-parameter.h" ++ ++/* Get bool. */ ++#include ++ ++/* Get size_t. */ ++#include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Conventions: ++ ++ All functions prefixed with u8_ operate on UTF-8 encoded strings. ++ Their unit is an uint8_t (1 byte). ++ ++ All functions prefixed with u16_ operate on UTF-16 encoded strings. ++ Their unit is an uint16_t (a 2-byte word). ++ ++ All functions prefixed with u32_ operate on UCS-4 encoded strings. ++ Their unit is an uint32_t (a 4-byte word). ++ ++ All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly ++ n units. ++ ++ All arguments starting with "str" and the arguments of functions starting ++ with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string ++ which terminates at the first NUL unit. This termination unit is ++ considered part of the string for all memory allocation purposes, but ++ is not considered part of the string for all other logical purposes. ++ ++ Functions returning a string result take a (resultbuf, lengthp) argument ++ pair. If resultbuf is not NULL and the result fits into *lengthp units, ++ it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly ++ allocated string is returned. In both cases, *lengthp is set to the ++ length (number of units) of the returned string. In case of error, ++ NULL is returned and errno is set. */ ++ ++ ++/* Elementary string checks. */ ++ ++/* Check whether an UTF-8 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint8_t * ++ u8_check (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Check whether an UTF-16 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint16_t * ++ u16_check (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Check whether an UCS-4 string is well-formed. ++ Return NULL if valid, or a pointer to the first invalid unit otherwise. */ ++extern const uint32_t * ++ u32_check (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++ ++/* Elementary string conversions. */ ++ ++/* Convert an UTF-8 string to an UTF-16 string. */ ++extern uint16_t * ++ u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-8 string to an UCS-4 string. */ ++extern uint32_t * ++ u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-16 string to an UTF-8 string. */ ++extern uint8_t * ++ u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UTF-16 string to an UCS-4 string. */ ++extern uint32_t * ++ u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UCS-4 string to an UTF-8 string. */ ++extern uint8_t * ++ u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf, ++ size_t *lengthp); ++ ++/* Convert an UCS-4 string to an UTF-16 string. */ ++extern uint16_t * ++ u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf, ++ size_t *lengthp); ++ ++ ++/* Elementary string functions. */ ++ ++/* Return the length (number of units) of the first character in S, which is ++ no longer than N. Return 0 if it is the NUL character. Return -1 upon ++ failure. */ ++/* Similar to mblen(), except that s must not be NULL. */ ++extern int ++ u8_mblen (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_mblen (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_mblen (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, ++ and an appropriate number of units is returned. ++ The number of available units, N, must be > 0. */ ++/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0, ++ and the NUL character is not treated specially. */ ++/* The variants with _safe suffix are safe, even if the library is compiled ++ without --enable-safety. */ ++ ++#if GNULIB_UNISTR_U8_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n); ++# else ++extern int ++ u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n); ++static inline int ++u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u8_mbtouc_unsafe_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n); ++# else ++extern int ++ u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n); ++static inline int ++u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n) ++{ ++ uint16_t c = *s; ++ ++ if (c < 0xd800 || c >= 0xe000) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u16_mbtouc_unsafe_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUC_UNSAFE || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n); ++# else ++static inline int ++u32_mbtouc_unsafe (ucs4_t *puc, ++ const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) ++{ ++ uint32_t c = *s; ++ ++# if CONFIG_UNICODE_SAFETY ++ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) ++# endif ++ *puc = c; ++# if CONFIG_UNICODE_SAFETY ++ else ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++# endif ++ return 1; ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U8_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n); ++# else ++extern int ++ u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n); ++static inline int ++u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u8_mbtouc_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n); ++# else ++extern int ++ u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n); ++static inline int ++u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n) ++{ ++ uint16_t c = *s; ++ ++ if (c < 0xd800 || c >= 0xe000) ++ { ++ *puc = c; ++ return 1; ++ } ++ else ++ return u16_mbtouc_aux (puc, s, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUC || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n); ++# else ++static inline int ++u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) ++{ ++ uint32_t c = *s; ++ ++ if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) ++ *puc = c; ++ else ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++} ++# endif ++#endif ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, ++ and -1 is returned for an invalid sequence of units, -2 is returned for an ++ incomplete sequence of units. ++ The number of available units, N, must be > 0. */ ++/* Similar to u*_mbtouc(), except that the return value gives more details ++ about the failure, similar to mbrtowc(). */ ++ ++#if GNULIB_UNISTR_U8_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n); ++#endif ++ ++#if GNULIB_UNISTR_U16_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n); ++#endif ++ ++#if GNULIB_UNISTR_U32_MBTOUCR || HAVE_LIBUNISTRING ++extern int ++ u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n); ++#endif ++ ++/* Put the multibyte character represented by UC in S, returning its ++ length. Return -1 upon failure, -2 if the number of available units, N, ++ is too small. The latter case cannot occur if N >= 6/2/1, respectively. */ ++/* Similar to wctomb(), except that s must not be NULL, and the argument n ++ must be specified. */ ++ ++#if GNULIB_UNISTR_U8_UCTOMB || HAVE_LIBUNISTRING ++/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */ ++extern int ++ u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n); ++# if !HAVE_INLINE ++extern int ++ u8_uctomb (uint8_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u8_uctomb (uint8_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0x80 && n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ else ++ return u8_uctomb_aux (s, uc, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U16_UCTOMB || HAVE_LIBUNISTRING ++/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */ ++extern int ++ u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n); ++# if !HAVE_INLINE ++extern int ++ u16_uctomb (uint16_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u16_uctomb (uint16_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0xd800 && n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ else ++ return u16_uctomb_aux (s, uc, n); ++} ++# endif ++#endif ++ ++#if GNULIB_UNISTR_U32_UCTOMB || HAVE_LIBUNISTRING ++# if !HAVE_INLINE ++extern int ++ u32_uctomb (uint32_t *s, ucs4_t uc, int n); ++# else ++static inline int ++u32_uctomb (uint32_t *s, ucs4_t uc, int n) ++{ ++ if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000)) ++ { ++ if (n > 0) ++ { ++ *s = uc; ++ return 1; ++ } ++ else ++ return -2; ++ } ++ else ++ return -1; ++} ++# endif ++#endif ++ ++/* Copy N units from SRC to DEST. */ ++/* Similar to memcpy(). */ ++extern uint8_t * ++ u8_cpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_cpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_cpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Copy N units from SRC to DEST, guaranteeing correct behavior for ++ overlapping memory areas. */ ++/* Similar to memmove(). */ ++extern uint8_t * ++ u8_move (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_move (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_move (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Set the first N characters of S to UC. UC should be a character that ++ occupies only 1 unit. */ ++/* Similar to memset(). */ ++extern uint8_t * ++ u8_set (uint8_t *s, ucs4_t uc, size_t n); ++extern uint16_t * ++ u16_set (uint16_t *s, ucs4_t uc, size_t n); ++extern uint32_t * ++ u32_set (uint32_t *s, ucs4_t uc, size_t n); ++ ++/* Compare S1 and S2, each of length N. */ ++/* Similar to memcmp(). */ ++extern int ++ u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Compare S1 and S2. */ ++/* Similar to the gnulib function memcmp2(). */ ++extern int ++ u8_cmp2 (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_cmp2 (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_cmp2 (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Search the string at S for UC. */ ++/* Similar to memchr(). */ ++extern uint8_t * ++ u8_chr (const uint8_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_chr (const uint16_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_chr (const uint32_t *s, size_t n, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Count the number of Unicode characters in the N units from S. */ ++/* Similar to mbsnlen(). */ ++extern size_t ++ u8_mbsnlen (const uint8_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_mbsnlen (const uint16_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_mbsnlen (const uint32_t *s, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Elementary string functions with memory allocation. */ ++ ++/* Make a freshly allocated copy of S, of length N. */ ++extern uint8_t * ++ u8_cpy_alloc (const uint8_t *s, size_t n); ++extern uint16_t * ++ u16_cpy_alloc (const uint16_t *s, size_t n); ++extern uint32_t * ++ u32_cpy_alloc (const uint32_t *s, size_t n); ++ ++/* Elementary string functions on NUL terminated strings. */ ++ ++/* Return the length (number of units) of the first character in S. ++ Return 0 if it is the NUL character. Return -1 upon failure. */ ++extern int ++ u8_strmblen (const uint8_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strmblen (const uint16_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strmblen (const uint32_t *s) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length (number of units) of the first character in S, putting ++ its 'ucs4_t' representation in *PUC. Return 0 if it is the NUL ++ character. Return -1 upon failure. */ ++extern int ++ u8_strmbtouc (ucs4_t *puc, const uint8_t *s); ++extern int ++ u16_strmbtouc (ucs4_t *puc, const uint16_t *s); ++extern int ++ u32_strmbtouc (ucs4_t *puc, const uint32_t *s); ++ ++/* Forward iteration step. Advances the pointer past the next character, ++ or returns NULL if the end of the string has been reached. Puts the ++ character's 'ucs4_t' representation in *PUC. */ ++extern const uint8_t * ++ u8_next (ucs4_t *puc, const uint8_t *s); ++extern const uint16_t * ++ u16_next (ucs4_t *puc, const uint16_t *s); ++extern const uint32_t * ++ u32_next (ucs4_t *puc, const uint32_t *s); ++ ++/* Backward iteration step. Advances the pointer to point to the previous ++ character, or returns NULL if the beginning of the string had been reached. ++ Puts the character's 'ucs4_t' representation in *PUC. */ ++extern const uint8_t * ++ u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start); ++extern const uint16_t * ++ u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start); ++extern const uint32_t * ++ u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start); ++ ++/* Return the number of units in S. */ ++/* Similar to strlen(), wcslen(). */ ++extern size_t ++ u8_strlen (const uint8_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strlen (const uint16_t *s) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strlen (const uint32_t *s) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the number of units in S, but at most MAXLEN. */ ++/* Similar to strnlen(), wcsnlen(). */ ++extern size_t ++ u8_strnlen (const uint8_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strnlen (const uint16_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strnlen (const uint32_t *s, size_t maxlen) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Copy SRC to DEST. */ ++/* Similar to strcpy(), wcscpy(). */ ++extern uint8_t * ++ u8_strcpy (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_strcpy (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_strcpy (uint32_t *dest, const uint32_t *src); ++ ++/* Copy SRC to DEST, returning the address of the terminating NUL in DEST. */ ++/* Similar to stpcpy(). */ ++extern uint8_t * ++ u8_stpcpy (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_stpcpy (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_stpcpy (uint32_t *dest, const uint32_t *src); ++ ++/* Copy no more than N units of SRC to DEST. */ ++/* Similar to strncpy(), wcsncpy(). */ ++extern uint8_t * ++ u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Copy no more than N units of SRC to DEST. Return a pointer past the last ++ non-NUL unit written into DEST. */ ++/* Similar to stpncpy(). */ ++extern uint8_t * ++ u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Append SRC onto DEST. */ ++/* Similar to strcat(), wcscat(). */ ++extern uint8_t * ++ u8_strcat (uint8_t *dest, const uint8_t *src); ++extern uint16_t * ++ u16_strcat (uint16_t *dest, const uint16_t *src); ++extern uint32_t * ++ u32_strcat (uint32_t *dest, const uint32_t *src); ++ ++/* Append no more than N units of SRC onto DEST. */ ++/* Similar to strncat(), wcsncat(). */ ++extern uint8_t * ++ u8_strncat (uint8_t *dest, const uint8_t *src, size_t n); ++extern uint16_t * ++ u16_strncat (uint16_t *dest, const uint16_t *src, size_t n); ++extern uint32_t * ++ u32_strncat (uint32_t *dest, const uint32_t *src, size_t n); ++ ++/* Compare S1 and S2. */ ++/* Similar to strcmp(), wcscmp(). */ ++#ifdef __sun ++/* Avoid a collision with the u8_strcmp() function in Solaris 11 libc. */ ++extern int ++ u8_strcmp_gnu (const uint8_t *s1, const uint8_t *s2) ++ _UC_ATTRIBUTE_PURE; ++# define u8_strcmp u8_strcmp_gnu ++#else ++extern int ++ u8_strcmp (const uint8_t *s1, const uint8_t *s2) ++ _UC_ATTRIBUTE_PURE; ++#endif ++extern int ++ u16_strcmp (const uint16_t *s1, const uint16_t *s2) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strcmp (const uint32_t *s1, const uint32_t *s2) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Compare S1 and S2 using the collation rules of the current locale. ++ Return -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2. ++ Upon failure, set errno and return any value. */ ++/* Similar to strcoll(), wcscoll(). */ ++extern int ++ u8_strcoll (const uint8_t *s1, const uint8_t *s2); ++extern int ++ u16_strcoll (const uint16_t *s1, const uint16_t *s2); ++extern int ++ u32_strcoll (const uint32_t *s1, const uint32_t *s2); ++ ++/* Compare no more than N units of S1 and S2. */ ++/* Similar to strncmp(), wcsncmp(). */ ++extern int ++ u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++/* Similar to strdup(), wcsdup(). */ ++extern uint8_t * ++ u8_strdup (const uint8_t *s); ++extern uint16_t * ++ u16_strdup (const uint16_t *s); ++extern uint32_t * ++ u32_strdup (const uint32_t *s); ++ ++/* Find the first occurrence of UC in STR. */ ++/* Similar to strchr(), wcschr(). */ ++extern uint8_t * ++ u8_strchr (const uint8_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strchr (const uint16_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strchr (const uint32_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the last occurrence of UC in STR. */ ++/* Similar to strrchr(), wcsrchr(). */ ++extern uint8_t * ++ u8_strrchr (const uint8_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strrchr (const uint16_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strrchr (const uint32_t *str, ucs4_t uc) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length of the initial segment of STR which consists entirely ++ of Unicode characters not in REJECT. */ ++/* Similar to strcspn(), wcscspn(). */ ++extern size_t ++ u8_strcspn (const uint8_t *str, const uint8_t *reject) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strcspn (const uint16_t *str, const uint16_t *reject) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strcspn (const uint32_t *str, const uint32_t *reject) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Return the length of the initial segment of STR which consists entirely ++ of Unicode characters in ACCEPT. */ ++/* Similar to strspn(), wcsspn(). */ ++extern size_t ++ u8_strspn (const uint8_t *str, const uint8_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u16_strspn (const uint16_t *str, const uint16_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern size_t ++ u32_strspn (const uint32_t *str, const uint32_t *accept) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the first occurrence in STR of any character in ACCEPT. */ ++/* Similar to strpbrk(), wcspbrk(). */ ++extern uint8_t * ++ u8_strpbrk (const uint8_t *str, const uint8_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strpbrk (const uint16_t *str, const uint16_t *accept) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strpbrk (const uint32_t *str, const uint32_t *accept) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK. */ ++/* Similar to strstr(), wcsstr(). */ ++extern uint8_t * ++ u8_strstr (const uint8_t *haystack, const uint8_t *needle) ++ _UC_ATTRIBUTE_PURE; ++extern uint16_t * ++ u16_strstr (const uint16_t *haystack, const uint16_t *needle) ++ _UC_ATTRIBUTE_PURE; ++extern uint32_t * ++ u32_strstr (const uint32_t *haystack, const uint32_t *needle) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether STR starts with PREFIX. */ ++extern bool ++ u8_startswith (const uint8_t *str, const uint8_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u16_startswith (const uint16_t *str, const uint16_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u32_startswith (const uint32_t *str, const uint32_t *prefix) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Test whether STR ends with SUFFIX. */ ++extern bool ++ u8_endswith (const uint8_t *str, const uint8_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u16_endswith (const uint16_t *str, const uint16_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++extern bool ++ u32_endswith (const uint32_t *str, const uint32_t *suffix) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Divide STR into tokens separated by characters in DELIM. ++ This interface is actually more similar to wcstok than to strtok. */ ++/* Similar to strtok_r(), wcstok(). */ ++extern uint8_t * ++ u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr); ++extern uint16_t * ++ u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr); ++extern uint32_t * ++ u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr); ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNISTR_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unitypes.h gettext-0.19/gettext-tools/libgettextpo/msvc/unitypes.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/unitypes.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/unitypes.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,47 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Elementary types and macros for the GNU UniString library. ++ Copyright (C) 2002, 2005-2006, 2009-2016 Free Software Foundation, Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNITYPES_H ++#define _UNITYPES_H ++ ++/* Get uint8_t, uint16_t, uint32_t. */ ++#include ++ ++/* Type representing a Unicode character. */ ++typedef uint32_t ucs4_t; ++ ++/* Attribute of a function whose result depends only on the arguments ++ (not pointers!) and which has no side effects. */ ++#ifndef _UC_ATTRIBUTE_CONST ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ++# define _UC_ATTRIBUTE_CONST __attribute__ ((__const__)) ++# else ++# define _UC_ATTRIBUTE_CONST ++# endif ++#endif ++ ++/* Attribute of a function whose result depends only on the arguments ++ (possibly pointers) and global memory, and which has no side effects. */ ++#ifndef _UC_ATTRIBUTE_PURE ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _UC_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++# else ++# define _UC_ATTRIBUTE_PURE ++# endif ++#endif ++ ++#endif /* _UNITYPES_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/uniwidth.h gettext-0.19/gettext-tools/libgettextpo/msvc/uniwidth.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/uniwidth.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/uniwidth.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,73 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* Display width functions. ++ Copyright (C) 2001-2002, 2005, 2007, 2009-2016 Free Software Foundation, ++ Inc. ++ ++ 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 3 of the License, 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 this program. If not, see . */ ++ ++#ifndef _UNIWIDTH_H ++#define _UNIWIDTH_H ++ ++#include "unitypes.h" ++ ++/* Get size_t. */ ++#include ++ ++/* Get locale_charset() declaration. */ ++#include "localcharset.h" ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++ ++/* Display width. */ ++ ++/* These functions are locale dependent. The encoding argument identifies ++ the encoding (e.g. "ISO-8859-2" for Polish). */ ++ ++/* Determine number of column positions required for UC. */ ++extern int ++ uc_width (ucs4_t uc, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Determine number of column positions required for first N units ++ (or fewer if S ends before this) in S. */ ++extern int ++ u8_width (const uint8_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_width (const uint16_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_width (const uint32_t *s, size_t n, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++/* Determine number of column positions required for S. */ ++extern int ++ u8_strwidth (const uint8_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u16_strwidth (const uint16_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++extern int ++ u32_strwidth (const uint32_t *s, const char *encoding) ++ _UC_ATTRIBUTE_PURE; ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* _UNIWIDTH_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/wchar.h gettext-0.19/gettext-tools/libgettextpo/msvc/wchar.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/wchar.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/wchar.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,1350 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for ISO C99 , for platforms that have issues. ++ ++ Copyright (C) 2007-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Eric Blake. */ ++ ++/* ++ * ISO C 99 for platforms that have issues. ++ * ++ * ++ * For now, this just ensures proper prerequisite inclusion order and ++ * the declaration of wcwidth(). ++ */ ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if (((defined __need_mbstate_t || defined __need_wint_t) \ ++ && !defined __MINGW32__ && !defined __KLIBC__) \ ++ || (defined __hpux \ ++ && ((defined _INTTYPES_INCLUDED && !defined strtoimax) \ ++ || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) \ ++ || defined _GL_ALREADY_INCLUDING_WCHAR_H) ++/* Special invocation convention: ++ - Inside glibc and uClibc header files, but not MinGW. ++ - On HP-UX 11.00 we have a sequence of nested includes ++ -> -> , and the latter includes , ++ once indirectly -> -> -> ++ and once directly. In both situations 'wint_t' is not yet defined, ++ therefore we cannot provide the function overrides; instead include only ++ the system's . ++ - On IRIX 6.5, similarly, we have an include -> , and ++ the latter includes . But here, we have no way to detect whether ++ is completely included or is still being included. */ ++ ++#include MSVC_INCLUDE(wchar.h) ++ ++#else ++/* Normal invocation convention. */ ++ ++#ifndef _GL_GTPO_WCHAR_H ++ ++#define _GL_ALREADY_INCLUDING_WCHAR_H ++ ++#if 0 ++# include /* for __GLIBC__ */ ++#endif ++ ++/* Tru64 with Desktop Toolkit C has a bug: must be included before ++ . ++ BSD/OS 4.0.1 has a bug: , and must be ++ included before . ++ In some builds of uClibc, is nonexistent and wchar_t is defined ++ by . ++ But avoid namespace pollution on glibc systems. */ ++#if !(defined __GLIBC__ && !defined __UCLIBC__) ++# include ++#endif ++#ifndef __GLIBC__ ++# include ++# include ++#endif ++ ++/* Include the original if it exists. ++ Some builds of uClibc lack it. */ ++/* The include_next requires a split double-inclusion guard. */ ++#if 1 ++# include MSVC_INCLUDE(wchar.h) ++#endif ++ ++#undef _GL_ALREADY_INCLUDING_WCHAR_H ++ ++#ifndef _GL_GTPO_WCHAR_H ++#define _GL_GTPO_WCHAR_H ++ ++/* The __attribute__ feature is available in gcc versions 2.5 and later. ++ The attribute __pure__ was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_ARG_NONNULL is copied here. */ ++/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools ++ that the values passed as arguments n, ..., m must be non-NULL pointers. ++ n = 1 stands for the first argument, n = 2 for the second argument etc. */ ++#ifndef _GL_ARG_NONNULL ++# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3 ++# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) ++# else ++# define _GL_ARG_NONNULL(params) ++# endif ++#endif ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++ ++/* Define wint_t and WEOF. (Also done in wctype.in.h.) */ ++#if !1 && !defined wint_t ++# define wint_t int ++# ifndef WEOF ++# define WEOF -1 ++# endif ++#else ++/* MSVC defines wint_t as 'unsigned short' in . ++ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be ++ "unchanged by default argument promotions". Override it. */ ++# if defined _MSC_VER ++# if !GNULIB_defined_wint_t ++# include ++typedef unsigned int rpl_wint_t; ++# undef wint_t ++# define wint_t rpl_wint_t ++# define GNULIB_defined_wint_t 1 ++# endif ++# endif ++# ifndef WEOF ++# define WEOF ((wint_t) -1) ++# endif ++#endif ++ ++ ++/* Override mbstate_t if it is too small. ++ On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for ++ implementing mbrtowc for encodings like UTF-8. */ ++#if !(0 && 1) || 1 ++# if !GNULIB_defined_mbstate_t ++typedef int rpl_mbstate_t; ++# undef mbstate_t ++# define mbstate_t rpl_mbstate_t ++# define GNULIB_defined_mbstate_t 1 ++# endif ++#endif ++ ++ ++/* Convert a single-byte character to a wide character. */ ++#if (IN_GETTEXT_TOOLS_GNULIB_TESTS || IN_GETTEXT_TOOLS_LIBGREP) ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef btowc ++# define btowc rpl_btowc ++# endif ++_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (btowc, wint_t, (int c)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (btowc, wint_t, (int c)); ++# endif ++_GL_CXXALIASWARN (btowc); ++#elif defined GNULIB_POSIXCHECK ++# undef btowc ++# if HAVE_RAW_DECL_BTOWC ++_GL_WARN_ON_USE (btowc, "btowc is unportable - " ++ "use gnulib module btowc for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide character to a single-byte character. */ ++#if IN_GETTEXT_TOOLS_GNULIB_TESTS ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wctob ++# define wctob rpl_wctob ++# endif ++_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wctob, int, (wint_t wc)); ++# else ++# if !defined wctob && !1 ++/* wctob is provided by gnulib, or wctob exists but is not declared. */ ++_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wctob, int, (wint_t wc)); ++# endif ++_GL_CXXALIASWARN (wctob); ++#elif defined GNULIB_POSIXCHECK ++# undef wctob ++# if HAVE_RAW_DECL_WCTOB ++_GL_WARN_ON_USE (wctob, "wctob is unportable - " ++ "use gnulib module wctob for portability"); ++# endif ++#endif ++ ++ ++/* Test whether *PS is in the initial state. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsinit ++# define mbsinit rpl_mbsinit ++# endif ++_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps)); ++# else ++# if !0 ++_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsinit); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsinit ++# if HAVE_RAW_DECL_MBSINIT ++_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - " ++ "use gnulib module mbsinit for portability"); ++# endif ++#endif ++ ++ ++/* Convert a multibyte character to a wide character. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbrtowc ++# define mbrtowc rpl_mbrtowc ++# endif ++_GL_FUNCDECL_RPL (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbrtowc, size_t, ++ (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbrtowc); ++#elif defined GNULIB_POSIXCHECK ++# undef mbrtowc ++# if HAVE_RAW_DECL_MBRTOWC ++_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - " ++ "use gnulib module mbrtowc for portability"); ++# endif ++#endif ++ ++ ++/* Recognize a multibyte character. */ ++#if IN_GETTEXT_TOOLS_LIBGREP ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbrlen ++# define mbrlen rpl_mbrlen ++# endif ++_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbrlen); ++#elif defined GNULIB_POSIXCHECK ++# undef mbrlen ++# if HAVE_RAW_DECL_MBRLEN ++_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - " ++ "use gnulib module mbrlen for portability"); ++# endif ++#endif ++ ++ ++/* Convert a string to a wide string. */ ++#if 1 ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsrtowcs ++# define mbsrtowcs rpl_mbsrtowcs ++# endif ++_GL_FUNCDECL_RPL (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mbsrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsrtowcs); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsrtowcs ++# if HAVE_RAW_DECL_MBSRTOWCS ++_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - " ++ "use gnulib module mbsrtowcs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a string to a wide string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef mbsnrtowcs ++# define mbsnrtowcs rpl_mbsnrtowcs ++# endif ++_GL_FUNCDECL_RPL (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (mbsnrtowcs, size_t, ++ (wchar_t *dest, const char **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (mbsnrtowcs); ++#elif defined GNULIB_POSIXCHECK ++# undef mbsnrtowcs ++# if HAVE_RAW_DECL_MBSNRTOWCS ++_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - " ++ "use gnulib module mbsnrtowcs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide character to a multibyte character. */ ++#if (IN_GETTEXT_TOOLS_GNULIB_TESTS || IN_GETTEXT_TOOLS_LIBGREP) ++# if 1 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcrtomb ++# define wcrtomb rpl_wcrtomb ++# endif ++_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# endif ++_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcrtomb); ++#elif defined GNULIB_POSIXCHECK ++# undef wcrtomb ++# if HAVE_RAW_DECL_WCRTOMB ++_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - " ++ "use gnulib module wcrtomb for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide string to a string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcsrtombs ++# define wcsrtombs rpl_wcsrtombs ++# endif ++_GL_FUNCDECL_RPL (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (wcsrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcsrtombs); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsrtombs ++# if HAVE_RAW_DECL_WCSRTOMBS ++_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - " ++ "use gnulib module wcsrtombs for portability"); ++# endif ++#endif ++ ++ ++/* Convert a wide string to a string. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcsnrtombs ++# define wcsnrtombs rpl_wcsnrtombs ++# endif ++_GL_FUNCDECL_RPL (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++_GL_CXXALIAS_RPL (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps) ++ _GL_ARG_NONNULL ((2))); ++# endif ++_GL_CXXALIAS_SYS (wcsnrtombs, size_t, ++ (char *dest, const wchar_t **srcp, size_t srclen, size_t len, ++ mbstate_t *ps)); ++# endif ++_GL_CXXALIASWARN (wcsnrtombs); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsnrtombs ++# if HAVE_RAW_DECL_WCSNRTOMBS ++_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - " ++ "use gnulib module wcsnrtombs for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of screen columns needed for WC. */ ++#if 1 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcwidth ++# define wcwidth rpl_wcwidth ++# endif ++_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t)); ++# else ++# if !0 ++/* wcwidth exists but is not declared. */ ++_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE); ++# elif defined __KLIBC__ ++/* On OS/2 kLIBC, wcwidth is a macro that expands to the name of a ++ static inline function. The implementation of wcwidth in wcwidth.c ++ causes a "conflicting types" error. */ ++# undef wcwidth ++# endif ++_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t)); ++# endif ++_GL_CXXALIASWARN (wcwidth); ++#elif defined GNULIB_POSIXCHECK ++# undef wcwidth ++# if HAVE_RAW_DECL_WCWIDTH ++_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - " ++ "use gnulib module wcwidth for portability"); ++# endif ++#endif ++ ++ ++/* Search N wide characters of S for C. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t); ++ wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wmemchr, ++ wchar_t *, (const wchar_t *, wchar_t, size_t), ++ const wchar_t *, (const wchar_t *, wchar_t, size_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++_GL_CXXALIASWARN1 (wmemchr, const wchar_t *, ++ (const wchar_t *s, wchar_t c, size_t n)); ++# else ++_GL_CXXALIASWARN (wmemchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wmemchr ++# if HAVE_RAW_DECL_WMEMCHR ++_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - " ++ "use gnulib module wmemchr for portability"); ++# endif ++#endif ++ ++ ++/* Compare N wide characters of S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemcmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wmemcmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wmemcmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemcmp ++# if HAVE_RAW_DECL_WMEMCMP ++_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - " ++ "use gnulib module wmemcmp for portability"); ++# endif ++#endif ++ ++ ++/* Copy N wide characters of SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemcpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemcpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wmemcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemcpy ++# if HAVE_RAW_DECL_WMEMCPY ++_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - " ++ "use gnulib module wmemcpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for ++ overlapping memory areas. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemmove, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemmove, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wmemmove); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemmove ++# if HAVE_RAW_DECL_WMEMMOVE ++_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - " ++ "use gnulib module wmemmove for portability"); ++# endif ++#endif ++ ++ ++/* Set N wide characters of S to C. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n)); ++_GL_CXXALIASWARN (wmemset); ++#elif defined GNULIB_POSIXCHECK ++# undef wmemset ++# if HAVE_RAW_DECL_WMEMSET ++_GL_WARN_ON_USE (wmemset, "wmemset is unportable - " ++ "use gnulib module wmemset for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of wide characters in S. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s)); ++_GL_CXXALIASWARN (wcslen); ++#elif defined GNULIB_POSIXCHECK ++# undef wcslen ++# if HAVE_RAW_DECL_WCSLEN ++_GL_WARN_ON_USE (wcslen, "wcslen is unportable - " ++ "use gnulib module wcslen for portability"); ++# endif ++#endif ++ ++ ++/* Return the number of wide characters in S, but at most MAXLEN. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)); ++_GL_CXXALIASWARN (wcsnlen); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsnlen ++# if HAVE_RAW_DECL_WCSNLEN ++_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - " ++ "use gnulib module wcsnlen for portability"); ++# endif ++#endif ++ ++ ++/* Copy SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcscpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscpy ++# if HAVE_RAW_DECL_WCSCPY ++_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - " ++ "use gnulib module wcscpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcpcpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcpcpy ++# if HAVE_RAW_DECL_WCPCPY ++_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - " ++ "use gnulib module wcpcpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy no more than N wide characters of SRC to DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcsncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncpy ++# if HAVE_RAW_DECL_WCSNCPY ++_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - " ++ "use gnulib module wcsncpy for portability"); ++# endif ++#endif ++ ++ ++/* Copy no more than N characters of SRC to DEST, returning the address of ++ the last character written into DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcpncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcpncpy, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcpncpy); ++#elif defined GNULIB_POSIXCHECK ++# undef wcpncpy ++# if HAVE_RAW_DECL_WCPNCPY ++_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - " ++ "use gnulib module wcpncpy for portability"); ++# endif ++#endif ++ ++ ++/* Append SRC onto DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++# endif ++_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src)); ++_GL_CXXALIASWARN (wcscat); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscat ++# if HAVE_RAW_DECL_WCSCAT ++_GL_WARN_ON_USE (wcscat, "wcscat is unportable - " ++ "use gnulib module wcscat for portability"); ++# endif ++#endif ++ ++ ++/* Append no more than N wide characters of SRC onto DEST. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncat, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsncat, wchar_t *, ++ (wchar_t *dest, const wchar_t *src, size_t n)); ++_GL_CXXALIASWARN (wcsncat); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncat ++# if HAVE_RAW_DECL_WCSNCAT ++_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - " ++ "use gnulib module wcsncat for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscmp ++# if HAVE_RAW_DECL_WCSCMP ++_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - " ++ "use gnulib module wcscmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare no more than N wide characters of S1 and S2. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsncmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsncmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncmp ++# if HAVE_RAW_DECL_WCSNCMP ++_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - " ++ "use gnulib module wcsncmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2, ignoring case. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscasecmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscasecmp ++# if HAVE_RAW_DECL_WCSCASECMP ++_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - " ++ "use gnulib module wcscasecmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare no more than N chars of S1 and S2, ignoring case. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsncasecmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsncasecmp, int, ++ (const wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsncasecmp); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsncasecmp ++# if HAVE_RAW_DECL_WCSNCASECMP ++_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - " ++ "use gnulib module wcsncasecmp for portability"); ++# endif ++#endif ++ ++ ++/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE ++ category of the current locale. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); ++# endif ++_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2)); ++_GL_CXXALIASWARN (wcscoll); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscoll ++# if HAVE_RAW_DECL_WCSCOLL ++_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - " ++ "use gnulib module wcscoll for portability"); ++# endif ++#endif ++ ++ ++/* Transform S2 into array pointed to by S1 such that if wcscmp is applied ++ to two transformed strings the result is the as applying 'wcscoll' to the ++ original strings. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); ++# endif ++_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n)); ++_GL_CXXALIASWARN (wcsxfrm); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsxfrm ++# if HAVE_RAW_DECL_WCSXFRM ++_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - " ++ "use gnulib module wcsxfrm for portability"); ++# endif ++#endif ++ ++ ++/* Duplicate S, returning an identical malloc'd string. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s)); ++# endif ++_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s)); ++_GL_CXXALIASWARN (wcsdup); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsdup ++# if HAVE_RAW_DECL_WCSDUP ++_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - " ++ "use gnulib module wcsdup for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence of WC in WCS. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcschr (const wchar_t *, wchar_t); ++ wchar_t * std::wcschr (wchar_t *, wchar_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcschr, ++ wchar_t *, (const wchar_t *, wchar_t), ++ const wchar_t *, (const wchar_t *, wchar_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc)); ++_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); ++# else ++_GL_CXXALIASWARN (wcschr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcschr ++# if HAVE_RAW_DECL_WCSCHR ++_GL_WARN_ON_USE (wcschr, "wcschr is unportable - " ++ "use gnulib module wcschr for portability"); ++# endif ++#endif ++ ++ ++/* Find the last occurrence of WC in WCS. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcsrchr (const wchar_t *, wchar_t); ++ wchar_t * std::wcsrchr (wchar_t *, wchar_t); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcsrchr, ++ wchar_t *, (const wchar_t *, wchar_t), ++ const wchar_t *, (const wchar_t *, wchar_t)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc)); ++_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc)); ++# else ++_GL_CXXALIASWARN (wcsrchr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcsrchr ++# if HAVE_RAW_DECL_WCSRCHR ++_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - " ++ "use gnulib module wcsrchr for portability"); ++# endif ++#endif ++ ++ ++/* Return the length of the initial segmet of WCS which consists entirely ++ of wide characters not in REJECT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)); ++_GL_CXXALIASWARN (wcscspn); ++#elif defined GNULIB_POSIXCHECK ++# undef wcscspn ++# if HAVE_RAW_DECL_WCSCSPN ++_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - " ++ "use gnulib module wcscspn for portability"); ++# endif ++#endif ++ ++ ++/* Return the length of the initial segmet of WCS which consists entirely ++ of wide characters in ACCEPT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)); ++_GL_CXXALIASWARN (wcsspn); ++#elif defined GNULIB_POSIXCHECK ++# undef wcsspn ++# if HAVE_RAW_DECL_WCSSPN ++_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - " ++ "use gnulib module wcsspn for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence in WCS of any character in ACCEPT. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcspbrk, wchar_t *, ++ (const wchar_t *wcs, const wchar_t *accept) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *); ++ wchar_t * std::wcspbrk (wchar_t *, const wchar_t *); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcspbrk, ++ wchar_t *, (const wchar_t *, const wchar_t *), ++ const wchar_t *, (const wchar_t *, const wchar_t *)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcspbrk, wchar_t *, ++ (wchar_t *wcs, const wchar_t *accept)); ++_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *, ++ (const wchar_t *wcs, const wchar_t *accept)); ++# else ++_GL_CXXALIASWARN (wcspbrk); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcspbrk ++# if HAVE_RAW_DECL_WCSPBRK ++_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - " ++ "use gnulib module wcspbrk for portability"); ++# endif ++#endif ++ ++ ++/* Find the first occurrence of NEEDLE in HAYSTACK. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcsstr, wchar_t *, ++ (const wchar_t *haystack, const wchar_t *needle) ++ _GL_ATTRIBUTE_PURE); ++# endif ++ /* On some systems, this function is defined as an overloaded function: ++ extern "C++" { ++ const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *); ++ wchar_t * std::wcsstr (wchar_t *, const wchar_t *); ++ } */ ++_GL_CXXALIAS_SYS_CAST2 (wcsstr, ++ wchar_t *, (const wchar_t *, const wchar_t *), ++ const wchar_t *, (const wchar_t *, const wchar_t *)); ++# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ ++ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) ++_GL_CXXALIASWARN1 (wcsstr, wchar_t *, ++ (wchar_t *haystack, const wchar_t *needle)); ++_GL_CXXALIASWARN1 (wcsstr, const wchar_t *, ++ (const wchar_t *haystack, const wchar_t *needle)); ++# else ++_GL_CXXALIASWARN (wcsstr); ++# endif ++#elif defined GNULIB_POSIXCHECK ++# undef wcsstr ++# if HAVE_RAW_DECL_WCSSTR ++_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - " ++ "use gnulib module wcsstr for portability"); ++# endif ++#endif ++ ++ ++/* Divide WCS into tokens separated by characters in DELIM. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wcstok, wchar_t *, ++ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); ++# endif ++_GL_CXXALIAS_SYS (wcstok, wchar_t *, ++ (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr)); ++_GL_CXXALIASWARN (wcstok); ++#elif defined GNULIB_POSIXCHECK ++# undef wcstok ++# if HAVE_RAW_DECL_WCSTOK ++_GL_WARN_ON_USE (wcstok, "wcstok is unportable - " ++ "use gnulib module wcstok for portability"); ++# endif ++#endif ++ ++ ++/* Determine number of column positions required for first N wide ++ characters (or fewer if S ends before this) in S. */ ++#if 0 ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# undef wcswidth ++# define wcswidth rpl_wcswidth ++# endif ++_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n) ++ _GL_ATTRIBUTE_PURE); ++_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n)); ++# else ++# if !1 ++_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n) ++ _GL_ATTRIBUTE_PURE); ++# endif ++_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n)); ++# endif ++_GL_CXXALIASWARN (wcswidth); ++#elif defined GNULIB_POSIXCHECK ++# undef wcswidth ++# if HAVE_RAW_DECL_WCSWIDTH ++_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - " ++ "use gnulib module wcswidth for portability"); ++# endif ++#endif ++ ++ ++#endif /* _GL_GTPO_WCHAR_H */ ++#endif /* _GL_GTPO_WCHAR_H */ ++#endif +diff -Nru gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/wctype.h gettext-0.19/gettext-tools/libgettextpo/msvc/wctype.h +--- gettext-0.19-unpatched/gettext-tools/libgettextpo/msvc/wctype.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/libgettextpo/msvc/wctype.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,816 @@ ++/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ ++/* A substitute for ISO C99 , for platforms that lack it. ++ ++ Copyright (C) 2006-2016 Free Software Foundation, Inc. ++ ++ 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 3, 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 this program; if not, see . */ ++ ++/* Written by Bruno Haible and Paul Eggert. */ ++ ++/* ++ * ISO C 99 for platforms that lack it. ++ * ++ * ++ * iswctype, towctrans, towlower, towupper, wctrans, wctype, ++ * wctrans_t, and wctype_t are not yet implemented. ++ */ ++ ++#ifndef _GL_GTPO_WCTYPE_H ++ ++#if __GNUC__ >= 3 ++ ++#endif ++ ++ ++#if 1 ++/* Solaris 2.5 has a bug: must be included before . ++ Tru64 with Desktop Toolkit C has a bug: must be included before ++ . ++ BSD/OS 4.0.1 has a bug: , and must be ++ included before . */ ++# include ++# include ++# include ++# include ++#endif ++ ++/* mingw has declarations of towupper and towlower in as ++ well . Include in advance to avoid rpl_ prefix ++ being added to the declarations. */ ++#ifdef __MINGW32__ ++# include ++#endif ++ ++/* Include the original if it exists. ++ BeOS 5 has the functions but no . */ ++/* The include_next requires a split double-inclusion guard. */ ++#if 1 ++# include MSVC_INCLUDE(wctype.h) ++#endif ++ ++#ifndef _GL_GTPO_WCTYPE_H ++#define _GL_GTPO_WCTYPE_H ++ ++#ifndef _GL_INLINE_HEADER_BEGIN ++ #error "Please include config.h first." ++#endif ++_GL_INLINE_HEADER_BEGIN ++#ifndef _GL_WCTYPE_INLINE ++# define _GL_WCTYPE_INLINE _GL_INLINE ++#endif ++ ++/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ ++#ifndef _GL_CXXDEFS_H ++#define _GL_CXXDEFS_H ++ ++/* The three most frequent use cases of these macros are: ++ ++ * For providing a substitute for a function that is missing on some ++ platforms, but is declared and works fine on the platforms on which ++ it exists: ++ ++ #if @GNULIB_FOO@ ++ # if !@HAVE_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on all platforms, ++ but is broken/insufficient and needs to be replaced on some platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++ ++ * For providing a replacement for a function that exists on some platforms ++ but is broken/insufficient and needs to be replaced on some of them and ++ is additionally either missing or undeclared on some other platforms: ++ ++ #if @GNULIB_FOO@ ++ # if @REPLACE_FOO@ ++ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ # undef foo ++ # define foo rpl_foo ++ # endif ++ _GL_FUNCDECL_RPL (foo, ...); ++ _GL_CXXALIAS_RPL (foo, ...); ++ # else ++ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ ++ _GL_FUNCDECL_SYS (foo, ...); ++ # endif ++ _GL_CXXALIAS_SYS (foo, ...); ++ # endif ++ _GL_CXXALIASWARN (foo); ++ #elif defined GNULIB_POSIXCHECK ++ ... ++ #endif ++*/ ++ ++/* _GL_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#if defined __cplusplus ++# define _GL_EXTERN_C extern "C" ++#else ++# define _GL_EXTERN_C extern ++#endif ++ ++/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); ++ declares a replacement function, named rpl_func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ ++ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) ++#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype rpl_func parameters_and_attributes ++ ++/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); ++ declares the system function, named func, with the given prototype, ++ consisting of return type, parameters, and attributes. ++ Example: ++ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) ++ _GL_ARG_NONNULL ((1))); ++ */ ++#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C rettype func parameters_and_attributes ++ ++/* _GL_CXXALIAS_RPL (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to rpl_func, if GNULIB_NAMESPACE is defined. ++ Example: ++ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); ++ */ ++#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ ++ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = ::rpl_func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); ++ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); ++ except that the C function rpl_func may have a slightly different ++ declaration. A cast is used to silence the "invalid conversion" error ++ that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ rettype (*const func) parameters = \ ++ reinterpret_cast(::rpl_func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS (func, rettype, parameters); ++ declares a C++ alias called GNULIB_NAMESPACE::func ++ that redirects to the system provided function func, if GNULIB_NAMESPACE ++ is defined. ++ Example: ++ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); ++ */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* If we were to write ++ rettype (*const func) parameters = ::func; ++ like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls ++ better (remove an indirection through a 'static' pointer variable), ++ but then the _GL_CXXALIASWARN macro below would cause a warning not only ++ for uses of ::func but also for uses of GNULIB_NAMESPACE::func. */ ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = ::func; \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function func may have a slightly different declaration. ++ A cast is used to silence the "invalid conversion" error that would ++ otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast(::func); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); ++ is like _GL_CXXALIAS_SYS (func, rettype, parameters); ++ except that the C function is picked among a set of overloaded functions, ++ namely the one with rettype2 and parameters2. Two consecutive casts ++ are used to silence the "cannot find a match" and "invalid conversion" ++ errors that would otherwise occur. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++ /* The outer cast must be a reinterpret_cast. ++ The inner cast: When the function is defined as a set of overloaded ++ functions, it works as a static_cast<>, choosing the designated variant. ++ When the function is defined as a single variant, it works as a ++ reinterpret_cast<>. The parenthesized cast syntax works both ways. */ ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ namespace GNULIB_NAMESPACE \ ++ { \ ++ static rettype (*func) parameters = \ ++ reinterpret_cast( \ ++ (rettype2(*)parameters2)(::func)); \ ++ } \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#else ++# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN (func); ++ causes a warning to be emitted when ::func is used but not when ++ GNULIB_NAMESPACE::func is used. func must be defined without overloaded ++ variants. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN(func) \ ++ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN_1(func,namespace) \ ++ _GL_CXXALIASWARN_2 (func, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_WARN_ON_USE (func, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN_2(func,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN(func) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); ++ causes a warning to be emitted when the given overloaded variant of ::func ++ is used but not when GNULIB_NAMESPACE::func is used. */ ++#if defined __cplusplus && defined GNULIB_NAMESPACE ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ ++ GNULIB_NAMESPACE) ++# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) ++/* To work around GCC bug , ++ we enable the warning only when not optimizing. */ ++# if !__OPTIMIZE__ ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \ ++ "The symbol ::" #func " refers to the system function. " \ ++ "Use " #namespace "::" #func " instead.") ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ extern __typeof__ (func) func ++# else ++# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++# endif ++#else ++# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ ++ _GL_EXTERN_C int _gl_cxxalias_dummy ++#endif ++ ++#endif /* _GL_CXXDEFS_H */ ++ ++/* The definition of _GL_WARN_ON_USE is copied here. */ ++#ifndef _GL_WARN_ON_USE ++ ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++/* A compiler attribute is available in gcc versions 4.3.0 and later. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function __attribute__ ((__warning__ (message))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE(function, message) \ ++extern __typeof__ (function) function ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE(function, message) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string") ++ is like _GL_WARN_ON_USE (function, "string"), except that the function is ++ declared with the given prototype, consisting of return type, parameters, ++ and attributes. ++ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does ++ not work in this case. */ ++#ifndef _GL_WARN_ON_USE_CXX ++# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes \ ++ __attribute__ ((__warning__ (msg))) ++# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING ++/* Verify the existence of the function. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++extern rettype function parameters_and_attributes ++# else /* Unsupported. */ ++# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \ ++_GL_WARN_EXTERN_C int _gl_warn_on_use ++# endif ++#endif ++ ++/* _GL_WARN_EXTERN_C declaration; ++ performs the declaration with C linkage. */ ++#ifndef _GL_WARN_EXTERN_C ++# if defined __cplusplus ++# define _GL_WARN_EXTERN_C extern "C" ++# else ++# define _GL_WARN_EXTERN_C extern ++# endif ++#endif ++ ++/* Solaris 2.6 includes which includes which ++ #defines a number of identifiers in the application namespace. Revert ++ these #defines. */ ++#ifdef __sun ++# undef multibyte ++# undef eucw1 ++# undef eucw2 ++# undef eucw3 ++# undef scrw1 ++# undef scrw2 ++# undef scrw3 ++#endif ++ ++/* Define wint_t and WEOF. (Also done in wchar.in.h.) */ ++#if !1 && !defined wint_t ++# define wint_t int ++# ifndef WEOF ++# define WEOF -1 ++# endif ++#else ++/* MSVC defines wint_t as 'unsigned short' in . ++ This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be ++ "unchanged by default argument promotions". Override it. */ ++# if defined _MSC_VER ++# if !GNULIB_defined_wint_t ++# include ++typedef unsigned int rpl_wint_t; ++# undef wint_t ++# define wint_t rpl_wint_t ++# define GNULIB_defined_wint_t 1 ++# endif ++# endif ++# ifndef WEOF ++# define WEOF ((wint_t) -1) ++# endif ++#endif ++ ++ ++#if !GNULIB_defined_wctype_functions ++ ++/* FreeBSD 4.4 to 4.11 has but lacks the functions. ++ Linux libc5 has and the functions but they are broken. ++ Assume all 11 functions (all isw* except iswblank) are implemented the ++ same way, or not at all. */ ++# if ! 1 || 0 ++ ++/* IRIX 5.3 has macros but no functions, its isw* macros refer to an ++ undefined variable _ctmp_ and to macros like _P, and they ++ refer to system functions like _iswctype that are not in the ++ standard C library. Rather than try to get ancient buggy ++ implementations like this to work, just disable them. */ ++# undef iswalnum ++# undef iswalpha ++# undef iswblank ++# undef iswcntrl ++# undef iswdigit ++# undef iswgraph ++# undef iswlower ++# undef iswprint ++# undef iswpunct ++# undef iswspace ++# undef iswupper ++# undef iswxdigit ++# undef towlower ++# undef towupper ++ ++/* Linux libc5 has and the functions but they are broken. */ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iswalnum rpl_iswalnum ++# define iswalpha rpl_iswalpha ++# define iswblank rpl_iswblank ++# define iswcntrl rpl_iswcntrl ++# define iswdigit rpl_iswdigit ++# define iswgraph rpl_iswgraph ++# define iswlower rpl_iswlower ++# define iswprint rpl_iswprint ++# define iswpunct rpl_iswpunct ++# define iswspace rpl_iswspace ++# define iswupper rpl_iswupper ++# define iswxdigit rpl_iswxdigit ++# endif ++# endif ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towlower rpl_towlower ++# define towupper rpl_towupper ++# endif ++# endif ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswalnum ++# else ++iswalnum ++# endif ++ (wint_t wc) ++{ ++ return ((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswalpha ++# else ++iswalpha ++# endif ++ (wint_t wc) ++{ ++ return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswblank ++# else ++iswblank ++# endif ++ (wint_t wc) ++{ ++ return wc == ' ' || wc == '\t'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswcntrl ++# else ++iswcntrl ++# endif ++ (wint_t wc) ++{ ++ return (wc & ~0x1f) == 0 || wc == 0x7f; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswdigit ++# else ++iswdigit ++# endif ++ (wint_t wc) ++{ ++ return wc >= '0' && wc <= '9'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswgraph ++# else ++iswgraph ++# endif ++ (wint_t wc) ++{ ++ return wc >= '!' && wc <= '~'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswlower ++# else ++iswlower ++# endif ++ (wint_t wc) ++{ ++ return wc >= 'a' && wc <= 'z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswprint ++# else ++iswprint ++# endif ++ (wint_t wc) ++{ ++ return wc >= ' ' && wc <= '~'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswpunct ++# else ++iswpunct ++# endif ++ (wint_t wc) ++{ ++ return (wc >= '!' && wc <= '~' ++ && !((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'))); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswspace ++# else ++iswspace ++# endif ++ (wint_t wc) ++{ ++ return (wc == ' ' || wc == '\t' ++ || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r'); ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswupper ++# else ++iswupper ++# endif ++ (wint_t wc) ++{ ++ return wc >= 'A' && wc <= 'Z'; ++} ++ ++_GL_WCTYPE_INLINE int ++# if 0 ++rpl_iswxdigit ++# else ++iswxdigit ++# endif ++ (wint_t wc) ++{ ++ return ((wc >= '0' && wc <= '9') ++ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F')); ++} ++ ++_GL_WCTYPE_INLINE wint_t ++# if 0 ++rpl_towlower ++# else ++towlower ++# endif ++ (wint_t wc) ++{ ++ return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc); ++} ++ ++_GL_WCTYPE_INLINE wint_t ++# if 0 ++rpl_towupper ++# else ++towupper ++# endif ++ (wint_t wc) ++{ ++ return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc); ++} ++ ++# elif (_MSC_VER < 1800) ++/* Only the iswblank function is missing. */ ++ ++# if 0 ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define iswblank rpl_iswblank ++# endif ++_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc)); ++# else ++_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc)); ++# endif ++ ++# endif ++ ++# if defined __MINGW32__ ++ ++/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t. ++ The functions towlower and towupper are implemented in the MSVCRT library ++ to take a wchar_t argument and return a wchar_t result. mingw declares ++ these functions to take a wint_t argument and return a wint_t result. ++ This means that: ++ 1. When the user passes an argument outside the range 0x0000..0xFFFF, the ++ function will look only at the lower 16 bits. This is allowed according ++ to POSIX. ++ 2. The return value is returned in the lower 16 bits of the result register. ++ The upper 16 bits are random: whatever happened to be in that part of the ++ result register. We need to fix this by adding a zero-extend from ++ wchar_t to wint_t after the call. */ ++ ++_GL_WCTYPE_INLINE wint_t ++rpl_towlower (wint_t wc) ++{ ++ return (wint_t) (wchar_t) towlower (wc); ++} ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towlower rpl_towlower ++# endif ++ ++_GL_WCTYPE_INLINE wint_t ++rpl_towupper (wint_t wc) ++{ ++ return (wint_t) (wchar_t) towupper (wc); ++} ++# if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++# define towupper rpl_towupper ++# endif ++ ++# endif /* __MINGW32__ */ ++ ++# define GNULIB_defined_wctype_functions 1 ++#endif ++ ++#if 0 ++_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswlower, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswprint, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswspace, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswupper, int, (wint_t wc)); ++_GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc)); ++#else ++_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswlower, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswprint, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswspace, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc)); ++_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc)); ++#endif ++_GL_CXXALIASWARN (iswalnum); ++_GL_CXXALIASWARN (iswalpha); ++_GL_CXXALIASWARN (iswcntrl); ++_GL_CXXALIASWARN (iswdigit); ++_GL_CXXALIASWARN (iswgraph); ++_GL_CXXALIASWARN (iswlower); ++_GL_CXXALIASWARN (iswprint); ++_GL_CXXALIASWARN (iswpunct); ++_GL_CXXALIASWARN (iswspace); ++_GL_CXXALIASWARN (iswupper); ++_GL_CXXALIASWARN (iswxdigit); ++ ++#if 1 ++# if 0 || 0 ++_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc)); ++# else ++_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc)); ++# endif ++_GL_CXXALIASWARN (iswblank); ++#endif ++ ++#if !1 ++# if !GNULIB_defined_wctype_t ++typedef void * wctype_t; ++# define GNULIB_defined_wctype_t 1 ++# endif ++#endif ++ ++/* Get a descriptor for a wide character property. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name)); ++# endif ++_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name)); ++_GL_CXXALIASWARN (wctype); ++#elif defined GNULIB_POSIXCHECK ++# undef wctype ++# if HAVE_RAW_DECL_WCTYPE ++_GL_WARN_ON_USE (wctype, "wctype is unportable - " ++ "use gnulib module wctype for portability"); ++# endif ++#endif ++ ++/* Test whether a wide character has a given property. ++ The argument WC must be either a wchar_t value or WEOF. ++ The argument DESC must have been returned by the wctype() function. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc)); ++# endif ++_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc)); ++_GL_CXXALIASWARN (iswctype); ++#elif defined GNULIB_POSIXCHECK ++# undef iswctype ++# if HAVE_RAW_DECL_ISWCTYPE ++_GL_WARN_ON_USE (iswctype, "iswctype is unportable - " ++ "use gnulib module iswctype for portability"); ++# endif ++#endif ++ ++#if 0 || defined __MINGW32__ ++_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc)); ++_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc)); ++#else ++_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc)); ++_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc)); ++#endif ++_GL_CXXALIASWARN (towlower); ++_GL_CXXALIASWARN (towupper); ++ ++#if !1 ++# if !GNULIB_defined_wctrans_t ++typedef void * wctrans_t; ++# define GNULIB_defined_wctrans_t 1 ++# endif ++#endif ++ ++/* Get a descriptor for a wide character case conversion. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name)); ++# endif ++_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name)); ++_GL_CXXALIASWARN (wctrans); ++#elif defined GNULIB_POSIXCHECK ++# undef wctrans ++# if HAVE_RAW_DECL_WCTRANS ++_GL_WARN_ON_USE (wctrans, "wctrans is unportable - " ++ "use gnulib module wctrans for portability"); ++# endif ++#endif ++ ++/* Perform a given case conversion on a wide character. ++ The argument WC must be either a wchar_t value or WEOF. ++ The argument DESC must have been returned by the wctrans() function. */ ++#if 0 ++# if !1 ++_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); ++# endif ++_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc)); ++_GL_CXXALIASWARN (towctrans); ++#elif defined GNULIB_POSIXCHECK ++# undef towctrans ++# if HAVE_RAW_DECL_TOWCTRANS ++_GL_WARN_ON_USE (towctrans, "towctrans is unportable - " ++ "use gnulib module towctrans for portability"); ++# endif ++#endif ++ ++_GL_INLINE_HEADER_END ++ ++#endif /* _GL_GTPO_WCTYPE_H */ ++#endif /* _GL_GTPO_WCTYPE_H */ +diff -Nru gettext-0.19-unpatched/gettext-tools/msvc/config.h gettext-0.19/gettext-tools/msvc/config.h +--- gettext-0.19-unpatched/gettext-tools/msvc/config.h 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/msvc/config.h 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,3348 @@ ++/* config.h. Generated from config.h.in by configure. */ ++/* config.h.in. Generated from configure.ac by autoheader. */ ++ ++#ifndef _MSC_VER ++# error "This is used for Visual Studio builds only" ++#endif ++ ++#ifdef _WIN64 ++# define PLAT "x64" ++# define _GL_SIZE_T_BITS 64 ++# define _GL_PTRDIFF_T_SUFFIX ll ++# define _GL_USER_LABEL_PREFIX ++#else ++# define PLAT "Win32" ++# define _GL_SIZE_T_BITS 32 ++# define _GL_PTRDIFF_T_SUFFIX ++# define _GL_USER_LABEL_PREFIX _ ++#endif ++ ++#if (_MSC_VER < 1900) ++#define MSVC_INCLUDE(header) <../include/ ##header## > ++#else ++#define MSVC_INCLUDE(header) <../ucrt/ ##header## > ++#endif ++ ++#define _GL_SIZE_T_SUFFIX u ##_GL_PTRDIFF_T_SUFFIX ++ ++ ++/* Default value for alignment of strings in .mo file. */ ++#define DEFAULT_OUTPUT_ALIGNMENT 1 ++ ++ ++/* Define this to an absolute name of ++ . */ ++/* #undef ABSOLUTE_LIBCROCO_0_6_LIBCROCO_LIBCROCO_CONFIG_H */ ++ ++/* Define this to an absolute name of . */ ++/* #undef ABSOLUTE_LIBXML2_LIBXML_XMLEXPORTS_H */ ++ ++/* Define this to an absolute name of . */ ++/* #undef ABSOLUTE_LIBXML2_LIBXML_XMLVERSION_H */ ++ ++/* Define if building universal (internal helper macro) */ ++/* #undef AC_APPLE_UNIVERSAL_BUILD */ ++ ++#if (_MSC_VER < 1700) ++/* Define to the number of bits in type 'ptrdiff_t'. */ ++# define BITSIZEOF_PTRDIFF_T 32 ++ ++/* Define to the number of bits in type 'sig_atomic_t'. */ ++# define BITSIZEOF_SIG_ATOMIC_T 32 ++ ++/* Define to the number of bits in type 'size_t'. */ ++# define BITSIZEOF_SIZE_T 32 ++ ++/* Define to the number of bits in type 'wchar_t'. */ ++# define BITSIZEOF_WCHAR_T 16 ++#endif ++ ++/* Define to the number of bits in type 'wint_t'. */ ++#define BITSIZEOF_WINT_T 16 ++ ++/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP ++ systems. This function is required for `alloca.c' support on those systems. ++ */ ++/* #undef CRAY_STACKSEG_END */ ++ ++/* Define if mono is the preferred C# implementation. */ ++/* #undef CSHARP_CHOICE_MONO */ ++ ++/* Define if pnet is the preferred C# implementation. */ ++/* #undef CSHARP_CHOICE_PNET */ ++ ++/* Define to 1 if using `alloca.c'. */ ++/* #undef C_ALLOCA */ ++ ++/* Define to 1 if the C locale may have encoding errors. */ ++/* #undef C_LOCALE_MAYBE_EILSEQ */ ++ ++/* Define as the bit index in the word where to find bit 0 of the exponent of ++ 'double'. */ ++#define DBL_EXPBIT0_BIT 20 ++ ++/* Define as the word index where to find the exponent of 'double'. */ ++#define DBL_EXPBIT0_WORD 1 ++ ++/* Define as the bit index in the word where to find the sign of 'double'. */ ++#if (_MSC_VER < 1800) ++# define DBL_SIGNBIT_BIT 31 ++ ++/* Define as the word index where to find the sign of 'double'. */ ++# define DBL_SIGNBIT_WORD 1 ++#endif ++ ++/* the name of the file descriptor member of DIR */ ++/* #undef DIR_FD_MEMBER_NAME */ ++ ++#ifdef DIR_FD_MEMBER_NAME ++# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME) ++#else ++# define DIR_TO_FD(Dir_p) -1 ++#endif ++ ++ ++/* Define to 1 if // is a file system root distinct from /. */ ++#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1 ++ ++/* Define to 1 if translation of program messages to the user's native ++ language is requested. */ ++#define ENABLE_NLS 1 ++ ++/* Define to 1 if the package shall run at any location in the file system. */ ++#define ENABLE_RELOCATABLE 1 ++ ++/* Define according to the byte order of the target machine: 1 for big endian, ++ 0 for little endian. */ ++#define ENDIANNESS 0 ++ ++/* Define this to 1 if F_DUPFD behavior does not match POSIX */ ++/* #undef FCNTL_DUPFD_BUGGY */ ++ ++/* Define as the bit index in the word where to find bit 0 of the exponent of ++ 'float'. */ ++#define FLT_EXPBIT0_BIT 23 ++ ++/* Define as the word index where to find the exponent of 'float'. */ ++#define FLT_EXPBIT0_WORD 0 ++ ++/* Define as the bit index in the word where to find the sign of 'float'. */ ++#if (_MSC_VER < 1800) ++# define FLT_SIGNBIT_BIT 31 ++ ++/* Define as the word index where to find the sign of 'float'. */ ++# define FLT_SIGNBIT_WORD 0 ++#endif ++ ++/* Define to 1 if fopen() fails to recognize a trailing slash. */ ++#define FOPEN_TRAILING_SLASH_BUG 1 ++ ++/* Define to 1 if the system's ftello function has the Solaris bug. */ ++/* #undef FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE */ ++ ++/* Define to 1 if nl_langinfo (YESEXPR) returns a non-empty string. */ ++/* #undef FUNC_NL_LANGINFO_YESEXPR_WORKS */ ++ ++/* Define to 1 if realpath() can malloc memory, always gives an absolute path, ++ and handles trailing slash correctly. */ ++/* #undef FUNC_REALPATH_WORKS */ ++ ++/* Define to 1 if ungetc is broken when used on arbitrary bytes. */ ++/* #undef FUNC_UNGETC_BROKEN */ ++ ++/* Define if gettimeofday clobbers the localtime buffer. */ ++/* #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME */ ++ ++/* Define this to 'void' or 'struct timezone' to match the system's ++ declaration of the second argument to gettimeofday. */ ++#define GETTIMEOFDAY_TIMEZONE void ++ ++/* Define to 1 if getxattr works with XATTR_NAME_POSIX_ACL_ACCESS and ++ XATTR_NAME_POSIX_ACL_DEFAULT. */ ++/* #undef GETXATTR_WITH_POSIX_ACLS */ ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module canonicalize-lgpl shall be considered present. */ ++#define GNULIB_CANONICALIZE_LGPL 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module fd-safer-flag shall be considered present. */ ++#define GNULIB_FD_SAFER_FLAG 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module fscanf shall be considered present. */ ++#define GNULIB_FSCANF 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module fwriteerror shall be considered present. */ ++#define GNULIB_FWRITEERROR 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module lock shall be considered present. */ ++#define GNULIB_LOCK 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module pipe2-safer shall be considered present. */ ++#define GNULIB_PIPE2_SAFER 1 ++ ++/* Define to 1 if printf and friends should be labeled with attribute ++ "__gnu_printf__" instead of "__printf__" */ ++#if (_MSC_VER < 1800) ++# define GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 1 ++#endif ++ ++/* Define when the error facility is replaced by gnulib. */ ++#define GNULIB_REPLACE_ERROR 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module scanf shall be considered present. */ ++#define GNULIB_SCANF 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module sigpipe shall be considered present. */ ++#define GNULIB_SIGPIPE 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module snprintf shall be considered present. */ ++#define GNULIB_SNPRINTF 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module strerror shall be considered present. */ ++#define GNULIB_STRERROR 1 ++ ++/* Define to 1 when the gnulib module btowc should be tested. */ ++#define GNULIB_TEST_BTOWC 1 ++ ++/* Define to 1 when the gnulib module canonicalize_file_name should be tested. ++ */ ++#define GNULIB_TEST_CANONICALIZE_FILE_NAME 1 ++ ++/* Define to 1 when the gnulib module cloexec should be tested. */ ++#define GNULIB_TEST_CLOEXEC 1 ++ ++/* Define to 1 when the gnulib module close should be tested. */ ++#define GNULIB_TEST_CLOSE 1 ++ ++/* Define to 1 when the gnulib module closedir should be tested. */ ++#define GNULIB_TEST_CLOSEDIR 1 ++ ++/* Define to 1 when the gnulib module dirfd should be tested. */ ++#define GNULIB_TEST_DIRFD 1 ++ ++/* Define to 1 when the gnulib module dup should be tested. */ ++#define GNULIB_TEST_DUP 1 ++ ++/* Define to 1 when the gnulib module dup2 should be tested. */ ++#define GNULIB_TEST_DUP2 1 ++ ++/* Define to 1 when the gnulib module environ should be tested. */ ++#define GNULIB_TEST_ENVIRON 1 ++ ++/* Define to 1 when the gnulib module fcntl should be tested. */ ++#define GNULIB_TEST_FCNTL 1 ++ ++/* Define to 1 when the gnulib module fdopen should be tested. */ ++#define GNULIB_TEST_FDOPEN 1 ++ ++/* Define to 1 when the gnulib module fopen should be tested. */ ++#define GNULIB_TEST_FOPEN 1 ++ ++/* Define to 1 when the gnulib module fstat should be tested. */ ++#define GNULIB_TEST_FSTAT 1 ++ ++/* Define to 1 when the gnulib module ftell should be tested. */ ++#define GNULIB_TEST_FTELL 1 ++ ++/* Define to 1 when the gnulib module ftello should be tested. */ ++#define GNULIB_TEST_FTELLO 1 ++ ++/* Define to 1 when the gnulib module getcwd should be tested. */ ++#define GNULIB_TEST_GETCWD 1 ++ ++/* Define to 1 when the gnulib module getdelim should be tested. */ ++#define GNULIB_TEST_GETDELIM 1 ++ ++/* Define to 1 when the gnulib module getdtablesize should be tested. */ ++#define GNULIB_TEST_GETDTABLESIZE 1 ++ ++/* Define to 1 when the gnulib module getline should be tested. */ ++#define GNULIB_TEST_GETLINE 1 ++ ++/* Define to 1 when the gnulib module getopt-gnu should be tested. */ ++#define GNULIB_TEST_GETOPT_GNU 1 ++ ++/* Define to 1 when the gnulib module getpagesize should be tested. */ ++#define GNULIB_TEST_GETPAGESIZE 1 ++ ++/* Define to 1 when the gnulib module gettimeofday should be tested. */ ++#define GNULIB_TEST_GETTIMEOFDAY 1 ++ ++/* Define to 1 when the gnulib module isinf should be tested. */ ++#define GNULIB_TEST_ISINF 1 ++ ++/* Define to 1 when the gnulib module isnan should be tested. */ ++#define GNULIB_TEST_ISNAN 1 ++ ++/* Define to 1 when the gnulib module isnand should be tested. */ ++#define GNULIB_TEST_ISNAND 1 ++ ++/* Define to 1 when the gnulib module isnanf should be tested. */ ++#define GNULIB_TEST_ISNANF 1 ++ ++/* Define to 1 when the gnulib module isnanl should be tested. */ ++#define GNULIB_TEST_ISNANL 1 ++ ++/* Define to 1 when the gnulib module iswblank should be tested. */ ++#define GNULIB_TEST_ISWBLANK 1 ++ ++/* Define to 1 when the gnulib module localeconv should be tested. */ ++#define GNULIB_TEST_LOCALECONV 1 ++ ++/* Define to 1 when the gnulib module log10 should be tested. */ ++#define GNULIB_TEST_LOG10 1 ++ ++/* Define to 1 when the gnulib module lseek should be tested. */ ++#define GNULIB_TEST_LSEEK 1 ++ ++/* Define to 1 when the gnulib module lstat should be tested. */ ++#define GNULIB_TEST_LSTAT 1 ++ ++/* Define to 1 when the gnulib module malloc-posix should be tested. */ ++#define GNULIB_TEST_MALLOC_POSIX 1 ++ ++/* Define to 1 when the gnulib module mbrlen should be tested. */ ++#define GNULIB_TEST_MBRLEN 1 ++ ++/* Define to 1 when the gnulib module mbrtowc should be tested. */ ++#define GNULIB_TEST_MBRTOWC 1 ++ ++/* Define to 1 when the gnulib module mbsinit should be tested. */ ++#define GNULIB_TEST_MBSINIT 1 ++ ++/* Define to 1 when the gnulib module mbslen should be tested. */ ++#define GNULIB_TEST_MBSLEN 1 ++ ++/* Define to 1 when the gnulib module mbsrtowcs should be tested. */ ++#define GNULIB_TEST_MBSRTOWCS 1 ++ ++/* Define to 1 when the gnulib module mbsstr should be tested. */ ++#define GNULIB_TEST_MBSSTR 1 ++ ++/* Define to 1 when the gnulib module mbtowc should be tested. */ ++#define GNULIB_TEST_MBTOWC 1 ++ ++/* Define to 1 when the gnulib module memchr should be tested. */ ++#define GNULIB_TEST_MEMCHR 1 ++ ++/* Define to 1 when the gnulib module mkdtemp should be tested. */ ++#define GNULIB_TEST_MKDTEMP 1 ++ ++/* Define to 1 when the gnulib module nl_langinfo should be tested. */ ++#define GNULIB_TEST_NL_LANGINFO 1 ++ ++/* Define to 1 when the gnulib module open should be tested. */ ++#define GNULIB_TEST_OPEN 1 ++ ++/* Define to 1 when the gnulib module opendir should be tested. */ ++#define GNULIB_TEST_OPENDIR 1 ++ ++/* Define to 1 when the gnulib module pipe2 should be tested. */ ++#define GNULIB_TEST_PIPE2 1 ++ ++/* Define to 1 when the gnulib module posix_spawnattr_destroy should be ++ tested. */ ++#define GNULIB_TEST_POSIX_SPAWNATTR_DESTROY 1 ++ ++/* Define to 1 when the gnulib module posix_spawnattr_init should be tested. ++ */ ++#define GNULIB_TEST_POSIX_SPAWNATTR_INIT 1 ++ ++/* Define to 1 when the gnulib module posix_spawnattr_setflags should be ++ tested. */ ++#define GNULIB_TEST_POSIX_SPAWNATTR_SETFLAGS 1 ++ ++/* Define to 1 when the gnulib module posix_spawnattr_setsigmask should be ++ tested. */ ++#define GNULIB_TEST_POSIX_SPAWNATTR_SETSIGMASK 1 ++ ++/* Define to 1 when the gnulib module posix_spawnp should be tested. */ ++#define GNULIB_TEST_POSIX_SPAWNP 1 ++ ++/* Define to 1 when the gnulib module posix_spawn_file_actions_addclose should ++ be tested. */ ++#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE 1 ++ ++/* Define to 1 when the gnulib module posix_spawn_file_actions_adddup2 should ++ be tested. */ ++#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 1 ++ ++/* Define to 1 when the gnulib module posix_spawn_file_actions_addopen should ++ be tested. */ ++#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN 1 ++ ++/* Define to 1 when the gnulib module posix_spawn_file_actions_destroy should ++ be tested. */ ++#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_DESTROY 1 ++ ++/* Define to 1 when the gnulib module posix_spawn_file_actions_init should be ++ tested. */ ++#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_INIT 1 ++ ++/* Define to 1 when the gnulib module putenv should be tested. */ ++#define GNULIB_TEST_PUTENV 1 ++ ++/* Define to 1 when the gnulib module raise should be tested. */ ++#define GNULIB_TEST_RAISE 1 ++ ++/* Define to 1 when the gnulib module rawmemchr should be tested. */ ++#define GNULIB_TEST_RAWMEMCHR 1 ++ ++/* Define to 1 when the gnulib module read should be tested. */ ++#define GNULIB_TEST_READ 1 ++ ++/* Define to 1 when the gnulib module readdir should be tested. */ ++#define GNULIB_TEST_READDIR 1 ++ ++/* Define to 1 when the gnulib module readlink should be tested. */ ++#define GNULIB_TEST_READLINK 1 ++ ++/* Define to 1 when the gnulib module realloc-posix should be tested. */ ++#define GNULIB_TEST_REALLOC_POSIX 1 ++ ++/* Define to 1 when the gnulib module realpath should be tested. */ ++#define GNULIB_TEST_REALPATH 1 ++ ++/* Define to 1 when the gnulib module rmdir should be tested. */ ++#define GNULIB_TEST_RMDIR 1 ++ ++/* Define to 1 when the gnulib module secure_getenv should be tested. */ ++#define GNULIB_TEST_SECURE_GETENV 1 ++ ++/* Define to 1 when the gnulib module setenv should be tested. */ ++#define GNULIB_TEST_SETENV 1 ++ ++/* Define to 1 when the gnulib module setlocale should be tested. */ ++#define GNULIB_TEST_SETLOCALE 1 ++ ++/* Define to 1 when the gnulib module sigaction should be tested. */ ++#define GNULIB_TEST_SIGACTION 1 ++ ++/* Define to 1 when the gnulib module signbit should be tested. */ ++#define GNULIB_TEST_SIGNBIT 1 ++ ++/* Define to 1 when the gnulib module sigprocmask should be tested. */ ++#define GNULIB_TEST_SIGPROCMASK 1 ++ ++/* Define to 1 when the gnulib module sleep should be tested. */ ++#define GNULIB_TEST_SLEEP 1 ++ ++/* Define to 1 when the gnulib module snprintf should be tested. */ ++#define GNULIB_TEST_SNPRINTF 1 ++ ++/* Define to 1 when the gnulib module stat should be tested. */ ++#define GNULIB_TEST_STAT 1 ++ ++/* Define to 1 when the gnulib module stpcpy should be tested. */ ++#define GNULIB_TEST_STPCPY 1 ++ ++/* Define to 1 when the gnulib module stpncpy should be tested. */ ++#define GNULIB_TEST_STPNCPY 1 ++ ++/* Define to 1 when the gnulib module strchrnul should be tested. */ ++#define GNULIB_TEST_STRCHRNUL 1 ++ ++/* Define to 1 when the gnulib module strerror should be tested. */ ++#define GNULIB_TEST_STRERROR 1 ++ ++/* Define to 1 when the gnulib module strnlen should be tested. */ ++#define GNULIB_TEST_STRNLEN 1 ++ ++/* Define to 1 when the gnulib module strpbrk should be tested. */ ++#define GNULIB_TEST_STRPBRK 1 ++ ++/* Define to 1 when the gnulib module strstr should be tested. */ ++#define GNULIB_TEST_STRSTR 1 ++ ++/* Define to 1 when the gnulib module symlink should be tested. */ ++#define GNULIB_TEST_SYMLINK 1 ++ ++/* Define to 1 when the gnulib module unsetenv should be tested. */ ++#define GNULIB_TEST_UNSETENV 1 ++ ++/* Define to 1 when the gnulib module vasprintf should be tested. */ ++#define GNULIB_TEST_VASPRINTF 1 ++ ++/* Define to 1 when the gnulib module vsnprintf should be tested. */ ++#define GNULIB_TEST_VSNPRINTF 1 ++ ++/* Define to 1 when the gnulib module waitpid should be tested. */ ++#define GNULIB_TEST_WAITPID 1 ++ ++/* Define to 1 when the gnulib module wcrtomb should be tested. */ ++#define GNULIB_TEST_WCRTOMB 1 ++ ++/* Define to 1 when the gnulib module wctob should be tested. */ ++#define GNULIB_TEST_WCTOB 1 ++ ++/* Define to 1 when the gnulib module wctomb should be tested. */ ++#define GNULIB_TEST_WCTOMB 1 ++ ++/* Define to 1 when the gnulib module wcwidth should be tested. */ ++#define GNULIB_TEST_WCWIDTH 1 ++ ++/* Define to 1 when the gnulib module write should be tested. */ ++#define GNULIB_TEST_WRITE 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module unistr/u16-mbtouc shall be considered present. */ ++#define GNULIB_UNISTR_U16_MBTOUC 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module unistr/u8-mbtouc shall be considered present. */ ++#define GNULIB_UNISTR_U8_MBTOUC 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module unistr/u8-mbtoucr shall be considered present. */ ++#define GNULIB_UNISTR_U8_MBTOUCR 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module unistr/u8-mbtouc-unsafe shall be considered ++ present. */ ++#define GNULIB_UNISTR_U8_MBTOUC_UNSAFE 1 ++ ++/* Define to a C preprocessor expression that evaluates to 1 or 0, depending ++ whether the gnulib module unistr/u8-uctomb shall be considered present. */ ++#define GNULIB_UNISTR_U8_UCTOMB 1 ++ ++/* Define to 1 if you have the `aclsort' function. */ ++/* #undef HAVE_ACLSORT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_ACLV_H */ ++ ++/* Define to 1 if you have the `aclx_get' function. */ ++/* #undef HAVE_ACLX_GET */ ++ ++/* Define to 1 if you have the `acl_copy_ext_native' function. */ ++/* #undef HAVE_ACL_COPY_EXT_NATIVE */ ++ ++/* Define to 1 if you have the `acl_create_entry_np' function. */ ++/* #undef HAVE_ACL_CREATE_ENTRY_NP */ ++ ++/* Define to 1 if you have the `acl_delete_def_file' function. */ ++/* #undef HAVE_ACL_DELETE_DEF_FILE */ ++ ++/* Define to 1 if you have the `acl_delete_fd_np' function. */ ++/* #undef HAVE_ACL_DELETE_FD_NP */ ++ ++/* Define to 1 if you have the `acl_delete_file_np' function. */ ++/* #undef HAVE_ACL_DELETE_FILE_NP */ ++ ++/* Define to 1 if you have the `acl_entries' function. */ ++/* #undef HAVE_ACL_ENTRIES */ ++ ++/* Define to 1 if you have the `acl_extended_file' function. */ ++/* #undef HAVE_ACL_EXTENDED_FILE */ ++ ++/* Define to 1 if the constant ACL_FIRST_ENTRY exists. */ ++/* #undef HAVE_ACL_FIRST_ENTRY */ ++ ++/* Define to 1 if you have the `acl_free' function. */ ++/* #undef HAVE_ACL_FREE */ ++ ++/* Define to 1 if you have the `acl_free_text' function. */ ++/* #undef HAVE_ACL_FREE_TEXT */ ++ ++/* Define to 1 if you have the `acl_from_mode' function. */ ++/* #undef HAVE_ACL_FROM_MODE */ ++ ++/* Define to 1 if you have the `acl_from_text' function. */ ++/* #undef HAVE_ACL_FROM_TEXT */ ++ ++/* Define to 1 if you have the `acl_get_fd' function. */ ++/* #undef HAVE_ACL_GET_FD */ ++ ++/* Define to 1 if you have the `acl_get_file' function. */ ++/* #undef HAVE_ACL_GET_FILE */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_ACL_LIBACL_H */ ++ ++/* Define to 1 if you have the `acl_set_fd' function. */ ++/* #undef HAVE_ACL_SET_FD */ ++ ++/* Define to 1 if you have the `acl_set_file' function. */ ++/* #undef HAVE_ACL_SET_FILE */ ++ ++/* Define to 1 if you have the `acl_to_short_text' function. */ ++/* #undef HAVE_ACL_TO_SHORT_TEXT */ ++ ++/* Define to 1 if you have the `acl_trivial' function. */ ++/* #undef HAVE_ACL_TRIVIAL */ ++ ++/* Define to 1 if the ACL type ACL_TYPE_EXTENDED exists. */ ++/* #undef HAVE_ACL_TYPE_EXTENDED */ ++ ++/* Define to 1 if you have `alloca', as a function or macro. */ ++#define HAVE_ALLOCA 1 ++ ++/* Define to 1 if you have and it should be used (not on Ultrix). ++ */ ++/* #undef HAVE_ALLOCA_H */ ++ ++/* Define to 1 if you have the `argz_count' function. */ ++/* #undef HAVE_ARGZ_COUNT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_ARGZ_H */ ++ ++/* Define to 1 if you have the `argz_next' function. */ ++/* #undef HAVE_ARGZ_NEXT */ ++ ++/* Define to 1 if you have the `argz_stringify' function. */ ++/* #undef HAVE_ARGZ_STRINGIFY */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_ARPA_INET_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_ARPA_NAMESER_H */ ++ ++/* Define to 1 if you have the `asprintf' function. */ ++/* #undef HAVE_ASPRINTF */ ++ ++/* Define to 1 if you have the `atexit' function. */ ++#define HAVE_ATEXIT 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_BP_SYM_H */ ++ ++/* Define to 1 if you have the `btowc' function. */ ++#define HAVE_BTOWC 1 ++ ++/* Define to 1 if the compiler understands __builtin_expect. */ ++/* #undef HAVE_BUILTIN_EXPECT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_BYTESWAP_H */ ++ ++/* Define to 1 if you have the `canonicalize_file_name' function. */ ++/* #undef HAVE_CANONICALIZE_FILE_NAME */ ++ ++/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the ++ CoreFoundation framework. */ ++/* #undef HAVE_CFLOCALECOPYCURRENT */ ++ ++/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in ++ the CoreFoundation framework. */ ++/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ ++ ++/* Define to 1 if you have the `chown' function. */ ++/* #undef HAVE_CHOWN */ ++ ++/* Define to 1 if you have the `closedir' function. */ ++/* #undef HAVE_CLOSEDIR */ ++ ++/* Define to 1 if you have the `confstr' function. */ ++/* #undef HAVE_CONFSTR */ ++ ++/* Define if the copysignf function is declared in and available in ++ libc. */ ++/* #undef HAVE_COPYSIGNF_IN_LIBC */ ++ ++/* Define if the copysignl function is declared in and available in ++ libc. */ ++/* #undef HAVE_COPYSIGNL_IN_LIBC */ ++ ++/* Define if the copysign function is declared in and available in ++ libc. */ ++/* #undef HAVE_COPYSIGN_IN_LIBC */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_CTYPE_H 1 ++ ++/* Define if the GNU dcgettext() function is already present or preinstalled. ++ */ ++/* #undef HAVE_DCGETTEXT */ ++ ++/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't. ++ */ ++#define HAVE_DECL_ALARM 0 ++ ++/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_CLEARERR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `copysign', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_COPYSIGN */ ++ ++/* Define to 1 if you have the declaration of `copysignf', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_COPYSIGNF */ ++ ++/* Define to 1 if you have the declaration of `copysignl', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_COPYSIGNL */ ++ ++/* Define to 1 if you have the declaration of `dirfd', and to 0 if you don't. ++ */ ++#define HAVE_DECL_DIRFD 0 ++ ++/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you ++ don't. */ ++#define HAVE_DECL_FEOF_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FERROR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FFLUSH_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FGETS_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FPUTC_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FPUTS_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FREAD_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `ftello', and to 0 if you don't. ++ */ ++#define HAVE_DECL_FTELLO 0 ++ ++/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_FWRITE_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_GETCHAR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you ++ don't. */ ++#define HAVE_DECL_GETC_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `getdelim', and to 0 if you ++ don't. */ ++#define HAVE_DECL_GETDELIM 0 ++ ++/* Define to 1 if you have the declaration of `getdtablesize', and to 0 if you ++ don't. */ ++#define HAVE_DECL_GETDTABLESIZE 0 ++ ++/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. ++ */ ++#define HAVE_DECL_GETENV 1 ++ ++/* Define to 1 if you have the declaration of `getline', and to 0 if you ++ don't. */ ++#define HAVE_DECL_GETLINE 0 ++ ++/* Define to 1 if you have the declaration of `isblank', and to 0 if you ++ don't. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_DECL_ISBLANK 1 ++#else ++# define HAVE_DECL_ISBLANK 0 ++#endif ++ ++/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. ++ */ ++#if (_MSC_VER >= 1800) ++# define HAVE_DECL_ISINF 1 ++#else ++# define HAVE_DECL_ISINF 0 ++#endif ++ ++/* Define to 1 if you have the declaration of `iswblank', and to 0 if you ++ don't. */ ++#define HAVE_DECL_ISWBLANK 0 ++ ++/* Define to 1 if you have the declaration of `mbrlen', and to 0 if you don't. ++ */ ++/* #undef HAVE_DECL_MBRLEN */ ++ ++/* Define to 1 if you have the declaration of `mbrtowc', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_MBRTOWC */ ++ ++/* Define to 1 if you have the declaration of `mbsinit', and to 0 if you ++ don't. */ ++#define HAVE_DECL_MBSINIT 1 ++ ++/* Define to 1 if you have the declaration of `mbsrtowcs', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_MBSRTOWCS */ ++ ++/* Define to 1 if you have a declaration of mbswidth() in , and to 0 ++ otherwise. */ ++#define HAVE_DECL_MBSWIDTH_IN_WCHAR_H 0 ++ ++/* Define to 1 if you have the declaration of `program_invocation_name', and ++ to 0 if you don't. */ ++#define HAVE_DECL_PROGRAM_INVOCATION_NAME 0 ++ ++/* Define to 1 if you have the declaration of `program_invocation_short_name', ++ and to 0 if you don't. */ ++#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 0 ++ ++/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if ++ you don't. */ ++#define HAVE_DECL_PUTCHAR_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you ++ don't. */ ++#define HAVE_DECL_PUTC_UNLOCKED 0 ++ ++/* Define to 1 if you have the declaration of `setenv', and to 0 if you don't. ++ */ ++#define HAVE_DECL_SETENV 0 ++ ++/* Define to 1 if you have the declaration of `sleep', and to 0 if you don't. ++ */ ++#define HAVE_DECL_SLEEP 0 ++ ++/* Define to 1 if you have the declaration of `snprintf', and to 0 if you ++ don't. */ ++#if (_MSC_VER >= 1900) ++#else ++# define HAVE_DECL_SNPRINTF 0 ++#endif ++ ++/* Define to 1 if you have the declaration of `stpncpy', and to 0 if you ++ don't. */ ++#define HAVE_DECL_STPNCPY 0 ++ ++/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you ++ don't. */ ++#define HAVE_DECL_STRERROR_R 0 ++ ++/* Define to 1 if you have the declaration of `strnlen', and to 0 if you ++ don't. */ ++#define HAVE_DECL_STRNLEN 1 ++ ++/* Define to 1 if you have the declaration of `towlower', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_TOWLOWER */ ++ ++/* Define to 1 if you have the declaration of `unsetenv', and to 0 if you ++ don't. */ ++#define HAVE_DECL_UNSETENV 0 ++ ++/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you ++ don't. */ ++#define HAVE_DECL_VSNPRINTF 1 ++ ++/* Define to 1 if you have the declaration of `wcrtomb', and to 0 if you ++ don't. */ ++/* #undef HAVE_DECL_WCRTOMB */ ++ ++/* Define to 1 if you have the declaration of `wctob', and to 0 if you don't. ++ */ ++/* #undef HAVE_DECL_WCTOB */ ++ ++/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you ++ don't. */ ++#define HAVE_DECL_WCWIDTH 0 ++ ++/* Define to 1 if you have the declaration of `_putenv', and to 0 if you ++ don't. */ ++#define HAVE_DECL__PUTENV 1 ++ ++/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you ++ don't. */ ++#define HAVE_DECL__SNPRINTF 1 ++ ++/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you ++ don't. */ ++#define HAVE_DECL__SNWPRINTF 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_DIRENT_H */ ++ ++/* Define to 1 if you have the `dirfd' function. */ ++/* #undef HAVE_DIRFD */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_DLFCN_H */ ++ ++/* Define to 1 if you have the `dlopen' function. */ ++/* #undef HAVE_DLOPEN */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_DL_H */ ++ ++/* Define to 1 if you have the 'dup2' function. */ ++#define HAVE_DUP2 1 ++ ++/* Define if you have the declaration of environ. */ ++#define HAVE_ENVIRON_DECL 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_ERRNO_H 1 ++ ++/* Define to 1 if you have the `facl' function. */ ++/* #undef HAVE_FACL */ ++ ++/* Define to 1 if you have the `fchmod' function. */ ++/* #undef HAVE_FCHMOD */ ++ ++/* Define to 1 if you have the `fcntl' function. */ ++/* #undef HAVE_FCNTL */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_FCNTL_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_FEATURES_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_FLOAT_H 1 ++ ++/* Define to 1 if you have the `flockfile' function. */ ++/* #undef HAVE_FLOCKFILE */ ++ ++/* Define to 1 if you have the `fork' function. */ ++/* #undef HAVE_FORK */ ++ ++/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ ++/* #undef HAVE_FSEEKO */ ++ ++/* Define to 1 if you have the `funlockfile' function. */ ++/* #undef HAVE_FUNLOCKFILE */ ++ ++/* Define to 1 if you have the `fwprintf' function. */ ++#if (_MSC_VER < 1900) ++# define HAVE_FWPRINTF 1 ++#endif ++ ++/* Define to 1 if you have the `getacl' function. */ ++/* #undef HAVE_GETACL */ ++ ++/* Define to 1 if you have the `getaddrinfo' function. */ ++/* #undef HAVE_GETADDRINFO */ ++ ++/* Define to 1 if you have the `getcwd' function. */ ++#define HAVE_GETCWD 1 ++ ++/* Define to 1 if you have the `getdelim' function. */ ++/* #undef HAVE_GETDELIM */ ++ ++/* Define to 1 if you have the `getdtablesize' function. */ ++/* #undef HAVE_GETDTABLESIZE */ ++ ++/* Define to 1 if you have the `getegid' function. */ ++/* #undef HAVE_GETEGID */ ++ ++/* Define to 1 if you have the `geteuid' function. */ ++/* #undef HAVE_GETEUID */ ++ ++/* Define to 1 if you have the `getgid' function. */ ++/* #undef HAVE_GETGID */ ++ ++/* Define to 1 if you have the `gethostbyname' function. */ ++/* #undef HAVE_GETHOSTBYNAME */ ++ ++/* Define to 1 if you have the `gethostname' function. */ ++/* #undef HAVE_GETHOSTNAME */ ++ ++/* Define to 1 if you have the `getlocalename_l' function. */ ++/* #undef HAVE_GETLOCALENAME_L */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_GETOPT_H */ ++ ++/* Define to 1 if you have the `getopt_long_only' function. */ ++/* #undef HAVE_GETOPT_LONG_ONLY */ ++ ++/* Define to 1 if you have the `getpagesize' function. */ ++/* #undef HAVE_GETPAGESIZE */ ++ ++/* Define to 1 if you have the `getrlimit' function. */ ++/* #undef HAVE_GETRLIMIT */ ++ ++/* Define if the GNU gettext() function is already present or preinstalled. */ ++/* #undef HAVE_GETTEXT */ ++ ++/* Define to 1 if you have the `gettimeofday' function. */ ++/* #undef HAVE_GETTIMEOFDAY */ ++ ++/* Define to 1 if you have the `getuid' function. */ ++/* #undef HAVE_GETUID */ ++ ++/* 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_ICONV_H 1 ++ ++/* Define to 1 if you have the `inet_ntop' function. */ ++/* #undef HAVE_INET_NTOP */ ++ ++/* Define to 1 if the compiler supports one of the keywords 'inline', ++ '__inline__', '__inline' and effectively inlines functions marked as such. ++ */ ++#define HAVE_INLINE 1 ++ ++/* Define if you have the 'intmax_t' type in or . */ ++#if (_MSC_VER >= 1600) ++# define HAVE_INTMAX_T 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_INTTYPES_H 1 ++ ++/* Define if exists, doesn't clash with , and ++ declares uintmax_t. */ ++# define HAVE_INTTYPES_H_WITH_UINTMAX 1 ++#endif ++ ++/* Define if defines AF_INET6. */ ++/* #undef HAVE_IPV6 */ ++ ++/* Define to 1 if you have the `isascii' function. */ ++/* #undef HAVE_ISASCII */ ++ ++/* Define to 1 if you have the `isblank' function. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_ISBLANK 1 ++ ++/* Define if the isnan(double) function is available in libc. */ ++# define HAVE_ISNAND_IN_LIBC 1 ++#endif ++ ++/* Define if the isnan(float) function is available in libc. */ ++/* #undef HAVE_ISNANF_IN_LIBC */ ++ ++/* Define if the isnan(long double) function is available in libc. */ ++/* #undef HAVE_ISNANL_IN_LIBC */ ++ ++/* Define to 1 if you have the `issetugid' function. */ ++/* #undef HAVE_ISSETUGID */ ++ ++/* Define to 1 if you have the `iswblank' function. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_ISWBLANK 1 ++#endif ++ ++/* Define to 1 if you have the `iswcntrl' function. */ ++#define HAVE_ISWCNTRL 1 ++ ++/* Define to 1 if you have the `iswctype' function. */ ++#define HAVE_ISWCTYPE 1 ++ ++/* Define if you have and nl_langinfo(CODESET). */ ++/* #undef HAVE_LANGINFO_CODESET */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LANGINFO_H */ ++ ++/* Define if your file defines LC_MESSAGES. */ ++/* #undef HAVE_LC_MESSAGES */ ++ ++/* Define to 1 if you have the ++ header file. */ ++/* #undef HAVE_LIBCROCO_0_6_LIBCROCO_LIBCROCO_CONFIG_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LIBINTL_H */ ++ ++/* Define if you have the libunistring library. */ ++/* #undef HAVE_LIBUNISTRING */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LIBXML2_LIBXML_XMLEXPORTS_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_LIBXML2_LIBXML_XMLVERSION_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_LIMITS_H 1 ++ ++/* Define to 1 if you have the `localtime' function. */ ++#define HAVE_LOCALTIME 1 ++ ++/* Define to 1 if you support file names longer than 14 characters. */ ++#define HAVE_LONG_FILE_NAMES 1 ++ ++/* Define to 1 if the system has the type 'long long int'. */ ++#define HAVE_LONG_LONG_INT 1 ++ ++/* Define to 1 if you have the `lstat' function. */ ++/* #undef HAVE_LSTAT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_MACH_O_DYLD_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MALLOC_H 1 ++ ++/* Define if the 'malloc' function is POSIX compliant. */ ++/* #undef HAVE_MALLOC_POSIX */ ++ ++/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including ++ config.h and . */ ++/* #undef HAVE_MAP_ANONYMOUS */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MATH_H 1 ++ ++/* Define to 1 if you have the `mbrlen' function. */ ++#define HAVE_MBRLEN 1 ++ ++/* Define to 1 if you have the `mbrtowc' function. */ ++#define HAVE_MBRTOWC 1 ++ ++/* Define to 1 if you have the `mbsinit' function. */ ++/* #undef HAVE_MBSINIT */ ++ ++/* Define to 1 if you have the `mbslen' function. */ ++/* #undef HAVE_MBSLEN */ ++ ++/* Define to 1 if you have the `mbsrtowcs' function. */ ++#define HAVE_MBSRTOWCS 1 ++ ++/* Define to 1 if declares mbstate_t. */ ++#define HAVE_MBSTATE_T 1 ++ ++/* Define to 1 if you have the `memmove' function. */ ++#define HAVE_MEMMOVE 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_MEMORY_H 1 ++ ++/* Define to 1 if you have the `mempcpy' function. */ ++/* #undef HAVE_MEMPCPY */ ++ ++/* Define to 1 if you have the `memset' function. */ ++#define HAVE_MEMSET 1 ++ ++/* Define to 1 if defines the MIN and MAX macros. */ ++/* #undef HAVE_MINMAX_IN_LIMITS_H */ ++ ++/* Define to 1 if defines the MIN and MAX macros. */ ++/* #undef HAVE_MINMAX_IN_SYS_PARAM_H */ ++ ++/* Define to 1 if you have the `mkdtemp' function. */ ++/* #undef HAVE_MKDTEMP */ ++ ++/* Define to 1 if you have a working `mmap' system call. */ ++/* #undef HAVE_MMAP */ ++ ++/* Define to 1 if you have the `mprotect' function. */ ++/* #undef HAVE_MPROTECT */ ++ ++/* Define to 1 on MSVC platforms that have the "invalid parameter handler" ++ concept. */ ++#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1 ++ ++/* Define to 1 if you have the `munmap' function. */ ++/* #undef HAVE_MUNMAP */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_NETDB_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_NETINET_IN_H */ ++ ++/* Define to 1 if you have the `newlocale' function. */ ++/* #undef HAVE_NEWLOCALE */ ++ ++/* Define to 1 if you have the `nl_langinfo' function. */ ++/* #undef HAVE_NL_LANGINFO */ ++ ++/* Define to 1 if the system has obstacks that work with any size object. */ ++/* #undef HAVE_OBSTACK */ ++ ++/* Define to 1 if you have the `opendir' function. */ ++/* #undef HAVE_OPENDIR */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_OS_H */ ++ ++/* Define to 1 if you have the `pathconf' function. */ ++/* #undef HAVE_PATHCONF */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_PATHS_H */ ++ ++/* Define to 1 if you have the `pipe' function. */ ++/* #undef HAVE_PIPE */ ++ ++/* Define to 1 if you have the `pipe2' function. */ ++/* #undef HAVE_PIPE2 */ ++ ++/* Define if your printf() function supports format strings with positions. */ ++/* #undef HAVE_POSIX_PRINTF */ ++ ++/* Define to 1 if you have the `posix_spawn' function. */ ++/* #undef HAVE_POSIX_SPAWN */ ++ ++/* Define to 1 if the system has the type `posix_spawnattr_t'. */ ++/* #undef HAVE_POSIX_SPAWNATTR_T */ ++ ++/* Define to 1 if the system has the type `posix_spawn_file_actions_t'. */ ++/* #undef HAVE_POSIX_SPAWN_FILE_ACTIONS_T */ ++ ++/* Define to 1 if you have the `pthread_atfork' function. */ ++/* #undef HAVE_PTHREAD_ATFORK */ ++ ++/* Define if the defines PTHREAD_MUTEX_RECURSIVE. */ ++/* #undef HAVE_PTHREAD_MUTEX_RECURSIVE */ ++ ++/* Define if the POSIX multithreading library has read/write locks. */ ++/* #undef HAVE_PTHREAD_RWLOCK */ ++ ++/* Define to 1 if the system has the type `ptrdiff_t'. */ ++#define HAVE_PTRDIFF_T 1 ++ ++/* Define to 1 if you have the `putenv' function. */ ++#define HAVE_PUTENV 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_PWD_H */ ++ ++/* Define to 1 if you have the `raise' function. */ ++#define HAVE_RAISE 1 ++ ++/* Define to 1 if you have the `rawmemchr' function. */ ++/* #undef HAVE_RAWMEMCHR */ ++ ++/* Define to 1 if acosf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ACOSF 1 ++#endif ++ ++/* Define to 1 if acosl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ACOSL 1 ++#endif ++ ++/* Define to 1 if alphasort is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_ALPHASORT */ ++ ++/* Define to 1 if asinf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ASINF 1 ++#endif ++ ++/* Define to 1 if asinl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ASINL 1 ++#endif ++ ++/* Define to 1 if atanf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ATANF 1 ++#endif ++ ++/* Define to 1 if atanl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ATANL 1 ++ ++/* Define to 1 if atoll is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_ATOLL 1 ++#endif ++ ++/* Define to 1 if btowc is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_BTOWC 1 ++ ++/* Define to 1 if canonicalize_file_name is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME */ ++ ++/* Define to 1 if cbrt is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_CBRT 1 ++ ++/* Define to 1 if cbrtf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_CBRTF 1 ++ ++/* Define to 1 if cbrtl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_CBRTL 1 ++#endif ++ ++/* Define to 1 if ceilf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_CEILF 1 ++#endif ++ ++/* Define to 1 if ceill is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_CEILL 1 ++#endif ++ ++/* Define to 1 if chdir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_CHDIR */ ++ ++/* Define to 1 if chown is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_CHOWN */ ++ ++/* Define to 1 if closedir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_CLOSEDIR */ ++ ++/* Define to 1 if copysign is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_COPYSIGN 1 ++ ++/* Define to 1 if copysignf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_COPYSIGNF 1 ++ ++/* Define to 1 if copysignl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_COPYSIGNL 1 ++#endif ++ ++/* Define to 1 if cosf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_COSF 1 ++ ++/* Define to 1 if coshf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_COSHF 1 ++#endif ++ ++/* Define to 1 if cosl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_COSL 1 ++#endif ++ ++/* Define to 1 if dirfd is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_DIRFD */ ++ ++/* Define to 1 if dprintf is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_DPRINTF */ ++ ++/* Define to 1 if dup is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_DUP 1 ++ ++/* Define to 1 if dup2 is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_DUP2 1 ++ ++/* Define to 1 if dup3 is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_DUP3 */ ++ ++/* Define to 1 if duplocale is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_DUPLOCALE */ ++ ++/* Define to 1 if endusershell is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_ENDUSERSHELL */ ++ ++/* Define to 1 if environ is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_ENVIRON */ ++ ++/* Define to 1 if euidaccess is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_EUIDACCESS */ ++ ++/* Define to 1 if exp2 is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_EXP2 1 ++ ++/* Define to 1 if exp2f is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_EXP2F 1 ++ ++/* Define to 1 if exp2l is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_EXP2L 1 ++#endif ++ ++/* Define to 1 if expf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_EXPF 1 ++#endif ++ ++/* Define to 1 if expl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_EXPL 1 ++ ++/* Define to 1 if expm1 is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_EXPM1 1 ++ ++/* Define to 1 if expm1f is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_EXPM1F 1 ++ ++/* Define to 1 if expm1l is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_EXPM1L 1 ++ ++/* Define to 1 if fabsf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_FABSF 1 ++ ++/* Define to 1 if fabsl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_FABSL 1 ++#endif ++ ++/* Define to 1 if faccessat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FACCESSAT */ ++ ++/* Define to 1 if fchdir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FCHDIR */ ++ ++/* Define to 1 if fchmodat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FCHMODAT */ ++ ++/* Define to 1 if fchownat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FCHOWNAT */ ++ ++/* Define to 1 if fcntl is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FCNTL */ ++ ++/* Define to 1 if fdatasync is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FDATASYNC */ ++ ++/* Define to 1 if fdopendir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FDOPENDIR */ ++ ++/* Define to 1 if ffsl is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FFSL */ ++ ++/* Define to 1 if ffsll is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FFSLL */ ++ ++/* Define to 1 if floorf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_FLOORF 1 ++#endif ++ ++/* Define to 1 if floorl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_FLOORL 1 ++ ++/* Define to 1 if fma is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_FMA 1 ++ ++/* Define to 1 if fmaf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_FMAF 1 ++ ++/* Define to 1 if fmal is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_FMAL 1 ++#endif ++ ++/* Define to 1 if fmod is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_FMOD 1 ++ ++/* Define to 1 if fmodf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_FMODF 1 ++#endif ++ ++/* Define to 1 if fmodl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_FMODL 1 ++ ++/* Define to 1 if fpurge is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FPURGE */ ++ ++/* Define to 1 if frexpf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_FREXPF 1 ++ ++/* Define to 1 if frexpl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_FREXPL 1 ++#endif ++ ++/* Define to 1 if fseeko is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FSEEKO */ ++ ++/* Define to 1 if fstat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_FSTAT 1 ++ ++/* Define to 1 if fstatat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FSTATAT */ ++ ++/* Define to 1 if fsync is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FSYNC */ ++ ++/* Define to 1 if ftello is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FTELLO */ ++ ++/* Define to 1 if ftruncate is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FTRUNCATE */ ++ ++/* Define to 1 if futimens is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_FUTIMENS */ ++ ++/* Define to 1 if getcwd is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETCWD */ ++ ++/* Define to 1 if getdelim is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETDELIM */ ++ ++/* Define to 1 if getdomainname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETDOMAINNAME */ ++ ++/* Define to 1 if getdtablesize is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETDTABLESIZE */ ++ ++/* Define to 1 if getgroups is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETGROUPS */ ++ ++/* Define to 1 if gethostname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETHOSTNAME */ ++ ++/* Define to 1 if getline is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLINE */ ++ ++/* Define to 1 if getloadavg is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLOADAVG */ ++ ++/* Define to 1 if getlogin is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLOGIN */ ++ ++/* Define to 1 if getlogin_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETLOGIN_R */ ++ ++/* Define to 1 if getpagesize is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETPAGESIZE */ ++ ++/* Define to 1 if gets is declared even after undefining macros. */ ++#if (_MSC_VER < 1900) ++# define HAVE_RAW_DECL_GETS 1 ++#endif ++ ++/* Define to 1 if getsubopt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETSUBOPT */ ++ ++/* Define to 1 if gettimeofday is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETTIMEOFDAY */ ++ ++/* Define to 1 if getusershell is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GETUSERSHELL */ ++ ++/* Define to 1 if grantpt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GRANTPT */ ++ ++/* Define to 1 if group_member is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_GROUP_MEMBER */ ++ ++/* Define to 1 if hypotf is declared even after undefining macros. */ ++#if (defined (_WIN64) && (_MSC_VER >= 1600)) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_HYPOTF 1 ++#endif ++ ++/* Define to 1 if hypotl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_HYPOTL 1 ++ ++/* Define to 1 if ilogb is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_ILOGB 1 ++ ++/* Define to 1 if ilogbf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_ILOGBF 1 ++ ++/* Define to 1 if ilogbl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_ILOGBL 1 ++ ++/* Define to 1 if imaxabs is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_IMAXABS 1` ++ ++/* Define to 1 if imaxdiv is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_IMAXDIV 1 ++#endif ++ ++/* Define to 1 if initstate is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_INITSTATE */ ++ ++/* Define to 1 if initstate_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_INITSTATE_R */ ++ ++/* Define to 1 if isatty is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_ISATTY 1 ++ ++/* Define to 1 if isblank is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_ISBLANK */ ++ ++/* Define to 1 if iswctype is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_ISWCTYPE 1 ++ ++/* Define to 1 if lchmod is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LCHMOD */ ++ ++/* Define to 1 if lchown is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LCHOWN */ ++ ++/* Define to 1 if ldexpf is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_LDEXPF 1 ++ ++/* Define to 1 if ldexpl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LDEXPL 1 ++#endif ++ ++/* Define to 1 if link is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LINK */ ++ ++/* Define to 1 if linkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LINKAT */ ++ ++/* Define to 1 if log is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_LOG 1 ++ ++/* Define to 1 if log10 is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_LOG10 1 ++ ++/* Define to 1 if log10f is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_LOG10F 1 ++#endif ++ ++#if (_MSC_VER >= 1800) ++/* Define to 1 if log10l is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOG10L 1 ++ ++/* Define to 1 if log1p is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOG1P 1 ++ ++/* Define to 1 if log1pf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOG1PF 1 ++ ++/* Define to 1 if log1pl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOG1PL 1 ++ ++/* Define to 1 if log2 is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOG2 1 ++ ++/* Define to 1 if log2f is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOG2F 1 ++ ++/* Define to 1 if log2l is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOG2L 1 ++ ++/* Define to 1 if logb is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOGB 1 ++ ++/* Define to 1 if logbf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOGBF 1 ++ ++/* Define to 1 if logbl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_LOGBL 1 ++#endif ++ ++/* Define to 1 if logf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_LOGF 1 ++#endif ++ ++/* Define to 1 if logl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_LOGL 1 ++#endif ++ ++/* Define to 1 if lseek is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_LSEEK 1 ++ ++/* Define to 1 if lstat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_LSTAT */ ++ ++/* Define to 1 if mbrlen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBRLEN 1 ++ ++/* Define to 1 if mbrtowc is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBRTOWC 1 ++ ++/* Define to 1 if mbsinit is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBSINIT 1 ++ ++/* Define to 1 if mbsnrtowcs is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MBSNRTOWCS */ ++ ++/* Define to 1 if mbsrtowcs is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MBSRTOWCS 1 ++ ++/* Define to 1 if memmem is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MEMMEM */ ++ ++/* Define to 1 if mempcpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MEMPCPY */ ++ ++/* Define to 1 if memrchr is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MEMRCHR */ ++ ++/* Define to 1 if mkdirat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKDIRAT */ ++ ++/* Define to 1 if mkdtemp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKDTEMP */ ++ ++/* Define to 1 if mkfifo is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKFIFO */ ++ ++/* Define to 1 if mkfifoat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKFIFOAT */ ++ ++/* Define to 1 if mknod is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKNOD */ ++ ++/* Define to 1 if mknodat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKNODAT */ ++ ++/* Define to 1 if mkostemp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKOSTEMP */ ++ ++/* Define to 1 if mkostemps is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKOSTEMPS */ ++ ++/* Define to 1 if mkstemp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKSTEMP */ ++ ++/* Define to 1 if mkstemps is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_MKSTEMPS */ ++ ++/* Define to 1 if modf is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_MODF 1 ++ ++/* Define to 1 if modff is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_MODFF 1 ++#endif ++ ++/* Define to 1 if modfl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_MODFL 1 ++#endif ++ ++/* Define to 1 if nl_langinfo is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_NL_LANGINFO */ ++ ++/* Define to 1 if openat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_OPENAT */ ++ ++/* Define to 1 if opendir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_OPENDIR */ ++ ++/* Define to 1 if pclose is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PCLOSE */ ++ ++/* Define to 1 if pipe is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PIPE */ ++ ++/* Define to 1 if pipe2 is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PIPE2 */ ++ ++/* Define to 1 if popen is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_POPEN */ ++ ++/* Define to 1 if posix_openpt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_OPENPT */ ++ ++/* Define to 1 if posix_spawn is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWN */ ++ ++/* Define to 1 if posix_spawnattr_destroy is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_DESTROY */ ++ ++/* Define to 1 if posix_spawnattr_getflags is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_GETFLAGS */ ++ ++/* Define to 1 if posix_spawnattr_getpgroup is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_GETPGROUP */ ++ ++/* Define to 1 if posix_spawnattr_getschedparam is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPARAM */ ++ ++/* Define to 1 if posix_spawnattr_getschedpolicy is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPOLICY */ ++ ++/* Define to 1 if posix_spawnattr_getsigdefault is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGDEFAULT */ ++ ++/* Define to 1 if posix_spawnattr_getsigmask is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGMASK */ ++ ++/* Define to 1 if posix_spawnattr_init is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_INIT */ ++ ++/* Define to 1 if posix_spawnattr_setflags is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_SETFLAGS */ ++ ++/* Define to 1 if posix_spawnattr_setpgroup is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_SETPGROUP */ ++ ++/* Define to 1 if posix_spawnattr_setschedparam is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPARAM */ ++ ++/* Define to 1 if posix_spawnattr_setschedpolicy is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPOLICY */ ++ ++/* Define to 1 if posix_spawnattr_setsigdefault is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGDEFAULT */ ++ ++/* Define to 1 if posix_spawnattr_setsigmask is declared even after undefining ++ macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGMASK */ ++ ++/* Define to 1 if posix_spawnp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWNP */ ++ ++/* Define to 1 if posix_spawn_file_actions_addclose is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE */ ++ ++/* Define to 1 if posix_spawn_file_actions_adddup2 is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 */ ++ ++/* Define to 1 if posix_spawn_file_actions_addopen is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN */ ++ ++/* Define to 1 if posix_spawn_file_actions_destroy is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_DESTROY */ ++ ++/* Define to 1 if posix_spawn_file_actions_init is declared even after ++ undefining macros. */ ++/* #undef HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_INIT */ ++ ++/* Define to 1 if powf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_POWF 1 ++#endif ++ ++/* Define to 1 if pread is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PREAD */ ++ ++/* Define to 1 if pselect is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PSELECT */ ++ ++/* Define to 1 if pthread_sigmask is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PTHREAD_SIGMASK */ ++ ++/* Define to 1 if ptsname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PTSNAME */ ++ ++/* Define to 1 if ptsname_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PTSNAME_R */ ++ ++/* Define to 1 if pwrite is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_PWRITE */ ++ ++/* Define to 1 if random is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RANDOM */ ++ ++/* Define to 1 if random_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RANDOM_R */ ++ ++/* Define to 1 if rawmemchr is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RAWMEMCHR */ ++ ++/* Define to 1 if readdir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_READDIR */ ++ ++/* Define to 1 if readlink is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_READLINK */ ++ ++/* Define to 1 if readlinkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_READLINKAT */ ++ ++/* Define to 1 if realpath is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_REALPATH */ ++ ++/* Define to 1 if remainder is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_REMAINDER 1 ++ ++/* Define to 1 if remainderf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_REMAINDERF 1 ++ ++/* Define to 1 if remainderl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_REMAINDERL 1 ++#endif ++ ++/* Define to 1 if renameat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RENAMEAT */ ++ ++/* Define to 1 if rewinddir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_REWINDDIR */ ++ ++/* Define to 1 if rint is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_RINT 1 ++ ++/* Define to 1 if rintf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_RINTF 1 ++ ++/* Define to 1 if rintl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_RINTL 1 ++#endif ++ ++/* Define to 1 if rmdir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RMDIR */ ++ ++/* Define to 1 if round is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_ROUND 1 ++ ++/* Define to 1 if roundf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_ROUNDF 1 ++ ++/* Define to 1 if roundl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_ROUNDL 1 ++#endif ++ ++/* Define to 1 if rpmatch is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_RPMATCH */ ++ ++/* Define to 1 if scandir is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SCANDIR */ ++ ++/* Define to 1 if secure_getenv is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SECURE_GETENV */ ++ ++/* Define to 1 if select is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SELECT */ ++ ++/* Define to 1 if setenv is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETENV */ ++ ++/* Define to 1 if sethostname is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETHOSTNAME */ ++ ++/* Define to 1 if setlocale is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_SETLOCALE 1 ++ ++/* Define to 1 if setstate is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETSTATE */ ++ ++/* Define to 1 if setstate_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETSTATE_R */ ++ ++/* Define to 1 if setusershell is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SETUSERSHELL */ ++ ++/* Define to 1 if sigaction is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGACTION */ ++ ++/* Define to 1 if sigaddset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGADDSET */ ++ ++/* Define to 1 if sigdelset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGDELSET */ ++ ++/* Define to 1 if sigemptyset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGEMPTYSET */ ++ ++/* Define to 1 if sigfillset is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGFILLSET */ ++ ++/* Define to 1 if sigismember is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGISMEMBER */ ++ ++/* Define to 1 if sigpending is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGPENDING */ ++ ++/* Define to 1 if sigprocmask is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SIGPROCMASK */ ++ ++/* Define to 1 if sinf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_SINF 1 ++ ++/* Define to 1 if sinhf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_SINHF 1 ++#endif ++ ++/* Define to 1 if sinl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_SINL 1 ++#endif ++ ++/* Define to 1 if sleep is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SLEEP */ ++ ++/* Define to 1 if snprintf is declared even after undefining macros. */ ++#if (_MSC_VER >= 1900) ++# define HAVE_RAW_DECL_SNPRINTF 1 ++#endif ++ ++/* Define to 1 if sqrtf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_SQRTF 1 ++#endif ++ ++/* Define to 1 if sqrtl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_SQRTL 1 ++#endif ++ ++/* Define to 1 if srandom is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SRANDOM */ ++ ++/* Define to 1 if srandom_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SRANDOM_R */ ++ ++/* Define to 1 if stat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STAT 1 ++ ++/* Define to 1 if stpcpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STPCPY */ ++ ++/* Define to 1 if stpncpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STPNCPY */ ++ ++/* Define to 1 if strcasestr is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRCASESTR */ ++ ++/* Define to 1 if strchrnul is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRCHRNUL */ ++ ++/* Define to 1 if strdup is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRDUP 1 ++ ++/* Define to 1 if strerror_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRERROR_R */ ++ ++/* Define to 1 if strncat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRNCAT 1 ++ ++/* Define to 1 if strndup is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRNDUP */ ++ ++/* Define to 1 if strnlen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRNLEN 1 ++ ++/* Define to 1 if strpbrk is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRPBRK 1 ++ ++/* Define to 1 if strsep is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRSEP */ ++ ++/* Define to 1 if strsignal is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRSIGNAL */ ++ ++/* Define to 1 if strtod is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_STRTOD 1 ++ ++/* Define to 1 if strtoimax is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_STRTOIMAX 1 ++#endif ++ ++/* Define to 1 if strtok_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRTOK_R */ ++ ++/* Define to 1 if strtoll is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_STRTOLL 1 ++ ++/* Define to 1 if strtoull is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_STRTOULL 1 ++ ++/* Define to 1 if strtoumax is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_STRTOUMAX 1 ++#endif ++ ++/* Define to 1 if strverscmp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_STRVERSCMP */ ++ ++/* Define to 1 if symlink is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SYMLINK */ ++ ++/* Define to 1 if symlinkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_SYMLINKAT */ ++ ++/* Define to 1 if tanf is declared even after undefining macros. */ ++#if defined (_WIN64) || (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_TANF 1 ++ ++/* Define to 1 if tanhf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_TANHF 1 ++#endif ++ ++/* Define to 1 if tanl is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_TANL 1 ++#endif ++ ++/* Define to 1 if tmpfile is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_TMPFILE 1 ++ ++/* Define to 1 if towctrans is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_TOWCTRANS 1 ++ ++/* Define to 1 if trunc is declared even after undefining macros. */ ++#if (_MSC_VER >= 1800) ++# define HAVE_RAW_DECL_TRUNC 1 ++ ++/* Define to 1 if truncf is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_TRUNCF 1 ++ ++/* Define to 1 if truncl is declared even after undefining macros. */ ++# define HAVE_RAW_DECL_TRUNCL 1 ++#endif ++ ++/* Define to 1 if ttyname_r is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_TTYNAME_R */ ++ ++/* Define to 1 if unlink is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_UNLINK 1 ++ ++/* Define to 1 if unlinkat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UNLINKAT */ ++ ++/* Define to 1 if unlockpt is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UNLOCKPT */ ++ ++/* Define to 1 if unsetenv is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UNSETENV */ ++ ++/* Define to 1 if usleep is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_USLEEP */ ++ ++/* Define to 1 if utimensat is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_UTIMENSAT */ ++ ++/* Define to 1 if vdprintf is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_VDPRINTF */ ++ ++/* Define to 1 if vsnprintf is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_VSNPRINTF 1 ++ ++/* Define to 1 if waitpid is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WAITPID */ ++ ++/* Define to 1 if wcpcpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCPCPY */ ++ ++/* Define to 1 if wcpncpy is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCPNCPY */ ++ ++/* Define to 1 if wcrtomb is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCRTOMB 1 ++ ++/* Define to 1 if wcscasecmp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSCASECMP */ ++ ++/* Define to 1 if wcscat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCAT 1 ++ ++/* Define to 1 if wcschr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCHR 1 ++ ++/* Define to 1 if wcscmp is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCMP 1 ++ ++/* Define to 1 if wcscoll is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCOLL 1 ++ ++/* Define to 1 if wcscpy is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCPY 1 ++ ++/* Define to 1 if wcscspn is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSCSPN 1 ++ ++/* Define to 1 if wcsdup is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSDUP 1 ++ ++/* Define to 1 if wcslen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSLEN 1 ++ ++/* Define to 1 if wcsncasecmp is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSNCASECMP */ ++ ++/* Define to 1 if wcsncat is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNCAT 1 ++ ++/* Define to 1 if wcsncmp is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNCMP 1 ++ ++/* Define to 1 if wcsncpy is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNCPY 1 ++ ++/* Define to 1 if wcsnlen is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSNLEN 1 ++ ++/* Define to 1 if wcsnrtombs is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSNRTOMBS */ ++ ++/* Define to 1 if wcspbrk is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSPBRK 1 ++ ++/* Define to 1 if wcsrchr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSRCHR 1 ++ ++/* Define to 1 if wcsrtombs is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSRTOMBS 1 ++ ++/* Define to 1 if wcsspn is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSSPN 1 ++ ++/* Define to 1 if wcsstr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSSTR 1 ++ ++/* Define to 1 if wcstok is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSTOK 1 ++ ++/* Define to 1 if wcswidth is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCSWIDTH */ ++ ++/* Define to 1 if wcsxfrm is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCSXFRM 1 ++ ++/* Define to 1 if wctob is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCTOB 1 ++ ++/* Define to 1 if wctrans is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCTRANS 1 ++ ++/* Define to 1 if wctype is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WCTYPE 1 ++ ++/* Define to 1 if wcwidth is declared even after undefining macros. */ ++/* #undef HAVE_RAW_DECL_WCWIDTH */ ++ ++/* Define to 1 if wmemchr is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMCHR 1 ++ ++/* Define to 1 if wmemcmp is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMCMP 1 ++ ++/* Define to 1 if wmemcpy is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMCPY 1 ++ ++/* Define to 1 if wmemmove is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMMOVE 1 ++ ++/* Define to 1 if wmemset is declared even after undefining macros. */ ++#define HAVE_RAW_DECL_WMEMSET 1 ++ ++/* Define to 1 if _Exit is declared even after undefining macros. */ ++#if (_MSC_VER >= 1900) ++# define HAVE_RAW_DECL__EXIT 1 ++#endif ++ ++/* Define to 1 if you have the `readdir' function. */ ++/* #undef HAVE_READDIR */ ++ ++/* Define to 1 if you have the `readlink' function. */ ++/* #undef HAVE_READLINK */ ++ ++/* Define to 1 if you have the `readlinkat' function. */ ++/* #undef HAVE_READLINKAT */ ++ ++/* Define if the 'realloc' function is POSIX compliant. */ ++/* #undef HAVE_REALLOC_POSIX */ ++ ++/* Define to 1 if you have the `realpath' function. */ ++/* #undef HAVE_REALPATH */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_RESOLV_H */ ++ ++/* Define to 1 if 'long double' and 'double' have the same representation. */ ++#define HAVE_SAME_LONG_DOUBLE_AS_DOUBLE 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SCHED_H */ ++ ++/* Define to 1 if you have the `sched_setparam' function. */ ++/* #undef HAVE_SCHED_SETPARAM */ ++ ++/* Define to 1 if you have the `sched_setscheduler' function. */ ++/* #undef HAVE_SCHED_SETSCHEDULER */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SEARCH_H 1 ++ ++/* Define to 1 if you have the `secure_getenv' function. */ ++/* #undef HAVE_SECURE_GETENV */ ++ ++/* Define to 1 if you have the `select' function. */ ++/* #undef HAVE_SELECT */ ++ ++/* Define to 1 if you have the `setdtablesize' function. */ ++/* #undef HAVE_SETDTABLESIZE */ ++ ++/* Define to 1 if you have the `setegid' function. */ ++/* #undef HAVE_SETEGID */ ++ ++/* Define to 1 if you have the `setenv' function. */ ++/* #undef HAVE_SETENV */ ++ ++/* Define to 1 if you have the `seteuid' function. */ ++/* #undef HAVE_SETEUID */ ++ ++/* Define to 1 if you have the `setlocale' function. */ ++#define HAVE_SETLOCALE 1 ++ ++/* Define to 1 if you have the `setrlimit' function. */ ++/* #undef HAVE_SETRLIMIT */ ++ ++/* Define to 1 if you have the `shlload' function. */ ++/* #undef HAVE_SHLLOAD */ ++ ++/* Define to 1 if you have the `sigaction' function. */ ++/* #undef HAVE_SIGACTION */ ++ ++/* Define to 1 if you have the `sigaltstack' function. */ ++/* #undef HAVE_SIGALTSTACK */ ++ ++/* Define to 1 if defines the siginfo_t type, and struct sigaction ++ has the sa_sigaction member and the SA_SIGINFO flag. */ ++/* #undef HAVE_SIGINFO */ ++ ++/* Define to 1 if the system has the type `siginfo_t'. */ ++/* #undef HAVE_SIGINFO_T */ ++ ++/* Define to 1 if you have the `siginterrupt' function. */ ++/* #undef HAVE_SIGINTERRUPT */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SIGNAL_H 1 ++ ++/* Define to 1 if 'sig_atomic_t' is a signed integer type. */ ++#define HAVE_SIGNED_SIG_ATOMIC_T 1 ++ ++/* Define to 1 if 'wchar_t' is a signed integer type. */ ++/* #undef HAVE_SIGNED_WCHAR_T */ ++ ++/* Define to 1 if 'wint_t' is a signed integer type. */ ++/* #undef HAVE_SIGNED_WINT_T */ ++ ++/* Define to 1 if the system has the type `sigset_t'. */ ++/* #undef HAVE_SIGSET_T */ ++ ++/* Define to 1 if the system has the type `sig_atomic_t'. */ ++#define HAVE_SIG_ATOMIC_T 1 ++ ++/* Define to 1 if you have the `sleep' function. */ ++/* #undef HAVE_SLEEP */ ++ ++/* Define to 1 if you have the `snprintf' function. */ ++/* #undef HAVE_SNPRINTF */ ++ ++/* Define if the return value of the snprintf function is the number of of ++ bytes (excluding the terminating NUL) that would have been produced if the ++ buffer had been large enough. */ ++#if (_MSC_VER >= 1900) ++# define HAVE_SNPRINTF_RETVAL_C99 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SPAWN_H */ ++ ++/* Define to 1 if you have the `stat' function. */ ++#define HAVE_STAT 1 ++ ++/* Define to 1 if you have the `statacl' function. */ ++/* #undef HAVE_STATACL */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDDEF_H 1 ++ ++/* Define to 1 if you have the header file. */ ++#if (_MSC_VER >= 1600) ++# define HAVE_STDINT_H 1 ++ ++/* Define if exists, doesn't clash with , and declares ++ uintmax_t. */ ++# define HAVE_STDINT_H_WITH_UINTMAX 1 ++#endif ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STDLIB_H 1 ++ ++/* Define to 1 if you have the `stpcpy' function. */ ++/* #undef HAVE_STPCPY */ ++ ++/* Define if you have the stpncpy() function and it works. */ ++/* #undef HAVE_STPNCPY */ ++ ++/* Define to 1 if you have the `strcasecmp' function. */ ++/* #undef HAVE_STRCASECMP */ ++ ++/* Define to 1 if you have the `strchrnul' function. */ ++/* #undef HAVE_STRCHRNUL */ ++ ++/* Define to 1 if you have the `strcspn' function. */ ++#define HAVE_STRCSPN 1 ++ ++/* Define to 1 if you have the `strdup' function. */ ++#define HAVE_STRDUP 1 ++ ++/* Define to 1 if you have the `strerror_r' function. */ ++/* #undef HAVE_STRERROR_R */ ++ ++/* Define to 1 if you have the `strftime' function. */ ++#define HAVE_STRFTIME 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_STRINGS_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_STRING_H 1 ++ ++/* Define to 1 if you have the `strnlen' function. */ ++#define HAVE_STRNLEN 1 ++ ++/* Define to 1 if you have the `strpbrk' function. */ ++#define HAVE_STRPBRK 1 ++ ++/* Define to 1 if you have the `strtol' function. */ ++#define HAVE_STRTOL 1 ++ ++/* Define to 1 if you have the `strtoul' function. */ ++#define HAVE_STRTOUL 1 ++ ++/* Define to 1 if `decimal_point' is a member of `struct lconv'. */ ++#define HAVE_STRUCT_LCONV_DECIMAL_POINT 1 ++ ++/* Define to 1 if `sa_sigaction' is a member of `struct sigaction'. */ ++/* #undef HAVE_STRUCT_SIGACTION_SA_SIGACTION */ ++ ++/* Define to 1 if `__names' is a member of `struct __locale_struct'. */ ++/* #undef HAVE_STRUCT___LOCALE_STRUCT___NAMES */ ++ ++/* Define to 1 if you have the `symlink' function. */ ++/* #undef HAVE_SYMLINK */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_ACL_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_BITYPES_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_INTTYPES_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_MMAN_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_PARAM_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_SELECT_H */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_SOCKET_H */ ++ ++/* 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_TIMEB_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_TIME_H */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_SYS_TYPES_H 1 ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_SYS_WAIT_H */ ++ ++/* Define if tgetent(), tgetnum(), tgetstr(), tgetflag() are among the termcap ++ library functions. */ ++/* #undef HAVE_TERMCAP */ ++ ++/* Define if setupterm(), tigetnum(), tigetstr(), tigetflag() are among the ++ termcap library functions. */ ++/* #undef HAVE_TERMINFO */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_TIME_H 1 ++ ++/* Define to 1 if you have the `towlower' function. */ ++#define HAVE_TOWLOWER 1 ++ ++/* Define if tparam() is among the termcap library functions. */ ++/* #undef HAVE_TPARAM */ ++ ++/* Define to 1 if you have the `tsearch' function. */ ++/* #undef HAVE_TSEARCH */ ++ ++/* Define if you have the 'uintmax_t' type in or . */ ++#if (_MSC_VER >= 1600) ++# define HAVE_UINTMAX_T 1 ++#endif ++ ++/* Define if defines the 'union wait' type. */ ++/* #undef HAVE_UNION_WAIT */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_UNISTD_H */ ++ ++/* Define to 1 if you have the `unsetenv' function. */ ++/* #undef HAVE_UNSETENV */ ++ ++/* Define to 1 if the system has the type 'unsigned long long int'. */ ++#define HAVE_UNSIGNED_LONG_LONG_INT 1 ++ ++/* Define to 1 if you have the `uselocale' function. */ ++/* #undef HAVE_USELOCALE */ ++ ++/* Define to 1 if you have the `utime' function. */ ++#define HAVE_UTIME 1 ++ ++/* Define to 1 if you have the `utimes' function. */ ++/* #undef HAVE_UTIMES */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_UTIME_H */ ++ ++/* Define to 1 if you have the `vasnprintf' function. */ ++/* #undef HAVE_VASNPRINTF */ ++ ++/* Define to 1 if you have the `vasprintf' function. */ ++/* #undef HAVE_VASPRINTF */ ++ ++/* Define to 1 if you have the `vfork' function. */ ++/* #undef HAVE_VFORK */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_VFORK_H */ ++ ++/* Define to 1 or 0, depending whether the compiler supports simple visibility ++ declarations. */ ++#define HAVE_VISIBILITY 0 ++ ++/* Define to 1 if you have the `vsnprintf' function. */ ++#define HAVE_VSNPRINTF 1 ++ ++/* Define to 1 if you have the `waitid' function. */ ++/* #undef HAVE_WAITID */ ++ ++/* Define to 1 if you have the `waitpid' function. */ ++/* #undef HAVE_WAITPID */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_WCHAR_H 1 ++ ++/* Define if you have the 'wchar_t' type. */ ++#define HAVE_WCHAR_T 1 ++ ++/* Define to 1 if you have the `wcrtomb' function. */ ++#define HAVE_WCRTOMB 1 ++ ++/* Define to 1 if you have the `wcslen' function. */ ++#define HAVE_WCSLEN 1 ++ ++/* Define to 1 if you have the `wcsnlen' function. */ ++#define HAVE_WCSNLEN 1 ++ ++/* Define to 1 if you have the `wctob' function. */ ++#define HAVE_WCTOB 1 ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_WCTYPE_H 1 ++ ++/* Define to 1 if you have the `wcwidth' function. */ ++/* #undef HAVE_WCWIDTH */ ++ ++/* Define to 1 if you have the header file. */ ++#define HAVE_WINSOCK2_H 1 ++ ++/* Define if you have the 'wint_t' type. */ ++#define HAVE_WINT_T 1 ++ ++/* Define to 1 if you have the `wmemchr' function. */ ++/* #undef HAVE_WMEMCHR */ ++ ++/* Define to 1 if you have the `wmemcpy' function. */ ++#if defined (_WIN64) ++# if (_MSC_VER >= 1700) && (_MSC_VER < 1800) ++# define HAVE_WMEMCPY 1 ++# endif ++#else ++# if (_MSC_VER >= 1600) && (_MSC_VER < 1700) ++# define HAVE_WMEMCPY 1 ++# endif ++#endif ++ ++/* Define to 1 if you have the `wmempcpy' function. */ ++/* #undef HAVE_WMEMPCPY */ ++ ++/* Define to 1 if `fork' works. */ ++/* #undef HAVE_WORKING_FORK */ ++ ++/* Define to 1 if O_NOATIME works. */ ++#define HAVE_WORKING_O_NOATIME 0 ++ ++/* Define to 1 if O_NOFOLLOW works. */ ++#define HAVE_WORKING_O_NOFOLLOW 0 ++ ++/* Define if you have the posix_spawn and posix_spawnp functions and they ++ work. */ ++/* #undef HAVE_WORKING_POSIX_SPAWN */ ++ ++/* Define to 1 if `vfork' works. */ ++/* #undef HAVE_WORKING_VFORK */ ++ ++/* Define to 1 if you have the header file. */ ++/* #undef HAVE_XLOCALE_H */ ++ ++/* Define to 1 if the system has the type `_Bool'. */ ++#if (_MSC_VER >= 1800) ++# define HAVE__BOOL 1 ++#endif ++ ++/* Define to 1 if you have the `_ftelli64' function. */ ++#define HAVE__FTELLI64 1 ++ ++/* Define to 1 if you have the `_ftime' function. */ ++#define HAVE__FTIME 1 ++ ++/* Define to 1 if you have the `_NSGetExecutablePath' function. */ ++/* #undef HAVE__NSGETEXECUTABLEPATH */ ++ ++/* Define to 1 if you have the `_set_invalid_parameter_handler' function. */ ++#define HAVE__SET_INVALID_PARAMETER_HANDLER 1 ++ ++/* Define to 1 if you have the `_stat' function. */ ++#define HAVE__STAT 1 ++ ++/* Define to 1 if you have the `__fsetlocking' function. */ ++/* #undef HAVE___FSETLOCKING */ ++ ++/* Define to 1 if you have the `__secure_getenv' function. */ ++/* #undef HAVE___SECURE_GETENV */ ++ ++/* Define as const if the declaration of iconv() needs const. */ ++#define ICONV_CONST ++ ++/* Define to a symbolic name denoting the flavor of iconv_open() ++ implementation. */ ++/* #undef ICONV_FLAVOR */ ++ ++/* Define to the value of ${prefix}, as a string. */ ++#if _MSC_VER < 1600 ++#define INSTALLPREFIX "c:/vs9.0/" PLAT ++#elif _MSC_VER < 1700 ++#define INSTALLPREFIX "c:/vs10.0/" PLAT ++#elif _MSC_VER < 1800 ++#define INSTALLPREFIX "c:/vs11.0/" PLAT ++#elif _MSC_VER < 1900 ++#define INSTALLPREFIX "c:/vs12.0/" PLAT ++#elif _MSC_VER < 1910 ++#define INSTALLPREFIX "c:/vs14.0/" PLAT ++#elif _MSC_VER < 2000 ++#define INSTALLPREFIX "c:/vs15.0/" PLAT ++#endif ++ ++/* Define if integer division by zero raises signal SIGFPE. */ ++#define INTDIV0_RAISES_SIGFPE 0 ++ ++/* Define to 1 if the C compiler is actually a C++ compiler. */ ++/* #undef IS_CPLUSPLUS */ ++ ++/* Define as the bit index in the word where to find bit 0 of the exponent of ++ 'long double'. */ ++#define LDBL_EXPBIT0_BIT 20 ++ ++/* Define as the word index where to find the exponent of 'long double'. */ ++#define LDBL_EXPBIT0_WORD 1 ++ ++/* Define as the bit index in the word where to find the sign of 'long ++ double'. */ ++#if (_MSC_VER < 1800) ++# define LDBL_SIGNBIT_BIT 31 ++ ++/* Define as the word index where to find the sign of 'long double'. */ ++# define LDBL_SIGNBIT_WORD 1 ++#endif ++ ++/* Define to 1 if lseek does not detect pipes. */ ++#define LSEEK_PIPE_BROKEN 1 ++ ++/* Define to 1 if 'lstat' dereferences a symlink specified with a trailing ++ slash. */ ++/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ ++ ++/* Define to the sub-directory where libtool stores uninstalled libraries. */ ++#define LT_OBJDIR ".libs/" ++ ++/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */ ++#define MALLOC_0_IS_NONNULL 1 ++ ++/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */ ++/* #undef MAP_ANONYMOUS */ ++ ++/* Define if the mbrtowc function does not return (size_t) -2 for empty input. ++ */ ++/* #undef MBRTOWC_EMPTY_INPUT_BUG */ ++ ++/* Define if the mbrtowc function has the NULL pwc argument bug. */ ++/* #undef MBRTOWC_NULL_ARG1_BUG */ ++ ++/* Define if the mbrtowc function has the NULL string argument bug. */ ++/* #undef MBRTOWC_NULL_ARG2_BUG */ ++ ++/* Define if the mbrtowc function does not return 0 for a NUL character. */ ++/* #undef MBRTOWC_NUL_RETVAL_BUG */ ++ ++/* Define if the mbrtowc function returns a wrong return value. */ ++/* #undef MBRTOWC_RETVAL_BUG */ ++ ++/* Define to 1 if open() fails to recognize a trailing slash. */ ++/* #undef OPEN_TRAILING_SLASH_BUG */ ++ ++/* Name of package */ ++#define PACKAGE "gettext-tools" ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#define PACKAGE_BUGREPORT "bug-gnu-gettext@gnu.org" ++ ++/* Define to the full name of this package. */ ++#define PACKAGE_NAME "gettext-tools" ++ ++/* Define to the full name and version of this package. */ ++#define PACKAGE_STRING "gettext-tools 0.19.8.1" ++ ++/* Define to the suffix of this package */ ++#define PACKAGE_SUFFIX "-0.19.8" ++ ++/* Define to the one symbol short name of this package. */ ++#define PACKAGE_TARNAME "gettext-tools" ++ ++/* Define to the home page for this package. */ ++#define PACKAGE_URL "" ++ ++/* Define to the version of this package. */ ++#define PACKAGE_VERSION "0.19.8.1" ++ ++/* Define if exists and defines unusable PRI* macros. */ ++/* #undef PRI_MACROS_BROKEN */ ++ ++/* Define to the type that is the result of default argument promotions of ++ type mode_t. */ ++#define PROMOTED_MODE_T mode_t ++ ++/* Define if the pthread_in_use() detection is hard. */ ++/* #undef PTHREAD_IN_USE_DETECTION_HARD */ ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'ptrdiff_t'. */ ++#if (_MSC_VER < 1700) ++# define PTRDIFF_T_SUFFIX _GL_PTRDIFF_T_SUFFIX ++#endif ++ ++/* Define to 1 if readlink fails to recognize a trailing slash. */ ++/* #undef READLINK_TRAILING_SLASH_BUG */ ++ ++/* Define to 1 if gnulib's dirfd() replacement is used. */ ++/* #undef REPLACE_DIRFD */ ++ ++/* Define to 1 if stat needs help when passed a directory name with a trailing ++ slash */ ++#if (_MSC_VER < 1900) ++# define REPLACE_FUNC_STAT_DIR 1 ++#endif ++ ++/* Define to 1 if stat needs help when passed a file name with a trailing ++ slash */ ++/* #undef REPLACE_FUNC_STAT_FILE */ ++ ++/* Define if nl_langinfo exists but is overridden by gnulib. */ ++/* #undef REPLACE_NL_LANGINFO */ ++ ++/* Define to 1 if strerror(0) does not return a message implying success. */ ++/* #undef REPLACE_STRERROR_0 */ ++ ++/* Define if vasnprintf exists but is overridden by gnulib. */ ++/* #undef REPLACE_VASNPRINTF */ ++ ++/* Define as const if the declaration of setlocale() needs const. */ ++#define SETLOCALE_CONST ++ ++/* Define if lists must be signal-safe. */ ++#define SIGNAL_SAFE_LIST 1 ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'sig_atomic_t'. */ ++#if (_MSC_VER < 1700) ++# define SIG_ATOMIC_T_SUFFIX ++#endif ++ ++/* Define as the maximum value of type 'size_t', if the system doesn't define ++ it. */ ++#ifndef SIZE_MAX ++/* # undef SIZE_MAX */ ++#endif ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'size_t'. */ ++#define SIZE_T_SUFFIX _GL_SIZE_T_SUFFIX ++ ++/* If using the C implementation of alloca, define if you know the ++ direction of stack growth for your system; otherwise it will be ++ automatically deduced at runtime. ++ STACK_DIRECTION > 0 => grows toward higher addresses ++ STACK_DIRECTION < 0 => grows toward lower addresses ++ STACK_DIRECTION = 0 => direction of growth unknown */ ++/* #undef STACK_DIRECTION */ ++ ++/* 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 strerror_r returns char *. */ ++/* #undef STRERROR_R_CHAR_P */ ++ ++/* Define to the prefix of C symbols at the assembler and linker level, either ++ an underscore or empty. */ ++#define USER_LABEL_PREFIX ++ ++/* Define to nonzero if you want access control list support. */ ++#define USE_ACL 0 ++ ++/* Define if the POSIX multithreading library can be used. */ ++/* #undef USE_POSIX_THREADS */ ++ ++/* Define if references to the POSIX multithreading library should be made ++ weak. */ ++/* #undef USE_POSIX_THREADS_WEAK */ ++ ++/* Define if the GNU Pth multithreading library can be used. */ ++/* #undef USE_PTH_THREADS */ ++ ++/* Define if references to the GNU Pth multithreading library should be made ++ weak. */ ++/* #undef USE_PTH_THREADS_WEAK */ ++ ++/* Define if the old Solaris multithreading library can be used. */ ++/* #undef USE_SOLARIS_THREADS */ ++ ++/* Define if references to the old Solaris multithreading library should be ++ made weak. */ ++/* #undef USE_SOLARIS_THREADS_WEAK */ ++ ++/* Enable extensions on AIX 3, Interix. */ ++#ifndef _ALL_SOURCE ++# define _ALL_SOURCE 1 ++#endif ++/* Enable general extensions on OS X. */ ++#ifndef _DARWIN_C_SOURCE ++# define _DARWIN_C_SOURCE 1 ++#endif ++/* Enable GNU extensions on systems that have them. */ ++#ifndef _GNU_SOURCE ++# define _GNU_SOURCE 1 ++#endif ++/* Use GNU style printf and scanf. */ ++#ifndef __USE_MINGW_ANSI_STDIO ++# define __USE_MINGW_ANSI_STDIO 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 X/Open extensions if necessary. HP-UX 11.11 defines ++ mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of ++ whether compiling with -Ae or -D_HPUX_SOURCE=1. */ ++#ifndef _XOPEN_SOURCE ++/* # undef _XOPEN_SOURCE */ ++#endif ++/* Enable general extensions on Solaris. */ ++#ifndef __EXTENSIONS__ ++# define __EXTENSIONS__ 1 ++#endif ++ ++ ++/* Define to 1 if you want getc etc. to use unlocked I/O if available. ++ Unlocked I/O can improve performance in unithreaded apps, but it is not ++ safe for multithreaded apps. */ ++#define USE_UNLOCKED_IO 1 ++ ++/* Define if the native Windows multithreading API can be used. */ ++#define USE_WINDOWS_THREADS 1 ++ ++/* Define to a working va_copy macro or replacement. */ ++#define VA_COPY va_copy ++ ++/* Version number of package */ ++#define VERSION "0.19.8.1" ++ ++/* Define to 1 if unsetenv returns void instead of int. */ ++/* #undef VOID_UNSETENV */ ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'wchar_t'. */ ++#if (_MSC_VER < 1700) ++# define WCHAR_T_SUFFIX ++ ++/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type ++ 'wint_t'. */ ++# define WINT_T_SUFFIX ++#endif ++ ++/* Define when --enable-shared is used on mingw or Cygwin. */ ++#define WOE32DLL 1 ++ ++/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most ++ significant byte first (like Motorola and SPARC, unlike Intel). */ ++#if defined AC_APPLE_UNIVERSAL_BUILD ++# if defined __BIG_ENDIAN__ ++# define WORDS_BIGENDIAN 1 ++# endif ++#else ++# ifndef WORDS_BIGENDIAN ++/* # undef WORDS_BIGENDIAN */ ++# endif ++#endif ++ ++/* Define to 1 to internationalize bison runtime messages. */ ++#define YYENABLE_NLS 1 ++ ++/* Enable large inode numbers on Mac OS X 10.5. */ ++#define _DARWIN_USE_64_BIT_INODE 1 ++ ++/* Number of bits in a file offset, on hosts where this is settable. */ ++/* #undef _FILE_OFFSET_BITS */ ++ ++/* Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct ++ stat.st_size becomes 64-bit. */ ++#define _GL_WINDOWS_64_BIT_ST_SIZE 1 ++ ++/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ ++/* #undef _LARGEFILE_SOURCE */ ++ ++/* Define for large files, on AIX-style hosts. */ ++/* #undef _LARGE_FILES */ ++ ++/* Define to 1 on Solaris. */ ++/* #undef _LCONV_C99 */ ++ ++/* Define to 1 if on MINIX. */ ++/* #undef _MINIX */ ++ ++/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */ ++/* #undef _NETBSD_SOURCE */ ++ ++/* The _Noreturn keyword of C11. */ ++#if ! (defined _Noreturn \ ++ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) ++# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ ++ || 0x5110 <= __SUNPRO_C) ++# define _Noreturn __attribute__ ((__noreturn__)) ++# elif defined _MSC_VER && 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn ++# endif ++#endif ++ ++ ++/* 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 if you want to include , so that it consistently ++ overrides 's RE_DUP_MAX. */ ++#define _REGEX_INCLUDE_LIMITS_H 1 ++ ++/* Define if you want regoff_t to be at least as wide POSIX requires. */ ++#define _REGEX_LARGE_OFFSETS 1 ++ ++/* Define to rpl_ if the getopt replacement functions and variables should be ++ used. */ ++#define __GETOPT_PREFIX rpl_ ++ ++/* Define to 1 if the system predates C++11. */ ++/* #undef __STDC_CONSTANT_MACROS */ ++ ++/* Define to 1 if the system predates C++11. */ ++/* #undef __STDC_LIMIT_MACROS */ ++ ++/* Define as 'access' if you don't have the eaccess() function. */ ++#define eaccess access ++ ++/* Please see the Gnulib manual for how to use these macros. ++ ++ Suppress extern inline with HP-UX cc, as it appears to be broken; see ++ . ++ ++ Suppress extern inline with Sun C in standards-conformance mode, as it ++ mishandles inline functions that call each other. E.g., for 'inline void f ++ (void) { } inline void g (void) { f (); }', c99 incorrectly complains ++ 'reference to static identifier "f" in extern inline function'. ++ This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. ++ ++ Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) ++ on configurations that mistakenly use 'static inline' to implement ++ functions or macros in standard C headers like . For example, ++ if isdigit is mistakenly implemented via a static inline function, ++ a program containing an extern inline function that calls isdigit ++ may not work since the C standard prohibits extern inline functions ++ from calling static functions. This bug is known to occur on: ++ ++ OS X 10.8 and earlier; see: ++ http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html ++ ++ DragonFly; see ++ http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log ++ ++ FreeBSD; see: ++ http://lists.gnu.org/archive/html/bug-gnulib/2014-07/msg00104.html ++ ++ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and ++ for clang but remains for g++; see . ++ Assume DragonFly and FreeBSD will be similar. */ ++#if (((defined __APPLE__ && defined __MACH__) \ ++ || defined __DragonFly__ || defined __FreeBSD__) \ ++ && (defined __header_inline \ ++ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ ++ && ! defined __clang__) \ ++ : ((! defined _DONT_USE_CTYPE_INLINE_ \ ++ && (defined __GNUC__ || defined __cplusplus)) \ ++ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ ++ && defined __GNUC__ && ! defined __cplusplus)))) ++# define _GL_EXTERN_INLINE_STDHEADER_BUG ++#endif ++#if ((__GNUC__ \ ++ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ ++ : (199901L <= __STDC_VERSION__ \ ++ && !defined __HP_cc \ ++ && !defined __PGI \ ++ && !(defined __SUNPRO_C && __STDC__))) \ ++ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) ++# define _GL_INLINE inline ++# define _GL_EXTERN_INLINE extern inline ++# define _GL_EXTERN_INLINE_IN_USE ++#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ ++ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) ++# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ ++ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ ++# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) ++# else ++# define _GL_INLINE extern inline ++# endif ++# define _GL_EXTERN_INLINE extern ++# define _GL_EXTERN_INLINE_IN_USE ++#else ++# define _GL_INLINE static _GL_UNUSED ++# define _GL_EXTERN_INLINE static _GL_UNUSED ++#endif ++ ++/* In GCC 4.6 (inclusive) to 5.1 (exclusive), ++ suppress bogus "no previous prototype for 'FOO'" ++ and "no previous declaration for 'FOO'" diagnostics, ++ when FOO is an inline function in the header; see ++ and ++ . */ ++#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ ++# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ ++# define _GL_INLINE_HEADER_CONST_PRAGMA ++# else ++# define _GL_INLINE_HEADER_CONST_PRAGMA \ ++ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") ++# endif ++# define _GL_INLINE_HEADER_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ ++ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ ++ _GL_INLINE_HEADER_CONST_PRAGMA ++# define _GL_INLINE_HEADER_END \ ++ _Pragma ("GCC diagnostic pop") ++#else ++# define _GL_INLINE_HEADER_BEGIN ++# define _GL_INLINE_HEADER_END ++#endif ++ ++/* Define to a replacement function name for fnmatch(). */ ++#define fnmatch posix_fnmatch ++ ++/* Define to `int' if doesn't define. */ ++#define gid_t int ++ ++/* A replacement for va_copy, if needed. */ ++#define gl_va_copy(a,b) ((a) = (b)) ++ ++/* Define as a marker that can be attached to declarations that might not ++ be used. This helps to reduce warnings, such as from ++ GCC -Wunused-parameter. */ ++#ifndef _GL_UNUSED ++# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_UNUSED __attribute__ ((__unused__)) ++# else ++# define _GL_UNUSED ++# endif ++#endif ++ ++/* The __pure__ attribute was added in gcc 2.96. */ ++#ifndef _GL_ATTRIBUTE_PURE ++# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++# else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++# endif ++#endif ++ ++ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#if (_MSC_VER < 1900) ++# ifndef __cplusplus ++# define inline __inline ++# endif ++#endif ++ ++/* Define to long or long long if and don't define. */ ++#if (_MSC_VER < 1600) ++# define intmax_t long long ++#endif ++ ++/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports ++ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of ++ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. ++ __APPLE__ && __MACH__ test for Mac OS X. ++ __APPLE_CC__ tests for the Apple compiler and its version. ++ __STDC_VERSION__ tests for the C99 mode. */ ++#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ ++# define __GNUC_STDC_INLINE__ 1 ++#endif ++ ++/* Define to a type if does not define. */ ++/* #undef mbstate_t */ ++ ++/* Define to `int' if does not define. */ ++#define mode_t int ++ ++/* Define to the type of st_nlink in struct stat, or a supertype. */ ++#define nlink_t int ++ ++/* Define to `int' if does not define. */ ++#define pid_t int ++ ++/* Define as the type of the result of subtracting two pointers, if the system ++ doesn't define it. */ ++/* #undef ptrdiff_t */ ++ ++/* Define to rpl_re_comp if the replacement should be used. */ ++#define re_comp rpl_re_comp ++ ++/* Define to rpl_re_compile_fastmap if the replacement should be used. */ ++#define re_compile_fastmap rpl_re_compile_fastmap ++ ++/* Define to rpl_re_compile_pattern if the replacement should be used. */ ++#define re_compile_pattern rpl_re_compile_pattern ++ ++/* Define to rpl_re_exec if the replacement should be used. */ ++#define re_exec rpl_re_exec ++ ++/* Define to rpl_re_match if the replacement should be used. */ ++#define re_match rpl_re_match ++ ++/* Define to rpl_re_match_2 if the replacement should be used. */ ++#define re_match_2 rpl_re_match_2 ++ ++/* Define to rpl_re_search if the replacement should be used. */ ++#define re_search rpl_re_search ++ ++/* Define to rpl_re_search_2 if the replacement should be used. */ ++#define re_search_2 rpl_re_search_2 ++ ++/* Define to rpl_re_set_registers if the replacement should be used. */ ++#define re_set_registers rpl_re_set_registers ++ ++/* Define to rpl_re_set_syntax if the replacement should be used. */ ++#define re_set_syntax rpl_re_set_syntax ++ ++/* Define to rpl_re_syntax_options if the replacement should be used. */ ++#define re_syntax_options rpl_re_syntax_options ++ ++/* Define to rpl_regcomp if the replacement should be used. */ ++#define regcomp rpl_regcomp ++ ++/* Define to rpl_regerror if the replacement should be used. */ ++#define regerror rpl_regerror ++ ++/* Define to rpl_regexec if the replacement should be used. */ ++#define regexec rpl_regexec ++ ++/* Define to rpl_regfree if the replacement should be used. */ ++#define regfree rpl_regfree ++ ++/* Define to the equivalent of the C99 'restrict' keyword, or to ++ nothing if this is not supported. Do not define if restrict is ++ supported directly. */ ++#define restrict /**/ ++/* Work around a bug in Sun C++: it does not support _Restrict or ++ __restrict__, even though the corresponding Sun C compiler ends up with ++ "#define restrict _Restrict" or "#define restrict __restrict__" in the ++ previous line. Perhaps some future version of Sun C++ will work with ++ restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ ++#if defined __SUNPRO_CC && !defined __RESTRICT ++# define _Restrict ++# define __restrict__ ++#endif ++ ++/* Define as an integer type suitable for memory locations that can be ++ accessed atomically even in the presence of asynchronous signals. */ ++/* #undef sig_atomic_t */ ++ ++/* Define to `unsigned int' if does not define. */ ++/* #undef size_t */ ++ ++/* Define as a signed type of the same size as size_t. */ ++#define ssize_t int ++ ++/* Define to `int' if doesn't define. */ ++#define uid_t int ++ ++/* Define to unsigned long or unsigned long long if and ++ don't define. */ ++#if (_MSC_VER < 1600) ++# define uintmax_t unsigned long long ++#endif ++ ++/* Define as a marker that can be attached to declarations that might not ++ be used. This helps to reduce warnings, such as from ++ GCC -Wunused-parameter. */ ++#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) ++# define _GL_UNUSED __attribute__ ((__unused__)) ++#else ++# define _GL_UNUSED ++#endif ++/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name ++ is a misnomer outside of parameter lists. */ ++#define _UNUSED_PARAMETER_ _GL_UNUSED ++ ++/* gcc supports the "unused" attribute on possibly unused labels, and ++ g++ has since version 4.5. Note to support C++ as well as C, ++ _GL_UNUSED_LABEL should be used with a trailing ; */ ++#if !defined __cplusplus || __GNUC__ > 4 \ ++ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) ++# define _GL_UNUSED_LABEL _GL_UNUSED ++#else ++# define _GL_UNUSED_LABEL ++#endif ++ ++/* The __pure__ attribute was added in gcc 2.96. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) ++# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) ++#else ++# define _GL_ATTRIBUTE_PURE /* empty */ ++#endif ++ ++/* The __const__ attribute was added in gcc 2.95. */ ++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ++# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) ++#else ++# define _GL_ATTRIBUTE_CONST /* empty */ ++#endif ++ ++ ++/* Define as a macro for copying va_list variables. */ ++#if (_MSC_VER < 1800) ++# define va_copy gl_va_copy ++#endif ++ ++/* Define as `fork' if `vfork' does not work. */ ++#define vfork fork ++ ++ ++#define __libc_lock_t gl_lock_t ++#define __libc_lock_define gl_lock_define ++#define __libc_lock_define_initialized gl_lock_define_initialized ++#define __libc_lock_init gl_lock_init ++#define __libc_lock_lock gl_lock_lock ++#define __libc_lock_unlock gl_lock_unlock ++#define __libc_lock_recursive_t gl_recursive_lock_t ++#define __libc_lock_define_recursive gl_recursive_lock_define ++#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized ++#define __libc_lock_init_recursive gl_recursive_lock_init ++#define __libc_lock_lock_recursive gl_recursive_lock_lock ++#define __libc_lock_unlock_recursive gl_recursive_lock_unlock ++#define glthread_in_use libintl_thread_in_use ++#define glthread_lock_init_func libintl_lock_init_func ++#define glthread_lock_lock_func libintl_lock_lock_func ++#define glthread_lock_unlock_func libintl_lock_unlock_func ++#define glthread_lock_destroy_func libintl_lock_destroy_func ++#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded ++#define glthread_rwlock_init_func libintl_rwlock_init_func ++#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded ++#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func ++#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded ++#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func ++#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded ++#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func ++#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded ++#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func ++#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded ++#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func ++#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded ++#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func ++#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded ++#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func ++#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded ++#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func ++#define glthread_once_func libintl_once_func ++#define glthread_once_singlethreaded libintl_once_singlethreaded ++#define glthread_once_multithreaded libintl_once_multithreaded ++ ++ ++ ++#ifndef ENDIANNESS ++# if defined __BIG_ENDIAN__ ++# define ENDIANNESS 0 ++# endif ++# if defined __LITTLE_ENDIAN__ ++# define ENDIANNESS 0 ++# endif ++#endif ++ ++ ++ ++/* A file name cannot consist of any character possible. INVALID_PATH_CHAR ++ contains the characters not allowed. */ ++#if defined _MSC_VER || defined __MINGW32__ ++/* Woe32. This string is valid for Windows NT/2000. On Windows 95/98/ME some ++ few characters in the range 0x80..0xff are invalid as well, but this doesn't ++ matter much for our purposes. */ ++# define INVALID_PATH_CHAR "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\"*/:<>?\\|" ++#elif defined MSDOS ++/* Something like this for MSDOG. */ ++# define INVALID_PATH_CHAR "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 \177\\:." ++#else ++/* Unix. */ ++# define INVALID_PATH_CHAR "\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 \177/" ++#endif ++ ++/* This is the page width for the message_print function. It should ++ not be set to more than 79 characters (Emacs users will appreciate ++ it). It is used to wrap the msgid and msgstr strings, and also to ++ wrap the file position (#:) comments. */ ++#define PAGE_WIDTH 79 ++ ++/* On Windows, variables that may be in a DLL must be marked specially. */ ++#if ((defined _MSC_VER && defined _DLL) || defined WOE32DLL) && !defined IN_RELOCWRAPPER ++# define DLL_VARIABLE __declspec (dllimport) ++#else ++# define DLL_VARIABLE ++#endif ++ ++/* Extra OS/2 (emx+gcc) defines. */ ++#if defined __EMX__ && !defined __KLIBC__ ++# include "intl/os2compat.h" ++#endif ++ +diff -Nru gettext-0.19-unpatched/gettext-tools/woe32dll/c++fd-ostream.cc gettext-0.19/gettext-tools/woe32dll/c++fd-ostream.cc +--- gettext-0.19-unpatched/gettext-tools/woe32dll/c++fd-ostream.cc 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/woe32dll/c++fd-ostream.cc 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1 @@ ++#include "../gnulib-lib/fd-ostream.c" +\ Brak znaku nowej linii na końcu pliku +diff -Nru gettext-0.19-unpatched/gettext-tools/woe32dll/c++file-ostream.cc gettext-0.19/gettext-tools/woe32dll/c++file-ostream.cc +--- gettext-0.19-unpatched/gettext-tools/woe32dll/c++file-ostream.cc 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/woe32dll/c++file-ostream.cc 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1 @@ ++#include "../gnulib-lib/file-ostream.c" +\ Brak znaku nowej linii na końcu pliku +diff -Nru gettext-0.19-unpatched/gettext-tools/woe32dll/c++html-ostream.cc gettext-0.19/gettext-tools/woe32dll/c++html-ostream.cc +--- gettext-0.19-unpatched/gettext-tools/woe32dll/c++html-ostream.cc 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/woe32dll/c++html-ostream.cc 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1 @@ ++#include "../gnulib-lib/html-ostream.c" +\ Brak znaku nowej linii na końcu pliku +diff -Nru gettext-0.19-unpatched/gettext-tools/woe32dll/c++styled-ostream.cc gettext-0.19/gettext-tools/woe32dll/c++styled-ostream.cc +--- gettext-0.19-unpatched/gettext-tools/woe32dll/c++styled-ostream.cc 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/woe32dll/c++styled-ostream.cc 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1 @@ ++#include "../gnulib-lib/styled-ostream.c" +\ Brak znaku nowej linii na końcu pliku +diff -Nru gettext-0.19-unpatched/gettext-tools/woe32dll/c++term-ostream.cc gettext-0.19/gettext-tools/woe32dll/c++term-ostream.cc +--- gettext-0.19-unpatched/gettext-tools/woe32dll/c++term-ostream.cc 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/gettext-tools/woe32dll/c++term-ostream.cc 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1 @@ ++#include "../gnulib-lib/term-ostream.c" +\ Brak znaku nowej linii na końcu pliku +diff -Nru gettext-0.19-unpatched/win32/gettextlib.def gettext-0.19/win32/gettextlib.def +--- gettext-0.19-unpatched/win32/gettextlib.def 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/gettextlib.def 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,122 @@ ++EXPORTS ++cleanup_temp_dir ++close_stdout ++compile_csharp_class ++compile_java_class ++copy_file_preserving ++create_pipe_in ++create_pipe_out ++create_temp_dir ++c_strcasecmp ++c_strncasecmp ++c_strstr ++error ++error_at_line ++execute_csharp_program ++execute_java_class ++file_ostream_create ++find_backup_file_name ++find_in_path ++fd_ostream_create ++fopen_temp ++freea ++fstrcmp_bounded ++full_write ++fwriteerror_temp ++fwriteerror ++gcd ++gl_locale_name ++gnu_basename ++hash_destroy ++hash_find_entry ++hash_init ++hash_insert_entry ++hash_iterate ++hash_iterate_modify ++hash_set_value ++html_styled_ostream_create ++iconveh_close ++iconveh_open ++libintl_lock_init_func ++libintl_lock_lock_func ++libintl_lock_unlock_func ++locale_charset ++maybe_print_progname ++multiline_error ++multiline_warning ++next_prime ++pipe_filter_ii_execute ++posix_fnmatch ++proper_name ++proper_name_utf8 ++register_temp_file ++register_temp_subdir ++relocate ++rpl_close ++rpl_fopen ++rpl_fprintf ++rpl_fputc ++rpl_fputs ++rpl_fwrite ++rpl_getline ++rpl_getopt_long ++rpl_malloc ++rpl_mbsinit ++rpl_mbrtowc ++rpl_open ++rpl_printf ++rpl_raise ++rpl_realloc ++rpl_setlocale ++rpl_signal ++rpl_stat ++rpl_strerror ++rpl_strstr ++set_program_name_and_installdir ++shell_quote_argv ++strchrnul ++stpcpy ++stpncpy ++sigaddset ++sigemptyset ++sigprocmask ++term_ostream_create ++term_styled_ostream_create ++trim2 ++uc_is_space ++uc_width ++ulc_width_linebreaks ++unicode_name_character ++unregister_temp_file ++unregister_temp_subdir ++unsetenv ++u16_mbtouc_aux ++u8_uctomb_aux ++u8_mbtouc_aux ++u8_mbtoucr ++vasprintf ++wait_subprocess ++xalloc_die ++xasprintf ++xcalloc ++xconcatenated_filename ++xget_version ++xmalloc ++xmmalloca ++xrealloc ++xsetenv ++xstrdup ++xmemdup ++xmemdup0 ++xmem_cd_iconv ++xmem_cd_iconveh ++xmlDocFormatDump ++xmlFreeTextWriter ++xmlNewTextWriter ++xmlTextWriterEndElement ++xmlTextWriterStartElement ++xmlTextWriterWriteAttribute ++xmlTextWriterWriteRaw ++_obstack_begin ++_obstack_free ++_obstack_newchunk +diff -Nru gettext-0.19-unpatched/win32/gettextsrc.def gettext-0.19/win32/gettextsrc.def +--- gettext-0.19-unpatched/win32/gettextsrc.def 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/gettextsrc.def 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,111 @@ ++EXPORTS ++catalog_reader_alloc ++catalog_reader_free ++catalog_reader_parse ++check_message_list ++check_msgid_msgstr_format_i ++check_plural_eval ++compare_po_locale_charsets ++convert_string_directly ++catenate_msgdomain_list ++default_add_message ++default_catalog_reader_alloc ++default_constructor ++default_destructor ++default_directive_domain ++default_directive_message ++default_comment ++default_comment_dot ++default_comment_filepos ++default_comment_special ++default_parse_brief ++default_parse_debrief ++default_set_domain ++desktop_add_default_keywords ++desktop_add_keyword ++desktop_escape_string ++desktop_parse ++desktop_reader_alloc ++desktop_reader_free ++desktop_unescape_string ++dir_list_append ++dir_list_nth ++dir_list_restore ++dir_list_save_reset ++extract_plural_expression ++fuzzy_search_goal_function ++get_search_path ++get_python_format_unnamed_arg_count ++get_sysdep_c_format_directives ++handle_color_option ++handle_filepos_comment_option ++handle_style_option ++iconv_message_list ++iconv_msgdomain_list ++is_ascii_message_list ++is_ascii_msgdomain_list ++is_ascii_string ++is_message_list_iconvable ++its_rule_list_add_from_file ++its_rule_list_add_from_string ++its_rule_list_alloc ++its_rule_list_extract ++its_rule_list_free ++locating_rule_list_add_from_directory ++locating_rule_list_alloc ++locating_rule_list_free ++locating_rule_list_locate ++message_alloc ++message_comment_dot_append ++message_comment_filepos ++message_copy ++message_comment_append ++message_list_alloc ++message_list_append ++message_list_free ++message_list_list_alloc ++message_list_list_append ++message_list_list_append_list ++message_list_list_free ++message_list_list_search ++message_list_prepend ++message_list_remove_if_not ++message_list_search ++message_list_search_fuzzy ++message_page_width_set ++message_page_width_ignore ++message_print_style_escape ++message_print_style_filepos ++message_print_style_indent ++message_print_style_uniforum ++msgdomain_list_alloc ++msgdomain_list_english ++msgdomain_list_equal ++msgdomain_list_print ++msgdomain_list_set_header_field ++msgdomain_list_sort_by_filepos ++msgdomain_list_sort_by_msgid ++msgdomain_list_sublist ++msgdomain_write_xml ++msgdomain_write_xml_bulk ++open_catalog_file ++possible_format_p ++po_charset_canonicalize ++po_charset_character_iterator ++po_gram_error_at_line ++po_lex_pass_obsolete_entries ++po_parse_comment_special ++po_strftime ++print_color_test ++read_catalog_file ++read_catalog_stream ++read_names_from_file ++string_list_alloc ++string_list_append ++string_list_append_unique ++string_list_destroy ++string_list_free ++string_list_member ++string_list_init ++string_list_join ++syntax_check_message_list +diff -Nru gettext-0.19-unpatched/win32/vs14/asprintf.vcxproj gettext-0.19/win32/vs14/asprintf.vcxproj +--- gettext-0.19-unpatched/win32/vs14/asprintf.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/asprintf.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,183 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {3C86CBE3-57D1-416C-8143-3958768CB45D} ++ asprintf ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ Unicode ++ ++ ++ DynamicLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ ++ ++ ++ Disabled ++ _DEBUG;$(LibAsprintfDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(LibAsprintfDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ _DEBUG;$(LibAsprintfDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(LibAsprintfDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/asprintf.vcxproj.filters gettext-0.19/win32/vs14/asprintf.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/asprintf.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/asprintf.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,36 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ ++ Sources ++ ++ ++ Sources ++ ++ ++ Sources ++ ++ ++ Sources ++ ++ ++ ++ ++ Resource Files ++ ++ ++ +\ Brak znaku nowej linii na końcu pliku +diff -Nru gettext-0.19-unpatched/win32/vs14/envsubst.vcxproj gettext-0.19/win32/vs14/envsubst.vcxproj +--- gettext-0.19-unpatched/win32/vs14/envsubst.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/envsubst.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,182 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {0092D7C6-09BE-4398-99BC-23B16377C59D} ++ envsubst ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {ba6dcb6c-f80e-46c5-8f7e-c03ff251a74f} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/envsubst.vcxproj.filters gettext-0.19/win32/vs14/envsubst.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/envsubst.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/envsubst.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-asprintf-runtime-build-defines.props gettext-0.19/win32/vs14/gettext-asprintf-runtime-build-defines.props +--- gettext-0.19-unpatched/win32/vs14/gettext-asprintf-runtime-build-defines.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-asprintf-runtime-build-defines.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,24 @@ ++ ++ ++ ++ ++ ++ ++ IN_LIBASPRINTF;HAVE_CONFIG_H ++ ++ ++ <_PropertySheetDisplayName>gettextasprintfbuilddefinesprops ++ $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ ++ $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ ++ ++ ++ ++ ..\..\gettext-runtime\libasprintf\msvc;..\..\gettext-runtime\libasprintf;..\..\gettext-runtime\msvc;..\..\gettext-runtime;%(AdditionalIncludeDirectories) ++ ++ ++ ++ ++ $(LibAsprintfDefines) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-install.props gettext-0.19/win32/vs14/gettext-install.props +--- gettext-0.19-unpatched/win32/vs14/gettext-install.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-install.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,58 @@ ++ ++ ++ ++ ++ ++ ++ $(SolutionDir)$(Configuration)\$(Platform)\bin ++ ++mkdir $(CopyDir) ++ ++mkdir $(CopyDir)\bin ++copy $(BinDir)\asprintf.dll $(CopyDir)\bin ++copy $(BinDir)\asprintf.pdb $(CopyDir)\bin ++copy $(BinDir)\intl.dll $(CopyDir)\bin ++copy $(BinDir)\intl.pdb $(CopyDir)\bin ++copy $(BinDir)\envsubst.exe $(CopyDir)\bin ++copy $(BinDir)\envsubst.pdb $(CopyDir)\bin ++copy $(BinDir)\gettext.exe $(CopyDir)\bin ++copy $(BinDir)\gettext.pdb $(CopyDir)\bin ++copy $(BinDir)\ngettext.exe $(CopyDir)\bin ++copy $(BinDir)\ngettext.pdb $(CopyDir)\bin ++copy $(BinDir)\gettextpo.dll $(CopyDir)\bin ++copy $(BinDir)\gettextpo.pdb $(CopyDir)\bin ++copy $(BinDir)\gettextlib.dll $(CopyDir)\bin ++copy $(BinDir)\gettextlib.pdb $(CopyDir)\bin ++copy $(BinDir)\gettextsrc.dll $(CopyDir)\bin ++copy $(BinDir)\gettextsrc.pdb $(CopyDir)\bin ++copy $(BinDir)\msg*.exe $(CopyDir)\bin ++copy $(BinDir)\msg*.pdb $(CopyDir)\bin ++copy $(BinDir)\xgettext.exe $(CopyDir)\bin ++copy $(BinDir)\xgettext.pdb $(CopyDir)\bin ++copy $(BinDir)\recode-sr-latin.exe $(CopyDir)\bin ++copy $(BinDir)\recode-sr-latin.pdb $(CopyDir)\bin ++ ++mkdir $(CopyDir)\lib ++copy $(BinDir)\asprintf.lib $(CopyDir)\lib ++copy $(BinDir)\intl.lib $(CopyDir)\lib ++copy $(BinDir)\gettextpo.lib $(CopyDir)\lib ++ ++mkdir $(CopyDir)\include ++copy ..\..\gettext-runtime\libasprintf\msvc\autosprintf.h $(CopyDir)\include ++copy ..\..\gettext-runtime\intl\msvc\libgnuintl.h $(CopyDir)\include\libintl.h ++copy ..\..\gettext-tools\libgettextpo\msvc\gettext-po.h $(CopyDir)\include ++ ++ ++ ++ <_PropertySheetDisplayName>gettextinstallprops ++ ++ ++ ++ ++ $(BinDir) ++ ++ ++ $(GettextDoInstall) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-install.vcxproj gettext-0.19/win32/vs14/gettext-install.vcxproj +--- gettext-0.19-unpatched/win32/vs14/gettext-install.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-install.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,199 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83} ++ gettextinstall ++ ++ ++ ++ Utility ++ v140 ++ MultiByte ++ true ++ ++ ++ Utility ++ v140 ++ MultiByte ++ ++ ++ Utility ++ v140 ++ MultiByte ++ true ++ ++ ++ Utility ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Installing Build Results... ++ $(GettextDoInstall) ++ some_files;%(Outputs) ++ Installing Build Results... ++ $(GettextDoInstall) ++ some_files;%(Outputs) ++ ++ ++ ++ ++ {3c86cbe3-57d1-416c-8143-3958768cb45d} ++ false ++ ++ ++ {0092d7c6-09be-4398-99bc-23b16377c59d} ++ false ++ ++ ++ {cc50d78a-91d8-48b1-82b5-2c5a365ffae9} ++ false ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {5c383c79-d266-42dd-9c1a-6a5dc133ab3f} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ {4a075f7f-8a3c-43ab-9278-2408f84a9397} ++ false ++ ++ ++ {47f1e067-3dac-4225-a011-7fd969962cde} ++ false ++ ++ ++ {8d2ee6a3-8f3c-4cdc-9319-40f7642f7d5d} ++ false ++ ++ ++ {9c2b7992-af0d-428f-b86a-bc24233b32b9} ++ false ++ ++ ++ {4e533fc2-5ae7-4c6b-a312-b8452c0daac4} ++ false ++ ++ ++ {bd69e250-2d16-4826-9424-deeed8e08dae} ++ false ++ ++ ++ {0a83b0ba-6a99-4e09-bea0-8061347d48c6} ++ false ++ ++ ++ {4bfe600e-5d03-4e36-875b-68326c55a530} ++ false ++ ++ ++ {10d98932-547a-4985-9f33-9671579a0309} ++ false ++ ++ ++ {241bebf9-7aae-4bf4-b803-0abb7633773b} ++ false ++ ++ ++ {9982c8ed-7528-495e-9665-d627538953b9} ++ false ++ ++ ++ {a79bb466-b66a-4caa-b72c-e455824fb047} ++ false ++ ++ ++ {3e00b0e2-87b4-416c-b9a4-07fa9a17a4e6} ++ false ++ ++ ++ {cf9d4289-b95b-4800-8ad5-193729257dda} ++ false ++ ++ ++ {2f40c8d6-fc5c-406d-bb0d-4a1e1ddab01b} ++ false ++ ++ ++ {5e4b0f1e-74d0-4154-9f8d-481fe444fca4} ++ false ++ ++ ++ {93c6aba2-b4d6-4649-9ffe-22d36ca97162} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettextlib.vcxproj gettext-0.19/win32/vs14/gettextlib.vcxproj +--- gettext-0.19-unpatched/win32/vs14/gettextlib.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettextlib.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,350 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC} ++ gettextlib ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextLibDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextLibDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextLibDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextLibDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ CompileAsCpp ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {b8a2ca14-ffba-4c52-bf3f-dcd77d57c8de} ++ false ++ ++ ++ {2045108a-a97f-43de-99cd-81635075c78a} ++ false ++ ++ ++ {4c779a72-8dcc-4896-a8d7-a17fa6019682} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettextlib.vcxproj.filters gettext-0.19/win32/vs14/gettextlib.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/gettextlib.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettextlib.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,180 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettextpo.vcxproj gettext-0.19/win32/vs14/gettextpo.vcxproj +--- gettext-0.19-unpatched/win32/vs14/gettextpo.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettextpo.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,229 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F} ++ gettextpo ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextPoDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextPoDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextPoDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextPoDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {49313111-c26e-469f-9ccf-387ae306abcd} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettextpo.vcxproj.filters gettext-0.19/win32/vs14/gettextpo.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/gettextpo.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettextpo.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,70 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-runtime-build-defines.props gettext-0.19/win32/vs14/gettext-runtime-build-defines.props +--- gettext-0.19-unpatched/win32/vs14/gettext-runtime-build-defines.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-runtime-build-defines.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,44 @@ ++ ++ ++ ++ ++ ++ ++ INSTALLDIR="$(InstallRoot)";LOCALEDIR="$(DataDir)/locale";LIBDIR="$(LibDir)";ENABLE_RELOCATABLE=1;ICONV_CONST=const;DEPENDS_ON_LIBICONV=1 ++ $(BaseDefines);LOCALE_ALIAS_PATH="";BUILDING_LIBINTL;BUILDING_DLL;IN_LIBINTL;IN_LIBRARY;NO_XMALLOC;set_relocation_prefix=libintl_set_relocation_prefix;relocate=libintl_relocate ++ $(BaseDefines);LOCALE_ALIAS_PATH="$(DataDir)/locale";GETTEXTJEXEDIR="$(LibDir)/gettext";BISON_LOCALEDIR="$(DataDir)/locale";GETTEXTDATADIR="$(DataDir)";GETTEXTJAR="$(DataDir)/gettext/gettext.jar";GETTEXTDATADIR="$(DataDir)/gettext";PROJECTSDIR="$(DataDir)/gettext";PKGDATADIR="$(DataDir)/gettext" ++ $(GettextRuntimeToolsBaseDefines);EXEEXT=".exe";GETTEXT_STATIC_ITEM ++ ..\..\gettext-runtime\gnulib-lib\msvc;..\..\gettext-runtime\gnulib-lib ++ ++ ++ <_PropertySheetDisplayName>gettextbuilddefinesprops ++ $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ ++ $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ ++ ++ ++ ++ ..\..\gettext-runtime\intl\msvc;..\..\gettext-runtime\intl;..\..\gettext-runtime;..\..\gettext-runtime\msvc;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories) ++ ++ ++ iconv.lib;%(AdditionalDependencies) ++ $(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories) ++ ++ ++ ++ ++ $(BaseDefines) ++ ++ ++ $(GettextIntlDefines) ++ ++ ++ $(GettextRuntimeToolsBaseDefines) ++ ++ ++ $(GettextRuntimeToolsDefines) ++ ++ ++ $(GettextRuntimeGnulibIncludeDirs) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext.sln gettext-0.19/win32/vs14/gettext.sln +--- gettext-0.19-unpatched/win32/vs14/gettext.sln 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext.sln 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,326 @@ ++ ++Microsoft Visual Studio Solution File, Format Version 12.00 ++# Visual Studio 14 ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettext", "gettext.vcxproj", "{CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intl", "intl.vcxproj", "{C04F90E5-5865-4159-A5AF-6FF9FF089B0F}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asprintf", "asprintf.vcxproj", "{3C86CBE3-57D1-416C-8143-3958768CB45D}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grt", "grt.vcxproj", "{BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "envsubst", "envsubst.vcxproj", "{0092D7C6-09BE-4398-99BC-23B16377C59D}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ngettext", "ngettext.vcxproj", "{2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettextpo", "gettextpo.vcxproj", "{5C383C79-D266-42DD-9C1A-6A5DC133AB3F}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gnu", "gnu.vcxproj", "{49313111-C26E-469F-9CCF-387AE306ABCD}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib_rpl", "glib_rpl.vcxproj", "{B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml_rpl", "libxml_rpl.vcxproj", "{4C779A72-8DCC-4896-A8D7-A17FA6019682}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcroco_rpl", "libcroco_rpl.vcxproj", "{2045108A-A97F-43DE-99CD-81635075C78A}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettextsrc", "gettextsrc.vcxproj", "{38D95DA9-249E-4E67-BA61-AA56CD569E11}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettextlib", "gettextlib.vcxproj", "{C95B3A8E-C58B-4C74-96EA-2016127EB1EC}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgcmp", "msgcmp.vcxproj", "{8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgfmt", "msgfmt.vcxproj", "{10D98932-547A-4985-9F33-9671579A0309}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgmerge", "msgmerge.vcxproj", "{A79BB466-B66A-4CAA-B72C-E455824FB047}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgunfmt", "msgunfmt.vcxproj", "{3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xgettext", "xgettext.vcxproj", "{93C6ABA2-B4D6-4649-9FFE-22D36CA97162}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recode-sr-latin", "recode-sr-latin.vcxproj", "{5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msguniq", "msguniq.vcxproj", "{CF9D4289-B95B-4800-8AD5-193729257DDA}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msginit", "msginit.vcxproj", "{9982C8ED-7528-495E-9665-D627538953B9}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgfilter", "msgfilter.vcxproj", "{4BFE600E-5D03-4E36-875B-68326C55A530}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgexec", "msgexec.vcxproj", "{0A83B0BA-6A99-4E09-BEA0-8061347D48C6}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgen", "msgen.vcxproj", "{BD69E250-2D16-4826-9424-DEEED8E08DAE}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgconv", "msgconv.vcxproj", "{4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgcomm", "msgcomm.vcxproj", "{9C2B7992-AF0D-428F-B86A-BC24233B32B9}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgcat", "msgcat.vcxproj", "{47F1E067-3DAC-4225-A011-7FD969962CDE}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgattrib", "msgattrib.vcxproj", "{4A075F7F-8A3C-43AB-9278-2408F84A9397}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grep", "grep.vcxproj", "{A6B79D6D-85A8-4F82-AEF0-ECED26168447}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msggrep", "msggrep.vcxproj", "{241BEBF9-7AAE-4BF4-B803-0ABB7633773B}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettext-install", "gettext-install.vcxproj", "{A155CC73-1E70-4CF2-8E42-7053F0753A83}" ++EndProject ++Global ++ GlobalSection(SolutionConfigurationPlatforms) = preSolution ++ Debug|Win32 = Debug|Win32 ++ Debug|x64 = Debug|x64 ++ Release|Win32 = Release|Win32 ++ Release|x64 = Release|x64 ++ EndGlobalSection ++ GlobalSection(ProjectConfigurationPlatforms) = postSolution ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|Win32.Build.0 = Debug|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|x64.ActiveCfg = Debug|x64 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|x64.Build.0 = Debug|x64 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|Win32.ActiveCfg = Release|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|Win32.Build.0 = Release|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|x64.ActiveCfg = Release|x64 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|x64.Build.0 = Release|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|Win32.Build.0 = Debug|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|x64.ActiveCfg = Debug|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|x64.Build.0 = Debug|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|Win32.ActiveCfg = Release|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|Win32.Build.0 = Release|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|x64.ActiveCfg = Release|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|x64.Build.0 = Release|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|Win32.Build.0 = Debug|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|x64.ActiveCfg = Debug|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|x64.Build.0 = Debug|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|Win32.ActiveCfg = Release|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|Win32.Build.0 = Release|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|x64.ActiveCfg = Release|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|x64.Build.0 = Release|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|Win32.Build.0 = Debug|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|x64.ActiveCfg = Debug|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|x64.Build.0 = Debug|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|Win32.ActiveCfg = Release|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|Win32.Build.0 = Release|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|x64.ActiveCfg = Release|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|x64.Build.0 = Release|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|Win32.Build.0 = Debug|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|x64.ActiveCfg = Debug|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|x64.Build.0 = Debug|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|Win32.ActiveCfg = Release|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|Win32.Build.0 = Release|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|x64.ActiveCfg = Release|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|x64.Build.0 = Release|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|Win32.Build.0 = Debug|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|x64.ActiveCfg = Debug|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|x64.Build.0 = Debug|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|Win32.ActiveCfg = Release|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|Win32.Build.0 = Release|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|x64.ActiveCfg = Release|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|x64.Build.0 = Release|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|Win32.Build.0 = Debug|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|x64.ActiveCfg = Debug|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|x64.Build.0 = Debug|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|Win32.ActiveCfg = Release|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|Win32.Build.0 = Release|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|x64.ActiveCfg = Release|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|x64.Build.0 = Release|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|Win32.Build.0 = Debug|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|x64.ActiveCfg = Debug|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|x64.Build.0 = Debug|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|Win32.ActiveCfg = Release|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|Win32.Build.0 = Release|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|x64.ActiveCfg = Release|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|x64.Build.0 = Release|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|Win32.Build.0 = Debug|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|x64.ActiveCfg = Debug|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|x64.Build.0 = Debug|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|Win32.ActiveCfg = Release|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|Win32.Build.0 = Release|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|x64.ActiveCfg = Release|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|x64.Build.0 = Release|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|Win32.Build.0 = Debug|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|x64.ActiveCfg = Debug|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|x64.Build.0 = Debug|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|Win32.ActiveCfg = Release|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|Win32.Build.0 = Release|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|x64.ActiveCfg = Release|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|x64.Build.0 = Release|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|Win32.Build.0 = Debug|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|x64.ActiveCfg = Debug|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|x64.Build.0 = Debug|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|Win32.ActiveCfg = Release|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|Win32.Build.0 = Release|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|x64.ActiveCfg = Release|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|x64.Build.0 = Release|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|Win32.Build.0 = Debug|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|x64.ActiveCfg = Debug|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|x64.Build.0 = Debug|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|Win32.ActiveCfg = Release|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|Win32.Build.0 = Release|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|x64.ActiveCfg = Release|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|x64.Build.0 = Release|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|Win32.Build.0 = Debug|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|x64.ActiveCfg = Debug|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|x64.Build.0 = Debug|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|Win32.ActiveCfg = Release|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|Win32.Build.0 = Release|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|x64.ActiveCfg = Release|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|x64.Build.0 = Release|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|Win32.Build.0 = Debug|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|x64.ActiveCfg = Debug|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|x64.Build.0 = Debug|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|Win32.ActiveCfg = Release|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|Win32.Build.0 = Release|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|x64.ActiveCfg = Release|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|x64.Build.0 = Release|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|Win32.Build.0 = Debug|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|x64.ActiveCfg = Debug|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|x64.Build.0 = Debug|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|Win32.ActiveCfg = Release|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|Win32.Build.0 = Release|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|x64.ActiveCfg = Release|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|x64.Build.0 = Release|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|Win32.Build.0 = Debug|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|x64.ActiveCfg = Debug|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|x64.Build.0 = Debug|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|Win32.ActiveCfg = Release|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|Win32.Build.0 = Release|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|x64.ActiveCfg = Release|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|x64.Build.0 = Release|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|Win32.Build.0 = Debug|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|x64.ActiveCfg = Debug|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|x64.Build.0 = Debug|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|Win32.ActiveCfg = Release|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|Win32.Build.0 = Release|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|x64.ActiveCfg = Release|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|x64.Build.0 = Release|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|Win32.Build.0 = Debug|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|x64.ActiveCfg = Debug|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|x64.Build.0 = Debug|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|Win32.ActiveCfg = Release|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|Win32.Build.0 = Release|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|x64.ActiveCfg = Release|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|x64.Build.0 = Release|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|Win32.Build.0 = Debug|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|x64.ActiveCfg = Debug|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|x64.Build.0 = Debug|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|Win32.ActiveCfg = Release|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|Win32.Build.0 = Release|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|x64.ActiveCfg = Release|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|x64.Build.0 = Release|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|Win32.Build.0 = Debug|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|x64.ActiveCfg = Debug|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|x64.Build.0 = Debug|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|Win32.ActiveCfg = Release|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|Win32.Build.0 = Release|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|x64.ActiveCfg = Release|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|x64.Build.0 = Release|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|Win32.Build.0 = Debug|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|x64.ActiveCfg = Debug|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|x64.Build.0 = Debug|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|Win32.ActiveCfg = Release|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|Win32.Build.0 = Release|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|x64.ActiveCfg = Release|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|x64.Build.0 = Release|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|Win32.Build.0 = Debug|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|x64.ActiveCfg = Debug|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|x64.Build.0 = Debug|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|Win32.ActiveCfg = Release|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|Win32.Build.0 = Release|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|x64.ActiveCfg = Release|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|x64.Build.0 = Release|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|Win32.Build.0 = Debug|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|x64.ActiveCfg = Debug|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|x64.Build.0 = Debug|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|Win32.ActiveCfg = Release|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|Win32.Build.0 = Release|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|x64.ActiveCfg = Release|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|x64.Build.0 = Release|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|Win32.Build.0 = Debug|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|x64.ActiveCfg = Debug|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|x64.Build.0 = Debug|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|Win32.ActiveCfg = Release|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|Win32.Build.0 = Release|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|x64.ActiveCfg = Release|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|x64.Build.0 = Release|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|Win32.Build.0 = Debug|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|x64.ActiveCfg = Debug|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|x64.Build.0 = Debug|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|Win32.ActiveCfg = Release|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|Win32.Build.0 = Release|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|x64.ActiveCfg = Release|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|x64.Build.0 = Release|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|Win32.Build.0 = Debug|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|x64.ActiveCfg = Debug|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|x64.Build.0 = Debug|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|Win32.ActiveCfg = Release|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|Win32.Build.0 = Release|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|x64.ActiveCfg = Release|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|x64.Build.0 = Release|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|Win32.Build.0 = Debug|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|x64.ActiveCfg = Debug|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|x64.Build.0 = Debug|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|Win32.ActiveCfg = Release|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|Win32.Build.0 = Release|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|x64.ActiveCfg = Release|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|x64.Build.0 = Release|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|Win32.Build.0 = Debug|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|x64.ActiveCfg = Debug|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|x64.Build.0 = Debug|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|Win32.ActiveCfg = Release|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|Win32.Build.0 = Release|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|x64.ActiveCfg = Release|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|x64.Build.0 = Release|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|Win32.Build.0 = Debug|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|x64.ActiveCfg = Debug|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|x64.Build.0 = Debug|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|Win32.ActiveCfg = Release|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|Win32.Build.0 = Release|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|x64.ActiveCfg = Release|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|x64.Build.0 = Release|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|Win32.Build.0 = Debug|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|x64.ActiveCfg = Debug|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|x64.Build.0 = Debug|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|Win32.ActiveCfg = Release|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|Win32.Build.0 = Release|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|x64.ActiveCfg = Release|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|x64.Build.0 = Release|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|Win32.Build.0 = Debug|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|x64.ActiveCfg = Debug|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|x64.Build.0 = Debug|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|Win32.ActiveCfg = Release|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|Win32.Build.0 = Release|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|x64.ActiveCfg = Release|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|x64.Build.0 = Release|x64 ++ EndGlobalSection ++ GlobalSection(SolutionProperties) = preSolution ++ HideSolutionNode = FALSE ++ EndGlobalSection ++EndGlobal +diff -Nru gettext-0.19-unpatched/win32/vs14/gettextsrc.vcxproj gettext-0.19/win32/vs14/gettextsrc.vcxproj +--- gettext-0.19-unpatched/win32/vs14/gettextsrc.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettextsrc.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,247 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11} ++ gettextsrc ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextSrcDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextSrcDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextSrcDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextSrcDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettextsrc.vcxproj.filters gettext-0.19/win32/vs14/gettextsrc.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/gettextsrc.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettextsrc.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,84 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-tools-build-defines.props gettext-0.19/win32/vs14/gettext-tools-build-defines.props +--- gettext-0.19-unpatched/win32/vs14/gettext-tools-build-defines.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-tools-build-defines.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,76 @@ ++ ++ ++ ++ ++ ++ ++ INSTALLDIR="$(InstallRoot)";EXEEXT=".exe";LOCALEDIR="$(DataDir)/locale";LOCALE_ALIAS_PATH="$(DataDir)/locale";LIBDIR="$(LibDir)";GETTEXTJEXEDIR="$(LibDir)/gettext";BISON_LOCALEDIR="$(DataDir)/locale";GETTEXTDATADIR="$(DataDir)";GETTEXTJAR="$(DataDir)/gettext/gettext.jar";GETTEXTDATADIR="$(DataDir)/gettext";PROJECTSDIR="$(DataDir)/gettext";PKGDATADIR="$(DataDir)/gettext";ENABLE_RELOCATABLE=1;ICONV_CONST=const;DEPENDS_ON_LIBICONV=1 ++ IN_LIBGETTEXTPO ++ IN_GETTEXTSRC;GETTEXTDATADIR="$(DataDir)" ++ IN_GETTEXTLIB;BUILDING_DLL;DLL_VARIABLE=__declspec(dllexport);$(BaseDefines) ++ ..\..\gettext-tools\libgettextpo\msvc;..\..\gettext-tools\libgettextpo ++ ..\..\gettext-tools\gnulib-lib\msvc;..\..\gettext-tools\gnulib-lib ++ $(GettextLibBaseIncludeDirs);..\..\gettext-tools\gnulib-lib\libcroco;$(GettextToolsBaseIncludeDir) ++ ..\..\gettext-tools\src;..\..\gettext-runtime\intl\msvc;..\..\gettext-runtime\intl ++ $(GettextLibBaseIncludeDirs);$(GettextSrcBaseIncludeDirs) ++ ..\..\gettext-tools\libgrep;$(GettextSrcIncludeDirs) ++ $(GettextPoBaseIncludeDirs);$(GettextSrcBaseIncludeDirs) ++ $(BaseDefines);GETTEXT_STATIC_ITEM ++ $(BaseDefines);IN_GETTEXT_TOOLS_LIBGREP=1;_GNU_SOURCE ++ ++ ++ <_PropertySheetDisplayName>gettexttoolsbuilddefinesprops ++ $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ ++ $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ ++ ++ ++ ++ ..\..\gettext-tools\msvc;..\..\gettext-tools;..\..\gettext-runtime\intl\msvc;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories) ++ ++ ++ iconv.lib;%(AdditionalDependencies) ++ $(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories) ++ ++ ++ ++ ++ $(BaseDefines) ++ ++ ++ $(GettextPoDefines) ++ ++ ++ $(GettextSrcDefines) ++ ++ ++ $(GettextLibDefines) ++ ++ ++ $(GettextPoBaseIncludeDirs) ++ ++ ++ $(GettextLibBaseIncludeDirs) ++ ++ ++ $(GettextLibIncludeDirs) ++ ++ ++ $(GettextSrcBaseIncludeDirs) ++ ++ ++ $(GettextSrcIncludeDirs) ++ ++ ++ $(GettextGrepIncludeDirs) ++ ++ ++ $(GettextPoIncludeDirs) ++ ++ ++ $(GettextToolsDefines) ++ ++ ++ $(LibGrepDefines) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-tools-copy-glibh.props gettext-0.19/win32/vs14/gettext-tools-copy-glibh.props +--- gettext-0.19-unpatched/win32/vs14/gettext-tools-copy-glibh.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-tools-copy-glibh.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,46 @@ ++ ++ ++ ++ ++ ++ ++ copy ..\..\gettext-tools\gnulib-lib\glib.in.h ..\..\gettext-tools\gnulib-lib\glib.h ++ copy ..\..\gettext-tools\gnulib-lib\glibconfig.in.h ..\..\gettext-tools\gnulib-lib\glibconfig.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\ghash.in.h ..\..\gettext-tools\gnulib-lib\glib\ghash.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\glist.in.h ..\..\gettext-tools\gnulib-lib\glib\glist.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gprimes.in.h ..\..\gettext-tools\gnulib-lib\glib\gprimes.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.in.h ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gstring.in.h ..\..\gettext-tools\gnulib-lib\glib\gstring.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gtypes.in.h ..\..\gettext-tools\gnulib-lib\glib\gtypes.h ++ ++ ++ <_PropertySheetDisplayName>gettexttoolscopyglibhsprops ++ ++ ++ ++ ++ $(CopyGLibH) ++ ++ ++ $(CopyGLibConfigH) ++ ++ ++ $(CopyGHashH) ++ ++ ++ $(CopyGListH) ++ ++ ++ $(CopyGPrimesH) ++ ++ ++ $(CopyGStrfuncsH) ++ ++ ++ $(CopyGStringH) ++ ++ ++ $(CopyGTypesH) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-tools-copy-xmlh.props gettext-0.19/win32/vs14/gettext-tools-copy-xmlh.props +--- gettext-0.19-unpatched/win32/vs14/gettext-tools-copy-xmlh.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-tools-copy-xmlh.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,202 @@ ++ ++ ++ ++ ++ ++ ++ copy ..\..\gettext-tools\gnulib-lib\libxml\c14n.in.h ..\..\gettext-tools\gnulib-lib\libxml\c14n.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\catalog.in.h ..\..\gettext-tools\gnulib-lib\libxml\catalog.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\chvalid.in.h ..\..\gettext-tools\gnulib-lib\libxml\chvalid.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\debugXML.in.h ..\..\gettext-tools\gnulib-lib\libxml\debugXML.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\dict.in.h ..\..\gettext-tools\gnulib-lib\libxml\dict.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.in.h ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\encoding.in.h ..\..\gettext-tools\gnulib-lib\libxml\encoding.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\entities.in.h ..\..\gettext-tools\gnulib-lib\libxml\entities.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\globals.in.h ..\..\gettext-tools\gnulib-lib\libxml\globals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\hash.in.h ..\..\gettext-tools\gnulib-lib\libxml\hash.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.in.h ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.in.h ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\list.in.h ..\..\gettext-tools\gnulib-lib\libxml\list.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.in.h ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.in.h ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\parser.in.h ..\..\gettext-tools\gnulib-lib\libxml\parser.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.in.h ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\pattern.in.h ..\..\gettext-tools\gnulib-lib\libxml\pattern.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\relaxng.in.h ..\..\gettext-tools\gnulib-lib\libxml\relaxng.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\SAX.in.h ..\..\gettext-tools\gnulib-lib\libxml\SAX.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\SAX2.in.h ..\..\gettext-tools\gnulib-lib\libxml\SAX2.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.in.h ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\schematron.in.h ..\..\gettext-tools\gnulib-lib\libxml\schematron.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\threads.in.h ..\..\gettext-tools\gnulib-lib\libxml\threads.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\tree.in.h ..\..\gettext-tools\gnulib-lib\libxml\tree.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\uri.in.h ..\..\gettext-tools\gnulib-lib\libxml\uri.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\valid.in.h ..\..\gettext-tools\gnulib-lib\libxml\valid.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xinclude.in.h ..\..\gettext-tools\gnulib-lib\libxml\xinclude.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xlink.in.h ..\..\gettext-tools\gnulib-lib\libxml\xlink.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xpath.in.h ..\..\gettext-tools\gnulib-lib\libxml\xpath.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.in.h ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xpointer.in.h ..\..\gettext-tools\gnulib-lib\libxml\xpointer.h ++ ++ ++ <_PropertySheetDisplayName>gettexttoolscopyxmlhsprops ++ ++ ++ ++ ++ $(CopyXMLC14NH) ++ ++ ++ $(CopyXMLCatalogH) ++ ++ ++ $(CopyXMLChvalidH) ++ ++ ++ $(CopyXMLDebugXMLH) ++ ++ ++ $(CopyXMLDictH) ++ ++ ++ $(CopyXMLDOCBParserH) ++ ++ ++ $(CopyXMLEncodingH) ++ ++ ++ $(CopyXMLEntitiesH) ++ ++ ++ $(CopyXMLGlobalsH) ++ ++ ++ $(CopyXMLHashH) ++ ++ ++ $(CopyXMLHTMLParserH) ++ ++ ++ $(CopyXMLHTMLTreeH) ++ ++ ++ $(CopyXMLListH) ++ ++ ++ $(CopyXMLNanoftpH) ++ ++ ++ $(CopyXMLNanohttpH) ++ ++ ++ $(CopyXMLParserH) ++ ++ ++ $(CopyXMLParserInternalsH) ++ ++ ++ $(CopyXMLPatternH) ++ ++ ++ $(CopyXMLRelaxngH) ++ ++ ++ $(CopyXMLSAXH) ++ ++ ++ $(CopyXMLSAX2H) ++ ++ ++ $(CopyXMLSchemasInternalsH) ++ ++ ++ $(CopyXMLSchematronH) ++ ++ ++ $(CopyXMLThreadsH) ++ ++ ++ $(CopyXMLTreeH) ++ ++ ++ $(CopyXMLUriH) ++ ++ ++ $(CopyXMLValidH) ++ ++ ++ $(CopyXMLXincludeH) ++ ++ ++ $(CopyXMLXlinkH) ++ ++ ++ $(CopyXMLXMLAutomataH) ++ ++ ++ $(CopyXMLXMLErrorH) ++ ++ ++ $(CopyXMLXMLExportsH) ++ ++ ++ $(CopyXMLXMLIOH) ++ ++ ++ $(CopyXMLXMLMemoryH) ++ ++ ++ $(CopyXMLXMLModuleH) ++ ++ ++ $(CopyXMLXMLReaderH) ++ ++ ++ $(CopyXMLXMLRegexpH) ++ ++ ++ $(CopyXMLXMLSaveH) ++ ++ ++ $(CopyXMLXMLSchemasH) ++ ++ ++ $(CopyXMLXMLSchemaTypesH) ++ ++ ++ $(CopyXMLXMLStringH) ++ ++ ++ $(CopyXMLXMLUnicodeH) ++ ++ ++ $(CopyXMLXMLVersionH) ++ ++ ++ $(CopyXMLXMLWriterH) ++ ++ ++ $(CopyXMLXpathH) ++ ++ ++ $(CopyXMLXPathInternalsH) ++ ++ ++ $(CopyXMLXPointerH) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext.vcxproj gettext-0.19/win32/vs14/gettext.vcxproj +--- gettext-0.19-unpatched/win32/vs14/gettext.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,182 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9} ++ gettext ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {ba6dcb6c-f80e-46c5-8f7e-c03ff251a74f} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext.vcxproj.filters gettext-0.19/win32/vs14/gettext.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/gettext.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gettext-version-paths.props gettext-0.19/win32/vs14/gettext-version-paths.props +--- gettext-0.19-unpatched/win32/vs14/gettext-version-paths.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gettext-version-paths.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,65 @@ ++ ++ ++ ++ ++ ++ 14 ++ $(SolutionDir)\..\..\vs$(VSVer)\$(Configuration)\$(Platform) ++ $(GlibEtcInstallRoot) ++ 0 ++ 19 ++ 8 ++ $(PackageVersionMajor).$(PackageVersionMinor).$(PackageVersionMicro) ++ c:/win32_bin_vc$(VSVer).0 ++ $(InstallRoot)/share ++ $(InstallRoot)/share ++ ++ ++ <_PropertySheetDisplayName>gettextversionpathsprops ++ ++ ++ ++ HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) ++ 4244;4273;4307;4308;%(DisableSpecificWarnings) ++ ..\..\build-aux\snippet;%(AdditionalIncludeDirectories) ++ unused-parameter.h;_Noreturn.h;arg-nonnull.h;c++defs.h;warn-on-use.h;%(ForcedIncludeFiles) ++ true ++ /d2Zi+ %(AdditionalOptions) ++ ++ ++ PACKAGE_VERSION_MAJOR=$(PackageVersionMajor);PACKAGE_VERSION_MINOR=$(PackageVersionMinor);PACKAGE_VERSION_SUBMINOR=$(PackageVersionMicro);PACKAGE_VERSION_STRING="$(PackageVersionString)";%(PreprocessorDefinitions) ++ ++ ++ ++ ++ $(VSVer) ++ ++ ++ $(GlibEtcInstallRoot) ++ ++ ++ $(CopyDir) ++ ++ ++ $(PackageVersionMajor) ++ ++ ++ $(PackageVersionMinor) ++ ++ ++ $(PackageVersionMicro) ++ ++ ++ $(PackageVersionString) ++ ++ ++ $(InstallRoot) ++ ++ ++ $(DataDir) ++ ++ ++ $(LibDir) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/glib_rpl.vcxproj gettext-0.19/win32/vs14/glib_rpl.vcxproj +--- gettext-0.19-unpatched/win32/vs14/glib_rpl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/glib_rpl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,202 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE} ++ glib_rpl ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Copying glib.h from glib.in.h... ++ $(CopyGLibH) ++ ..\..\gettext-tools\gnulib-lib\glib.h;%(Outputs) ++ Copying glib.h from glib.in.h... ++ $(CopyGLibH) ++ ..\..\gettext-tools\gnulib-lib\glib.h;%(Outputs) ++ ++ ++ Copying glibconfig.h from glibconfig.in.h... ++ $(CopyGLibConfigH) ++ ..\..\gettext-tools\gnulib-lib\glibconfig.h;%(Outputs) ++ Copying glibconfig.h from glibconfig.in.h... ++ $(CopyGLibConfigH) ++ ..\..\gettext-tools\gnulib-lib\glibconfig.h;%(Outputs) ++ ++ ++ Copying ghash.h from ghash.in.h... ++ $(CopyGHashH) ++ ..\..\gettext-tools\gnulib-lib\glib\ghash.h;%(Outputs) ++ Copying ghash.h from ghash.in.h... ++ $(CopyGHashH) ++ ..\..\gettext-tools\gnulib-lib\glib\ghash.h;%(Outputs) ++ ++ ++ Copying glist.h from glist.in.h... ++ $(CopyGListH) ++ ..\..\gettext-tools\gnulib-lib\glib\glist.h;%(Outputs) ++ Copying glist.h from glist.in.h... ++ $(CopyGListH) ++ ..\..\gettext-tools\gnulib-lib\glib\glist.h;%(Outputs) ++ ++ ++ Copying gprimes.h from gprimes.in.h... ++ $(CopyGPrimesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gprimes.h;%(Outputs) ++ Copying gprimes.h from gprimes.in.h... ++ $(CopyGPrimesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gprimes.h;%(Outputs) ++ ++ ++ Copying gstrfuncs.h from gstrfuncs.in.h... ++ $(CopyGStrfuncsH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.h;%(Outputs) ++ Copying gstrfuncs.h from gstrfuncs.in.h... ++ $(CopyGStrfuncsH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.h;%(Outputs) ++ ++ ++ Copying gstring.h from gstring.in.h... ++ $(CopyGStringH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstring.h;%(Outputs) ++ Copying gstring.h from gstring.in.h... ++ $(CopyGStringH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstring.h;%(Outputs) ++ ++ ++ Copying gtypes.h from gtypes.in.h... ++ $(CopyGTypesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gtypes.h;%(Outputs) ++ Copying gtypes.h from gtypes.in.h... ++ $(CopyGTypesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gtypes.h;%(Outputs) ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/glib_rpl.vcxproj.filters gettext-0.19/win32/vs14/glib_rpl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/glib_rpl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/glib_rpl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,36 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gnu.vcxproj gettext-0.19/win32/vs14/gnu.vcxproj +--- gettext-0.19-unpatched/win32/vs14/gnu.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gnu.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,228 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {49313111-C26E-469F-9CCF-387AE306ABCD} ++ gnu ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/gnu.vcxproj.filters gettext-0.19/win32/vs14/gnu.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/gnu.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/gnu.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,115 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/grep.vcxproj gettext-0.19/win32/vs14/grep.vcxproj +--- gettext-0.19-unpatched/win32/vs14/grep.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/grep.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,143 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447} ++ grep ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(LibGrepDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(LibGrepDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(LibGrepDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(LibGrepDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/grep.vcxproj.filters gettext-0.19/win32/vs14/grep.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/grep.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/grep.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,30 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/grt.vcxproj gettext-0.19/win32/vs14/grt.vcxproj +--- gettext-0.19-unpatched/win32/vs14/grt.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/grt.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,196 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F} ++ grt ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ StaticLibrary ++ v140 ++ MultiByte ++ ++ ++ StaticLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ StaticLibrary ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/grt.vcxproj.filters gettext-0.19/win32/vs14/grt.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/grt.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/grt.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,83 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/intl.vcxproj gettext-0.19/win32/vs14/intl.vcxproj +--- gettext-0.19-unpatched/win32/vs14/intl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/intl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,210 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F} ++ intl ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ %(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextIntlDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ %(AdditionalIncludeDirectories) ++ $(GettextIntlDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ %(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextIntlDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ %(AdditionalIncludeDirectories) ++ $(GettextIntlDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {3c86cbe3-57d1-416c-8143-3958768cb45d} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/intl.vcxproj.filters gettext-0.19/win32/vs14/intl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/intl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/intl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,55 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/libcroco_rpl.vcxproj gettext-0.19/win32/vs14/libcroco_rpl.vcxproj +--- gettext-0.19-unpatched/win32/vs14/libcroco_rpl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/libcroco_rpl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,166 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {2045108A-A97F-43DE-99CD-81635075C78A} ++ libcroco_rpl ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {b8a2ca14-ffba-4c52-bf3f-dcd77d57c8de} ++ false ++ ++ ++ {4c779a72-8dcc-4896-a8d7-a17fa6019682} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/libcroco_rpl.vcxproj.filters gettext-0.19/win32/vs14/libcroco_rpl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/libcroco_rpl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/libcroco_rpl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,45 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/libxml_rpl.vcxproj gettext-0.19/win32/vs14/libxml_rpl.vcxproj +--- gettext-0.19-unpatched/win32/vs14/libxml_rpl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/libxml_rpl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,560 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682} ++ libxml_rpl ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ %(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ %(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Copying c14n.h from c14n.in.h... ++ $(CopyXMLC14NH) ++ ..\..\gettext-tools\gnulib-lib\libxml\c14n.h;%(Outputs) ++ Copying c14n.h from c14n.in.h... ++ $(CopyXMLC14NH) ++ ..\..\gettext-tools\gnulib-lib\libxml\c14n.h;%(Outputs) ++ ++ ++ Copying catalog.h from catalog.in.h... ++ $(CopyXMLCatalogH) ++ ..\..\gettext-tools\gnulib-lib\libxml\catalog.h;%(Outputs) ++ Copying catalog.h from catalog.in.h... ++ $(CopyXMLCatalogH) ++ ..\..\gettext-tools\gnulib-lib\libxml\catalog.h;%(Outputs) ++ ++ ++ Copying chvalid.h from chvalid.in.h... ++ $(CopyXMLChvalidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\chvalid.h;%(Outputs) ++ Copying chvalid.h from chvalid.in.h... ++ $(CopyXMLChvalidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\chvalid.h;%(Outputs) ++ ++ ++ Copying debugXML.h from debugXML.in.h... ++ $(CopyXMLDebugXMLH) ++ ..\..\gettext-tools\gnulib-lib\libxml\debugXML.h;%(Outputs) ++ Copying debugXML.h from debugXML.in.h... ++ $(CopyXMLDebugXMLH) ++ ..\..\gettext-tools\gnulib-lib\libxml\debugXML.h;%(Outputs) ++ ++ ++ Copying dict.h from dict.in.h... ++ $(CopyXMLDictH) ++ ..\..\gettext-tools\gnulib-lib\libxml\dict.h;%(Outputs) ++ Copying dict.h from dict.in.h... ++ $(CopyXMLDictH) ++ ..\..\gettext-tools\gnulib-lib\libxml\dict.h;%(Outputs) ++ ++ ++ Copying DOCBparser.h from DOCBparser.in.h... ++ $(CopyXMLDOCBParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.h;%(Outputs) ++ Copying DOCBparser.h from DOCBparser.in.h... ++ $(CopyXMLDOCBParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.h;%(Outputs) ++ ++ ++ Copying encoding.h from encoding.in.h... ++ $(CopyXMLEncodingH) ++ ..\..\gettext-tools\gnulib-lib\libxml\encoding.h;%(Outputs) ++ Copying encoding.h from encoding.in.h... ++ $(CopyXMLEncodingH) ++ ..\..\gettext-tools\gnulib-lib\libxml\encoding.h;%(Outputs) ++ ++ ++ Copying entities.h from entities.in.h... ++ $(CopyXMLEntitiesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\entities.h;%(Outputs) ++ Copying entities.h from entities.in.h... ++ $(CopyXMLEntitiesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\entities.h;%(Outputs) ++ ++ ++ Copying globals.h from globals.in.h... ++ $(CopyXMLGlobalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\globals.h;%(Outputs) ++ Copying globals.h from globals.in.h... ++ $(CopyXMLGlobalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\globals.h;%(Outputs) ++ ++ ++ Copying hash.h from hash.in.h... ++ $(CopyXMLHashH) ++ ..\..\gettext-tools\gnulib-lib\libxml\hash.h;%(Outputs) ++ Copying hash.h from hash.in.h... ++ $(CopyXMLHashH) ++ ..\..\gettext-tools\gnulib-lib\libxml\hash.h;%(Outputs) ++ ++ ++ Copying HTMLparser.h from HTMLparser.in.h... ++ $(CopyXMLHTMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.h;%(Outputs) ++ Copying HTMLparser.h from HTMLparser.in.h... ++ $(CopyXMLHTMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.h;%(Outputs) ++ ++ ++ Copying HTMLtree.h from HTMLtree.in.h... ++ $(CopyXMLHTMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.h;%(Outputs) ++ Copying HTMLtree.h from HTMLtree.in.h... ++ $(CopyXMLHTMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.h;%(Outputs) ++ ++ ++ Copying list.h from list.in.h... ++ $(CopyXMLListH) ++ ..\..\gettext-tools\gnulib-lib\libxml\list.h;%(Outputs) ++ Copying list.h from list.in.h... ++ $(CopyXMLListH) ++ ..\..\gettext-tools\gnulib-lib\libxml\list.h;%(Outputs) ++ ++ ++ Copying nanoftp.h from nanoftp.in.h... ++ $(CopyXMLNanoftpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.h;%(Outputs) ++ Copying nanoftp.h from nanoftp.in.h... ++ $(CopyXMLNanoftpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.h;%(Outputs) ++ ++ ++ Copying nanohttp.h from nanohttp.in.h... ++ $(CopyXMLNanohttpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.h;%(Outputs) ++ Copying nanohttp.h from nanohttp.in.h... ++ $(CopyXMLNanohttpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.h;%(Outputs) ++ ++ ++ Copying parser.h from parser.in.h... ++ $(CopyXMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parser.h;%(Outputs) ++ Copying parser.h from parser.in.h... ++ $(CopyXMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parser.h;%(Outputs) ++ ++ ++ Copying parserInternals.h from parserInternals.in.h... ++ $(CopyXMLParserInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.h;%(Outputs) ++ Copying parserInternals.h from parserInternals.in.h... ++ $(CopyXMLParserInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.h;%(Outputs) ++ ++ ++ Copying pattern.h from pattern.in.h... ++ $(CopyXMLPatternH) ++ ..\..\gettext-tools\gnulib-lib\libxml\pattern.h;%(Outputs) ++ Copying pattern.h from pattern.in.h... ++ $(CopyXMLPatternH) ++ ..\..\gettext-tools\gnulib-lib\libxml\pattern.h;%(Outputs) ++ ++ ++ Copying relaxng.h from relaxng.in.h... ++ $(CopyXMLRelaxngH) ++ ..\..\gettext-tools\gnulib-lib\libxml\relaxng.h;%(Outputs) ++ Copying relaxng.h from relaxng.in.h... ++ $(CopyXMLRelaxngH) ++ ..\..\gettext-tools\gnulib-lib\libxml\relaxng.h;%(Outputs) ++ ++ ++ Copying SAX.h from SAX.in.h... ++ $(CopyXMLSAXH) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX.h;%(Outputs) ++ Copying SAX.h from SAX.in.h... ++ $(CopyXMLSAXH) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX.h;%(Outputs) ++ ++ ++ Copying SAX2.h from SAX2.in.h... ++ $(CopyXMLSAX2H) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX2.h;%(Outputs) ++ Copying SAX2.h from SAX2.in.h... ++ $(CopyXMLSAX2H) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX2.h;%(Outputs) ++ ++ ++ Copying schemasInternals.h from schemasInternals.in.h... ++ $(CopyXMLSchemasInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.h;%(Outputs) ++ Copying schemasInternals.h from schemasInternals.in.h... ++ $(CopyXMLSchemasInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.h;%(Outputs) ++ ++ ++ Copying schematron.h from schematron.in.h... ++ $(CopyXMLSchematronH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schematron.h;%(Outputs) ++ Copying schematron.h from schematron.in.h... ++ $(CopyXMLSchematronH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schematron.h;%(Outputs) ++ ++ ++ Copying threads.h from threads.in.h... ++ $(CopyXMLThreadsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\threads.h;%(Outputs) ++ Copying threads.h from threads.in.h... ++ $(CopyXMLThreadsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\threads.h;%(Outputs) ++ ++ ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ ++ ++ Copying uri.h from uri.in.h... ++ $(CopyXMLUriH) ++ ..\..\gettext-tools\gnulib-lib\libxml\uri.h;%(Outputs) ++ Copying uri.h from uri.in.h... ++ $(CopyXMLUriH) ++ ..\..\gettext-tools\gnulib-lib\libxml\uri.h;%(Outputs) ++ ++ ++ Copying valid.h from valid.in.h... ++ $(CopyXMLValidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\valid.h;%(Outputs) ++ Copying valid.h from valid.in.h... ++ $(CopyXMLValidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\valid.h;%(Outputs) ++ ++ ++ Copying xinclude.h from xinclude.in.h... ++ $(CopyXMLXincludeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xinclude.h;%(Outputs) ++ Copying xinclude.h from xinclude.in.h... ++ $(CopyXMLXincludeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xinclude.h;%(Outputs) ++ ++ ++ Copying xlink.h from xlink.in.h... ++ $(CopyXMLXlinkH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xlink.h;%(Outputs) ++ Copying xlink.h from xlink.in.h... ++ $(CopyXMLXlinkH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xlink.h;%(Outputs) ++ ++ ++ Copying xmlautomata.h from xmlautomata.in.h... ++ $(CopyXMLXMLAutomataH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.h;%(Outputs) ++ Copying xmlautomata.h from xmlautomata.in.h... ++ $(CopyXMLXMLAutomataH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.h;%(Outputs) ++ ++ ++ Copying xmlerror.h from xmlerror.in.h... ++ $(CopyXMLXMLErrorH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.h;%(Outputs) ++ Copying xmlerror.h from xmlerror.in.h... ++ $(CopyXMLXMLErrorH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.h;%(Outputs) ++ ++ ++ Copying xmlexports.h from xmlexports.in.h... ++ $(CopyXMLXMLExportsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.h;%(Outputs) ++ Copying xmlexports.h from xmlexports.in.h... ++ $(CopyXMLXMLExportsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.h;%(Outputs) ++ ++ ++ Copying xmlIO.h from xmlIO.in.h... ++ $(CopyXMLXMLIOH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.h;%(Outputs) ++ Copying xmlIO.h from xmlIO.in.h... ++ $(CopyXMLXMLIOH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.h;%(Outputs) ++ ++ ++ Copying xmlmemory.h from xmlmemory.in.h... ++ $(CopyXMLXMLMemoryH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.h;%(Outputs) ++ Copying xmlmemory.h from xmlmemory.in.h... ++ $(CopyXMLXMLMemoryH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.h;%(Outputs) ++ ++ ++ Copying xmlmodule.h from xmlmodule.in.h... ++ $(CopyXMLXMLModuleH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.h;%(Outputs) ++ Copying xmlmodule.h from xmlmodule.in.h... ++ $(CopyXMLXMLModuleH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.h;%(Outputs) ++ ++ ++ Copying xmlreader.h from xmlreader.in.h... ++ $(CopyXMLXMLReaderH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.h;%(Outputs) ++ Copying xmlreader.h from xmlreader.in.h... ++ $(CopyXMLXMLReaderH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.h;%(Outputs) ++ ++ ++ Copying xmlregexp.h from xmlregexp.in.h... ++ $(CopyXMLXMLRegexpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.h;%(Outputs) ++ Copying xmlregexp.h from xmlregexp.in.h... ++ $(CopyXMLXMLRegexpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.h;%(Outputs) ++ ++ ++ Copying xmlsave.h from xmlsave.in.h... ++ $(CopyXMLXMLSaveH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.h;%(Outputs) ++ Copying xmlsave.h from xmlsave.in.h... ++ $(CopyXMLXMLSaveH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.h;%(Outputs) ++ ++ ++ Copying xmlschemas.h from xmlschemas.in.h... ++ $(CopyXMLXMLSchemasH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.h;%(Outputs) ++ Copying xmlschemas.h from xmlschemas.in.h... ++ $(CopyXMLXMLSchemasH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.h;%(Outputs) ++ ++ ++ Copying xmlschemastypes.h from xmlschemastypes.in.h... ++ $(CopyXMLXMLSchemasTypesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.h;%(Outputs) ++ Copying xmlschemastypes.h from xmlschemastypes.in.h... ++ $(CopyXMLXMLSchemasTypesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.h;%(Outputs) ++ ++ ++ Copying xmlstring.h from xmlstring.in.h... ++ $(CopyXMLXMLStringH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.h;%(Outputs) ++ Copying xmlstring.h from xmlstring.in.h... ++ $(CopyXMLXMLStringH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.h;%(Outputs) ++ ++ ++ Copying xmlunicode.h from xmlunicode.in.h... ++ $(CopyXMLXMLUnicodeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.h;%(Outputs) ++ Copying xmlunicode.h from xmlunicode.in.h... ++ $(CopyXMLXMLUnicodeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.h;%(Outputs) ++ ++ ++ Copying xmlversion.h from xmlversion.in.h... ++ $(CopyXMLXMLVersionH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.h;%(Outputs) ++ Copying xmlversion.h from xmlversion.in.h... ++ $(CopyXMLXMLVersionH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.h;%(Outputs) ++ ++ ++ Copying xmlwriter.h from xmlwriter.in.h... ++ $(CopyXMLXMLWriterH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.h;%(Outputs) ++ Copying xmlwriter.h from xmlwriter.in.h... ++ $(CopyXMLXMLWriterH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.h;%(Outputs) ++ ++ ++ Copying xpath.h from xpath.in.h... ++ $(CopyXMLXpathH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpath.h;%(Outputs) ++ Copying xpath.h from xpath.in.h... ++ $(CopyXMLXpathH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpath.h;%(Outputs) ++ ++ ++ Copying xpathInternals.h from xpathInternals.in.h... ++ $(CopyXMLXPathInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.h;%(Outputs) ++ Copying xpathInternals.h from xpathInternals.in.h... ++ $(CopyXMLXPathInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.h;%(Outputs) ++ ++ ++ Copying xpointer.h from xpointer.in.h... ++ $(CopyXMLXPointerH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpointer.h;%(Outputs) ++ Copying xpointer.h from xpointer.in.h... ++ $(CopyXMLXPointerH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpointer.h;%(Outputs) ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/libxml_rpl.vcxproj.filters gettext-0.19/win32/vs14/libxml_rpl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/libxml_rpl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/libxml_rpl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,112 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgattrib.vcxproj gettext-0.19/win32/vs14/msgattrib.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgattrib.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgattrib.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397} ++ msgattrib ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgattrib.vcxproj.filters gettext-0.19/win32/vs14/msgattrib.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgattrib.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgattrib.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgcat.vcxproj gettext-0.19/win32/vs14/msgcat.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgcat.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgcat.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {47F1E067-3DAC-4225-A011-7FD969962CDE} ++ msgcat ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgcat.vcxproj.filters gettext-0.19/win32/vs14/msgcat.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgcat.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgcat.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgcmp.vcxproj gettext-0.19/win32/vs14/msgcmp.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgcmp.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgcmp.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,187 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D} ++ msgcmp ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgcmp.vcxproj.filters gettext-0.19/win32/vs14/msgcmp.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgcmp.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgcmp.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,24 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgcomm.vcxproj gettext-0.19/win32/vs14/msgcomm.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgcomm.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgcomm.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9} ++ msgcomm ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgcomm.vcxproj.filters gettext-0.19/win32/vs14/msgcomm.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgcomm.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgcomm.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgconv.vcxproj gettext-0.19/win32/vs14/msgconv.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgconv.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgconv.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4} ++ msgconv ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgconv.vcxproj.filters gettext-0.19/win32/vs14/msgconv.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgconv.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgconv.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgen.vcxproj gettext-0.19/win32/vs14/msgen.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgen.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgen.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE} ++ msgen ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgen.vcxproj.filters gettext-0.19/win32/vs14/msgen.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgen.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgen.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgexec.vcxproj gettext-0.19/win32/vs14/msgexec.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgexec.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgexec.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6} ++ msgexec ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgexec.vcxproj.filters gettext-0.19/win32/vs14/msgexec.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgexec.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgexec.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgfilter.vcxproj gettext-0.19/win32/vs14/msgfilter.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgfilter.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgfilter.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,188 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4BFE600E-5D03-4E36-875B-68326C55A530} ++ msgfilter ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgfilter.vcxproj.filters gettext-0.19/win32/vs14/msgfilter.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgfilter.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgfilter.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,25 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgfmt.vcxproj gettext-0.19/win32/vs14/msgfmt.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgfmt.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgfmt.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,194 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {10D98932-547A-4985-9F33-9671579A0309} ++ msgfmt ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgfmt.vcxproj.filters gettext-0.19/win32/vs14/msgfmt.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgfmt.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgfmt.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,31 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msggrep.vcxproj gettext-0.19/win32/vs14/msggrep.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msggrep.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msggrep.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,190 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B} ++ msggrep ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {a6b79d6d-85a8-4f82-aef0-eced26168447} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msggrep.vcxproj.filters gettext-0.19/win32/vs14/msggrep.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msggrep.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msggrep.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msginit.vcxproj gettext-0.19/win32/vs14/msginit.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msginit.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msginit.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,190 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {9982C8ED-7528-495E-9665-D627538953B9} ++ msginit ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msginit.vcxproj.filters gettext-0.19/win32/vs14/msginit.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msginit.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msginit.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,27 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgmerge.vcxproj gettext-0.19/win32/vs14/msgmerge.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgmerge.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgmerge.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,189 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {A79BB466-B66A-4CAA-B72C-E455824FB047} ++ msgmerge ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgmerge.vcxproj.filters gettext-0.19/win32/vs14/msgmerge.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgmerge.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgmerge.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,26 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgunfmt.vcxproj gettext-0.19/win32/vs14/msgunfmt.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msgunfmt.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgunfmt.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,191 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6} ++ msgunfmt ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msgunfmt.vcxproj.filters gettext-0.19/win32/vs14/msgunfmt.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msgunfmt.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msgunfmt.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,28 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msguniq.vcxproj gettext-0.19/win32/vs14/msguniq.vcxproj +--- gettext-0.19-unpatched/win32/vs14/msguniq.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msguniq.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {CF9D4289-B95B-4800-8AD5-193729257DDA} ++ msguniq ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/msguniq.vcxproj.filters gettext-0.19/win32/vs14/msguniq.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/msguniq.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/msguniq.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/ngettext.vcxproj gettext-0.19/win32/vs14/ngettext.vcxproj +--- gettext-0.19-unpatched/win32/vs14/ngettext.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/ngettext.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,182 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B} ++ ngettext ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {ba6dcb6c-f80e-46c5-8f7e-c03ff251a74f} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/ngettext.vcxproj.filters gettext-0.19/win32/vs14/ngettext.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/ngettext.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/ngettext.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/recode-sr-latin.vcxproj gettext-0.19/win32/vs14/recode-sr-latin.vcxproj +--- gettext-0.19-unpatched/win32/vs14/recode-sr-latin.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/recode-sr-latin.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,183 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4} ++ recodesrlatin ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ Application ++ v140 ++ Unicode ++ true ++ ++ ++ Application ++ v140 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/recode-sr-latin.vcxproj.filters gettext-0.19/win32/vs14/recode-sr-latin.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/recode-sr-latin.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/recode-sr-latin.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,24 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/xgettext.vcxproj gettext-0.19/win32/vs14/xgettext.vcxproj +--- gettext-0.19-unpatched/win32/vs14/xgettext.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/xgettext.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,207 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162} ++ xgettext ++ Win32Proj ++ ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ Application ++ v140 ++ MultiByte ++ true ++ ++ ++ Application ++ v140 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs14/xgettext.vcxproj.filters gettext-0.19/win32/vs14/xgettext.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs14/xgettext.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs14/xgettext.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,44 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/asprintf.vcxproj gettext-0.19/win32/vs15/asprintf.vcxproj +--- gettext-0.19-unpatched/win32/vs15/asprintf.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/asprintf.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,183 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {3C86CBE3-57D1-416C-8143-3958768CB45D} ++ asprintf ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ Unicode ++ ++ ++ DynamicLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ ++ ++ ++ Disabled ++ _DEBUG;$(LibAsprintfDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(LibAsprintfDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ _DEBUG;$(LibAsprintfDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(LibAsprintfDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/asprintf.vcxproj.filters gettext-0.19/win32/vs15/asprintf.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/asprintf.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/asprintf.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,36 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ ++ Sources ++ ++ ++ Sources ++ ++ ++ Sources ++ ++ ++ Sources ++ ++ ++ ++ ++ Resource Files ++ ++ ++ +\ Brak znaku nowej linii na końcu pliku +diff -Nru gettext-0.19-unpatched/win32/vs15/envsubst.vcxproj gettext-0.19/win32/vs15/envsubst.vcxproj +--- gettext-0.19-unpatched/win32/vs15/envsubst.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/envsubst.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,182 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {0092D7C6-09BE-4398-99BC-23B16377C59D} ++ envsubst ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {ba6dcb6c-f80e-46c5-8f7e-c03ff251a74f} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/envsubst.vcxproj.filters gettext-0.19/win32/vs15/envsubst.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/envsubst.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/envsubst.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-asprintf-runtime-build-defines.props gettext-0.19/win32/vs15/gettext-asprintf-runtime-build-defines.props +--- gettext-0.19-unpatched/win32/vs15/gettext-asprintf-runtime-build-defines.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-asprintf-runtime-build-defines.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,24 @@ ++ ++ ++ ++ ++ ++ ++ IN_LIBASPRINTF;HAVE_CONFIG_H ++ ++ ++ <_PropertySheetDisplayName>gettextasprintfbuilddefinesprops ++ $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ ++ $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ ++ ++ ++ ++ ..\..\gettext-runtime\libasprintf\msvc;..\..\gettext-runtime\libasprintf;..\..\gettext-runtime\msvc;..\..\gettext-runtime;%(AdditionalIncludeDirectories) ++ ++ ++ ++ ++ $(LibAsprintfDefines) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-install.props gettext-0.19/win32/vs15/gettext-install.props +--- gettext-0.19-unpatched/win32/vs15/gettext-install.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-install.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,58 @@ ++ ++ ++ ++ ++ ++ ++ $(SolutionDir)$(Configuration)\$(Platform)\bin ++ ++mkdir $(CopyDir) ++ ++mkdir $(CopyDir)\bin ++copy $(BinDir)\asprintf.dll $(CopyDir)\bin ++copy $(BinDir)\asprintf.pdb $(CopyDir)\bin ++copy $(BinDir)\intl.dll $(CopyDir)\bin ++copy $(BinDir)\intl.pdb $(CopyDir)\bin ++copy $(BinDir)\envsubst.exe $(CopyDir)\bin ++copy $(BinDir)\envsubst.pdb $(CopyDir)\bin ++copy $(BinDir)\gettext.exe $(CopyDir)\bin ++copy $(BinDir)\gettext.pdb $(CopyDir)\bin ++copy $(BinDir)\ngettext.exe $(CopyDir)\bin ++copy $(BinDir)\ngettext.pdb $(CopyDir)\bin ++copy $(BinDir)\gettextpo.dll $(CopyDir)\bin ++copy $(BinDir)\gettextpo.pdb $(CopyDir)\bin ++copy $(BinDir)\gettextlib.dll $(CopyDir)\bin ++copy $(BinDir)\gettextlib.pdb $(CopyDir)\bin ++copy $(BinDir)\gettextsrc.dll $(CopyDir)\bin ++copy $(BinDir)\gettextsrc.pdb $(CopyDir)\bin ++copy $(BinDir)\msg*.exe $(CopyDir)\bin ++copy $(BinDir)\msg*.pdb $(CopyDir)\bin ++copy $(BinDir)\xgettext.exe $(CopyDir)\bin ++copy $(BinDir)\xgettext.pdb $(CopyDir)\bin ++copy $(BinDir)\recode-sr-latin.exe $(CopyDir)\bin ++copy $(BinDir)\recode-sr-latin.pdb $(CopyDir)\bin ++ ++mkdir $(CopyDir)\lib ++copy $(BinDir)\asprintf.lib $(CopyDir)\lib ++copy $(BinDir)\intl.lib $(CopyDir)\lib ++copy $(BinDir)\gettextpo.lib $(CopyDir)\lib ++ ++mkdir $(CopyDir)\include ++copy ..\..\gettext-runtime\libasprintf\msvc\autosprintf.h $(CopyDir)\include ++copy ..\..\gettext-runtime\intl\msvc\libgnuintl.h $(CopyDir)\include\libintl.h ++copy ..\..\gettext-tools\libgettextpo\msvc\gettext-po.h $(CopyDir)\include ++ ++ ++ ++ <_PropertySheetDisplayName>gettextinstallprops ++ ++ ++ ++ ++ $(BinDir) ++ ++ ++ $(GettextDoInstall) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-install.vcxproj gettext-0.19/win32/vs15/gettext-install.vcxproj +--- gettext-0.19-unpatched/win32/vs15/gettext-install.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-install.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,199 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83} ++ gettextinstall ++ ++ ++ ++ Utility ++ v141 ++ MultiByte ++ true ++ ++ ++ Utility ++ v141 ++ MultiByte ++ ++ ++ Utility ++ v141 ++ MultiByte ++ true ++ ++ ++ Utility ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Installing Build Results... ++ $(GettextDoInstall) ++ some_files;%(Outputs) ++ Installing Build Results... ++ $(GettextDoInstall) ++ some_files;%(Outputs) ++ ++ ++ ++ ++ {3c86cbe3-57d1-416c-8143-3958768cb45d} ++ false ++ ++ ++ {0092d7c6-09be-4398-99bc-23b16377c59d} ++ false ++ ++ ++ {cc50d78a-91d8-48b1-82b5-2c5a365ffae9} ++ false ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {5c383c79-d266-42dd-9c1a-6a5dc133ab3f} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ {4a075f7f-8a3c-43ab-9278-2408f84a9397} ++ false ++ ++ ++ {47f1e067-3dac-4225-a011-7fd969962cde} ++ false ++ ++ ++ {8d2ee6a3-8f3c-4cdc-9319-40f7642f7d5d} ++ false ++ ++ ++ {9c2b7992-af0d-428f-b86a-bc24233b32b9} ++ false ++ ++ ++ {4e533fc2-5ae7-4c6b-a312-b8452c0daac4} ++ false ++ ++ ++ {bd69e250-2d16-4826-9424-deeed8e08dae} ++ false ++ ++ ++ {0a83b0ba-6a99-4e09-bea0-8061347d48c6} ++ false ++ ++ ++ {4bfe600e-5d03-4e36-875b-68326c55a530} ++ false ++ ++ ++ {10d98932-547a-4985-9f33-9671579a0309} ++ false ++ ++ ++ {241bebf9-7aae-4bf4-b803-0abb7633773b} ++ false ++ ++ ++ {9982c8ed-7528-495e-9665-d627538953b9} ++ false ++ ++ ++ {a79bb466-b66a-4caa-b72c-e455824fb047} ++ false ++ ++ ++ {3e00b0e2-87b4-416c-b9a4-07fa9a17a4e6} ++ false ++ ++ ++ {cf9d4289-b95b-4800-8ad5-193729257dda} ++ false ++ ++ ++ {2f40c8d6-fc5c-406d-bb0d-4a1e1ddab01b} ++ false ++ ++ ++ {5e4b0f1e-74d0-4154-9f8d-481fe444fca4} ++ false ++ ++ ++ {93c6aba2-b4d6-4649-9ffe-22d36ca97162} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettextlib.vcxproj gettext-0.19/win32/vs15/gettextlib.vcxproj +--- gettext-0.19-unpatched/win32/vs15/gettextlib.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettextlib.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,350 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC} ++ gettextlib ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextLibDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextLibDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextLibDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextLibDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextlib.def ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ CompileAsCpp ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {b8a2ca14-ffba-4c52-bf3f-dcd77d57c8de} ++ false ++ ++ ++ {2045108a-a97f-43de-99cd-81635075c78a} ++ false ++ ++ ++ {4c779a72-8dcc-4896-a8d7-a17fa6019682} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettextlib.vcxproj.filters gettext-0.19/win32/vs15/gettextlib.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/gettextlib.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettextlib.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,180 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettextpo.vcxproj gettext-0.19/win32/vs15/gettextpo.vcxproj +--- gettext-0.19-unpatched/win32/vs15/gettextpo.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettextpo.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,229 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F} ++ gettextpo ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextPoDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextPoDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextPoDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextPoDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {49313111-c26e-469f-9ccf-387ae306abcd} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettextpo.vcxproj.filters gettext-0.19/win32/vs15/gettextpo.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/gettextpo.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettextpo.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,70 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-runtime-build-defines.props gettext-0.19/win32/vs15/gettext-runtime-build-defines.props +--- gettext-0.19-unpatched/win32/vs15/gettext-runtime-build-defines.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-runtime-build-defines.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,44 @@ ++ ++ ++ ++ ++ ++ ++ INSTALLDIR="$(InstallRoot)";LOCALEDIR="$(DataDir)/locale";LIBDIR="$(LibDir)";ENABLE_RELOCATABLE=1;ICONV_CONST=const;DEPENDS_ON_LIBICONV=1 ++ $(BaseDefines);LOCALE_ALIAS_PATH="";BUILDING_LIBINTL;BUILDING_DLL;IN_LIBINTL;IN_LIBRARY;NO_XMALLOC;set_relocation_prefix=libintl_set_relocation_prefix;relocate=libintl_relocate ++ $(BaseDefines);LOCALE_ALIAS_PATH="$(DataDir)/locale";GETTEXTJEXEDIR="$(LibDir)/gettext";BISON_LOCALEDIR="$(DataDir)/locale";GETTEXTDATADIR="$(DataDir)";GETTEXTJAR="$(DataDir)/gettext/gettext.jar";GETTEXTDATADIR="$(DataDir)/gettext";PROJECTSDIR="$(DataDir)/gettext";PKGDATADIR="$(DataDir)/gettext" ++ $(GettextRuntimeToolsBaseDefines);EXEEXT=".exe";GETTEXT_STATIC_ITEM ++ ..\..\gettext-runtime\gnulib-lib\msvc;..\..\gettext-runtime\gnulib-lib ++ ++ ++ <_PropertySheetDisplayName>gettextbuilddefinesprops ++ $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ ++ $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ ++ ++ ++ ++ ..\..\gettext-runtime\intl\msvc;..\..\gettext-runtime\intl;..\..\gettext-runtime;..\..\gettext-runtime\msvc;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories) ++ ++ ++ iconv.lib;%(AdditionalDependencies) ++ $(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories) ++ ++ ++ ++ ++ $(BaseDefines) ++ ++ ++ $(GettextIntlDefines) ++ ++ ++ $(GettextRuntimeToolsBaseDefines) ++ ++ ++ $(GettextRuntimeToolsDefines) ++ ++ ++ $(GettextRuntimeGnulibIncludeDirs) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext.sln gettext-0.19/win32/vs15/gettext.sln +--- gettext-0.19-unpatched/win32/vs15/gettext.sln 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext.sln 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,326 @@ ++ ++Microsoft Visual Studio Solution File, Format Version 12.00 ++# Visual Studio 15 ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettext", "gettext.vcxproj", "{CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intl", "intl.vcxproj", "{C04F90E5-5865-4159-A5AF-6FF9FF089B0F}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asprintf", "asprintf.vcxproj", "{3C86CBE3-57D1-416C-8143-3958768CB45D}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grt", "grt.vcxproj", "{BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "envsubst", "envsubst.vcxproj", "{0092D7C6-09BE-4398-99BC-23B16377C59D}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ngettext", "ngettext.vcxproj", "{2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettextpo", "gettextpo.vcxproj", "{5C383C79-D266-42DD-9C1A-6A5DC133AB3F}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gnu", "gnu.vcxproj", "{49313111-C26E-469F-9CCF-387AE306ABCD}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib_rpl", "glib_rpl.vcxproj", "{B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libxml_rpl", "libxml_rpl.vcxproj", "{4C779A72-8DCC-4896-A8D7-A17FA6019682}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcroco_rpl", "libcroco_rpl.vcxproj", "{2045108A-A97F-43DE-99CD-81635075C78A}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettextsrc", "gettextsrc.vcxproj", "{38D95DA9-249E-4E67-BA61-AA56CD569E11}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettextlib", "gettextlib.vcxproj", "{C95B3A8E-C58B-4C74-96EA-2016127EB1EC}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgcmp", "msgcmp.vcxproj", "{8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgfmt", "msgfmt.vcxproj", "{10D98932-547A-4985-9F33-9671579A0309}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgmerge", "msgmerge.vcxproj", "{A79BB466-B66A-4CAA-B72C-E455824FB047}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgunfmt", "msgunfmt.vcxproj", "{3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xgettext", "xgettext.vcxproj", "{93C6ABA2-B4D6-4649-9FFE-22D36CA97162}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recode-sr-latin", "recode-sr-latin.vcxproj", "{5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msguniq", "msguniq.vcxproj", "{CF9D4289-B95B-4800-8AD5-193729257DDA}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msginit", "msginit.vcxproj", "{9982C8ED-7528-495E-9665-D627538953B9}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgfilter", "msgfilter.vcxproj", "{4BFE600E-5D03-4E36-875B-68326C55A530}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgexec", "msgexec.vcxproj", "{0A83B0BA-6A99-4E09-BEA0-8061347D48C6}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgen", "msgen.vcxproj", "{BD69E250-2D16-4826-9424-DEEED8E08DAE}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgconv", "msgconv.vcxproj", "{4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgcomm", "msgcomm.vcxproj", "{9C2B7992-AF0D-428F-B86A-BC24233B32B9}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgcat", "msgcat.vcxproj", "{47F1E067-3DAC-4225-A011-7FD969962CDE}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgattrib", "msgattrib.vcxproj", "{4A075F7F-8A3C-43AB-9278-2408F84A9397}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grep", "grep.vcxproj", "{A6B79D6D-85A8-4F82-AEF0-ECED26168447}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msggrep", "msggrep.vcxproj", "{241BEBF9-7AAE-4BF4-B803-0ABB7633773B}" ++EndProject ++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettext-install", "gettext-install.vcxproj", "{A155CC73-1E70-4CF2-8E42-7053F0753A83}" ++EndProject ++Global ++ GlobalSection(SolutionConfigurationPlatforms) = preSolution ++ Debug|Win32 = Debug|Win32 ++ Debug|x64 = Debug|x64 ++ Release|Win32 = Release|Win32 ++ Release|x64 = Release|x64 ++ EndGlobalSection ++ GlobalSection(ProjectConfigurationPlatforms) = postSolution ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|Win32.Build.0 = Debug|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|x64.ActiveCfg = Debug|x64 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Debug|x64.Build.0 = Debug|x64 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|Win32.ActiveCfg = Release|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|Win32.Build.0 = Release|Win32 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|x64.ActiveCfg = Release|x64 ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9}.Release|x64.Build.0 = Release|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|Win32.Build.0 = Debug|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|x64.ActiveCfg = Debug|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Debug|x64.Build.0 = Debug|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|Win32.ActiveCfg = Release|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|Win32.Build.0 = Release|Win32 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|x64.ActiveCfg = Release|x64 ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F}.Release|x64.Build.0 = Release|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|Win32.Build.0 = Debug|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|x64.ActiveCfg = Debug|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Debug|x64.Build.0 = Debug|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|Win32.ActiveCfg = Release|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|Win32.Build.0 = Release|Win32 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|x64.ActiveCfg = Release|x64 ++ {3C86CBE3-57D1-416C-8143-3958768CB45D}.Release|x64.Build.0 = Release|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|Win32.Build.0 = Debug|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|x64.ActiveCfg = Debug|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Debug|x64.Build.0 = Debug|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|Win32.ActiveCfg = Release|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|Win32.Build.0 = Release|Win32 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|x64.ActiveCfg = Release|x64 ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F}.Release|x64.Build.0 = Release|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|Win32.Build.0 = Debug|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|x64.ActiveCfg = Debug|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Debug|x64.Build.0 = Debug|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|Win32.ActiveCfg = Release|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|Win32.Build.0 = Release|Win32 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|x64.ActiveCfg = Release|x64 ++ {0092D7C6-09BE-4398-99BC-23B16377C59D}.Release|x64.Build.0 = Release|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|Win32.Build.0 = Debug|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|x64.ActiveCfg = Debug|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Debug|x64.Build.0 = Debug|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|Win32.ActiveCfg = Release|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|Win32.Build.0 = Release|Win32 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|x64.ActiveCfg = Release|x64 ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B}.Release|x64.Build.0 = Release|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|Win32.Build.0 = Debug|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|x64.ActiveCfg = Debug|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Debug|x64.Build.0 = Debug|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|Win32.ActiveCfg = Release|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|Win32.Build.0 = Release|Win32 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|x64.ActiveCfg = Release|x64 ++ {5C383C79-D266-42DD-9C1A-6A5DC133AB3F}.Release|x64.Build.0 = Release|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|Win32.Build.0 = Debug|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|x64.ActiveCfg = Debug|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Debug|x64.Build.0 = Debug|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|Win32.ActiveCfg = Release|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|Win32.Build.0 = Release|Win32 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|x64.ActiveCfg = Release|x64 ++ {49313111-C26E-469F-9CCF-387AE306ABCD}.Release|x64.Build.0 = Release|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|Win32.Build.0 = Debug|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|x64.ActiveCfg = Debug|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Debug|x64.Build.0 = Debug|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|Win32.ActiveCfg = Release|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|Win32.Build.0 = Release|Win32 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|x64.ActiveCfg = Release|x64 ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE}.Release|x64.Build.0 = Release|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|Win32.Build.0 = Debug|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|x64.ActiveCfg = Debug|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Debug|x64.Build.0 = Debug|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|Win32.ActiveCfg = Release|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|Win32.Build.0 = Release|Win32 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|x64.ActiveCfg = Release|x64 ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682}.Release|x64.Build.0 = Release|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|Win32.Build.0 = Debug|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|x64.ActiveCfg = Debug|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Debug|x64.Build.0 = Debug|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|Win32.ActiveCfg = Release|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|Win32.Build.0 = Release|Win32 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|x64.ActiveCfg = Release|x64 ++ {2045108A-A97F-43DE-99CD-81635075C78A}.Release|x64.Build.0 = Release|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|Win32.Build.0 = Debug|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|x64.ActiveCfg = Debug|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Debug|x64.Build.0 = Debug|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|Win32.ActiveCfg = Release|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|Win32.Build.0 = Release|Win32 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|x64.ActiveCfg = Release|x64 ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11}.Release|x64.Build.0 = Release|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|Win32.Build.0 = Debug|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|x64.ActiveCfg = Debug|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Debug|x64.Build.0 = Debug|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|Win32.ActiveCfg = Release|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|Win32.Build.0 = Release|Win32 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|x64.ActiveCfg = Release|x64 ++ {C95B3A8E-C58B-4C74-96EA-2016127EB1EC}.Release|x64.Build.0 = Release|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|Win32.Build.0 = Debug|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|x64.ActiveCfg = Debug|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Debug|x64.Build.0 = Debug|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|Win32.ActiveCfg = Release|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|Win32.Build.0 = Release|Win32 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|x64.ActiveCfg = Release|x64 ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D}.Release|x64.Build.0 = Release|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|Win32.Build.0 = Debug|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|x64.ActiveCfg = Debug|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Debug|x64.Build.0 = Debug|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|Win32.ActiveCfg = Release|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|Win32.Build.0 = Release|Win32 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|x64.ActiveCfg = Release|x64 ++ {10D98932-547A-4985-9F33-9671579A0309}.Release|x64.Build.0 = Release|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|Win32.Build.0 = Debug|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|x64.ActiveCfg = Debug|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Debug|x64.Build.0 = Debug|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|Win32.ActiveCfg = Release|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|Win32.Build.0 = Release|Win32 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|x64.ActiveCfg = Release|x64 ++ {A79BB466-B66A-4CAA-B72C-E455824FB047}.Release|x64.Build.0 = Release|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|Win32.Build.0 = Debug|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|x64.ActiveCfg = Debug|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Debug|x64.Build.0 = Debug|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|Win32.ActiveCfg = Release|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|Win32.Build.0 = Release|Win32 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|x64.ActiveCfg = Release|x64 ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6}.Release|x64.Build.0 = Release|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|Win32.Build.0 = Debug|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|x64.ActiveCfg = Debug|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Debug|x64.Build.0 = Debug|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|Win32.ActiveCfg = Release|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|Win32.Build.0 = Release|Win32 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|x64.ActiveCfg = Release|x64 ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162}.Release|x64.Build.0 = Release|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|Win32.Build.0 = Debug|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|x64.ActiveCfg = Debug|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Debug|x64.Build.0 = Debug|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|Win32.ActiveCfg = Release|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|Win32.Build.0 = Release|Win32 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|x64.ActiveCfg = Release|x64 ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4}.Release|x64.Build.0 = Release|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|Win32.Build.0 = Debug|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|x64.ActiveCfg = Debug|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Debug|x64.Build.0 = Debug|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|Win32.ActiveCfg = Release|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|Win32.Build.0 = Release|Win32 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|x64.ActiveCfg = Release|x64 ++ {CF9D4289-B95B-4800-8AD5-193729257DDA}.Release|x64.Build.0 = Release|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|Win32.Build.0 = Debug|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|x64.ActiveCfg = Debug|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Debug|x64.Build.0 = Debug|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|Win32.ActiveCfg = Release|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|Win32.Build.0 = Release|Win32 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|x64.ActiveCfg = Release|x64 ++ {9982C8ED-7528-495E-9665-D627538953B9}.Release|x64.Build.0 = Release|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|Win32.Build.0 = Debug|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|x64.ActiveCfg = Debug|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Debug|x64.Build.0 = Debug|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|Win32.ActiveCfg = Release|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|Win32.Build.0 = Release|Win32 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|x64.ActiveCfg = Release|x64 ++ {4BFE600E-5D03-4E36-875B-68326C55A530}.Release|x64.Build.0 = Release|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|Win32.Build.0 = Debug|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|x64.ActiveCfg = Debug|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Debug|x64.Build.0 = Debug|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|Win32.ActiveCfg = Release|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|Win32.Build.0 = Release|Win32 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|x64.ActiveCfg = Release|x64 ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6}.Release|x64.Build.0 = Release|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|Win32.Build.0 = Debug|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|x64.ActiveCfg = Debug|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Debug|x64.Build.0 = Debug|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|Win32.ActiveCfg = Release|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|Win32.Build.0 = Release|Win32 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|x64.ActiveCfg = Release|x64 ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE}.Release|x64.Build.0 = Release|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|Win32.Build.0 = Debug|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|x64.ActiveCfg = Debug|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Debug|x64.Build.0 = Debug|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|Win32.ActiveCfg = Release|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|Win32.Build.0 = Release|Win32 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|x64.ActiveCfg = Release|x64 ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4}.Release|x64.Build.0 = Release|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|Win32.Build.0 = Debug|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|x64.ActiveCfg = Debug|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Debug|x64.Build.0 = Debug|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|Win32.ActiveCfg = Release|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|Win32.Build.0 = Release|Win32 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|x64.ActiveCfg = Release|x64 ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9}.Release|x64.Build.0 = Release|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|Win32.Build.0 = Debug|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|x64.ActiveCfg = Debug|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Debug|x64.Build.0 = Debug|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|Win32.ActiveCfg = Release|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|Win32.Build.0 = Release|Win32 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|x64.ActiveCfg = Release|x64 ++ {47F1E067-3DAC-4225-A011-7FD969962CDE}.Release|x64.Build.0 = Release|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|Win32.Build.0 = Debug|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|x64.ActiveCfg = Debug|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Debug|x64.Build.0 = Debug|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|Win32.ActiveCfg = Release|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|Win32.Build.0 = Release|Win32 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|x64.ActiveCfg = Release|x64 ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397}.Release|x64.Build.0 = Release|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|Win32.Build.0 = Debug|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|x64.ActiveCfg = Debug|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Debug|x64.Build.0 = Debug|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|Win32.ActiveCfg = Release|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|Win32.Build.0 = Release|Win32 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|x64.ActiveCfg = Release|x64 ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447}.Release|x64.Build.0 = Release|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|Win32.Build.0 = Debug|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|x64.ActiveCfg = Debug|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Debug|x64.Build.0 = Debug|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|Win32.ActiveCfg = Release|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|Win32.Build.0 = Release|Win32 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|x64.ActiveCfg = Release|x64 ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B}.Release|x64.Build.0 = Release|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|Win32.ActiveCfg = Debug|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|Win32.Build.0 = Debug|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|x64.ActiveCfg = Debug|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Debug|x64.Build.0 = Debug|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|Win32.ActiveCfg = Release|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|Win32.Build.0 = Release|Win32 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|x64.ActiveCfg = Release|x64 ++ {A155CC73-1E70-4CF2-8E42-7053F0753A83}.Release|x64.Build.0 = Release|x64 ++ EndGlobalSection ++ GlobalSection(SolutionProperties) = preSolution ++ HideSolutionNode = FALSE ++ EndGlobalSection ++EndGlobal +diff -Nru gettext-0.19-unpatched/win32/vs15/gettextsrc.vcxproj gettext-0.19/win32/vs15/gettextsrc.vcxproj +--- gettext-0.19-unpatched/win32/vs15/gettextsrc.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettextsrc.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,247 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {38D95DA9-249E-4E67-BA61-AA56CD569E11} ++ gettextsrc ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextSrcDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextSrcDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextSrcDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextSrcDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ..\gettextsrc.def ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettextsrc.vcxproj.filters gettext-0.19/win32/vs15/gettextsrc.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/gettextsrc.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettextsrc.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,84 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-tools-build-defines.props gettext-0.19/win32/vs15/gettext-tools-build-defines.props +--- gettext-0.19-unpatched/win32/vs15/gettext-tools-build-defines.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-tools-build-defines.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,76 @@ ++ ++ ++ ++ ++ ++ ++ INSTALLDIR="$(InstallRoot)";EXEEXT=".exe";LOCALEDIR="$(DataDir)/locale";LOCALE_ALIAS_PATH="$(DataDir)/locale";LIBDIR="$(LibDir)";GETTEXTJEXEDIR="$(LibDir)/gettext";BISON_LOCALEDIR="$(DataDir)/locale";GETTEXTDATADIR="$(DataDir)";GETTEXTJAR="$(DataDir)/gettext/gettext.jar";GETTEXTDATADIR="$(DataDir)/gettext";PROJECTSDIR="$(DataDir)/gettext";PKGDATADIR="$(DataDir)/gettext";ENABLE_RELOCATABLE=1;ICONV_CONST=const;DEPENDS_ON_LIBICONV=1 ++ IN_LIBGETTEXTPO ++ IN_GETTEXTSRC;GETTEXTDATADIR="$(DataDir)" ++ IN_GETTEXTLIB;BUILDING_DLL;DLL_VARIABLE=__declspec(dllexport);$(BaseDefines) ++ ..\..\gettext-tools\libgettextpo\msvc;..\..\gettext-tools\libgettextpo ++ ..\..\gettext-tools\gnulib-lib\msvc;..\..\gettext-tools\gnulib-lib ++ $(GettextLibBaseIncludeDirs);..\..\gettext-tools\gnulib-lib\libcroco;$(GettextToolsBaseIncludeDir) ++ ..\..\gettext-tools\src;..\..\gettext-runtime\intl\msvc;..\..\gettext-runtime\intl ++ $(GettextLibBaseIncludeDirs);$(GettextSrcBaseIncludeDirs) ++ ..\..\gettext-tools\libgrep;$(GettextSrcIncludeDirs) ++ $(GettextPoBaseIncludeDirs);$(GettextSrcBaseIncludeDirs) ++ $(BaseDefines);GETTEXT_STATIC_ITEM ++ $(BaseDefines);IN_GETTEXT_TOOLS_LIBGREP=1;_GNU_SOURCE ++ ++ ++ <_PropertySheetDisplayName>gettexttoolsbuilddefinesprops ++ $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ ++ $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ ++ ++ ++ ++ ..\..\gettext-tools\msvc;..\..\gettext-tools;..\..\gettext-runtime\intl\msvc;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories) ++ ++ ++ iconv.lib;%(AdditionalDependencies) ++ $(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories) ++ ++ ++ ++ ++ $(BaseDefines) ++ ++ ++ $(GettextPoDefines) ++ ++ ++ $(GettextSrcDefines) ++ ++ ++ $(GettextLibDefines) ++ ++ ++ $(GettextPoBaseIncludeDirs) ++ ++ ++ $(GettextLibBaseIncludeDirs) ++ ++ ++ $(GettextLibIncludeDirs) ++ ++ ++ $(GettextSrcBaseIncludeDirs) ++ ++ ++ $(GettextSrcIncludeDirs) ++ ++ ++ $(GettextGrepIncludeDirs) ++ ++ ++ $(GettextPoIncludeDirs) ++ ++ ++ $(GettextToolsDefines) ++ ++ ++ $(LibGrepDefines) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-tools-copy-glibh.props gettext-0.19/win32/vs15/gettext-tools-copy-glibh.props +--- gettext-0.19-unpatched/win32/vs15/gettext-tools-copy-glibh.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-tools-copy-glibh.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,46 @@ ++ ++ ++ ++ ++ ++ ++ copy ..\..\gettext-tools\gnulib-lib\glib.in.h ..\..\gettext-tools\gnulib-lib\glib.h ++ copy ..\..\gettext-tools\gnulib-lib\glibconfig.in.h ..\..\gettext-tools\gnulib-lib\glibconfig.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\ghash.in.h ..\..\gettext-tools\gnulib-lib\glib\ghash.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\glist.in.h ..\..\gettext-tools\gnulib-lib\glib\glist.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gprimes.in.h ..\..\gettext-tools\gnulib-lib\glib\gprimes.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.in.h ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gstring.in.h ..\..\gettext-tools\gnulib-lib\glib\gstring.h ++ copy ..\..\gettext-tools\gnulib-lib\glib\gtypes.in.h ..\..\gettext-tools\gnulib-lib\glib\gtypes.h ++ ++ ++ <_PropertySheetDisplayName>gettexttoolscopyglibhsprops ++ ++ ++ ++ ++ $(CopyGLibH) ++ ++ ++ $(CopyGLibConfigH) ++ ++ ++ $(CopyGHashH) ++ ++ ++ $(CopyGListH) ++ ++ ++ $(CopyGPrimesH) ++ ++ ++ $(CopyGStrfuncsH) ++ ++ ++ $(CopyGStringH) ++ ++ ++ $(CopyGTypesH) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-tools-copy-xmlh.props gettext-0.19/win32/vs15/gettext-tools-copy-xmlh.props +--- gettext-0.19-unpatched/win32/vs15/gettext-tools-copy-xmlh.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-tools-copy-xmlh.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,202 @@ ++ ++ ++ ++ ++ ++ ++ copy ..\..\gettext-tools\gnulib-lib\libxml\c14n.in.h ..\..\gettext-tools\gnulib-lib\libxml\c14n.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\catalog.in.h ..\..\gettext-tools\gnulib-lib\libxml\catalog.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\chvalid.in.h ..\..\gettext-tools\gnulib-lib\libxml\chvalid.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\debugXML.in.h ..\..\gettext-tools\gnulib-lib\libxml\debugXML.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\dict.in.h ..\..\gettext-tools\gnulib-lib\libxml\dict.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.in.h ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\encoding.in.h ..\..\gettext-tools\gnulib-lib\libxml\encoding.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\entities.in.h ..\..\gettext-tools\gnulib-lib\libxml\entities.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\globals.in.h ..\..\gettext-tools\gnulib-lib\libxml\globals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\hash.in.h ..\..\gettext-tools\gnulib-lib\libxml\hash.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.in.h ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.in.h ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\list.in.h ..\..\gettext-tools\gnulib-lib\libxml\list.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.in.h ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.in.h ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\parser.in.h ..\..\gettext-tools\gnulib-lib\libxml\parser.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.in.h ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\pattern.in.h ..\..\gettext-tools\gnulib-lib\libxml\pattern.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\relaxng.in.h ..\..\gettext-tools\gnulib-lib\libxml\relaxng.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\SAX.in.h ..\..\gettext-tools\gnulib-lib\libxml\SAX.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\SAX2.in.h ..\..\gettext-tools\gnulib-lib\libxml\SAX2.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.in.h ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\schematron.in.h ..\..\gettext-tools\gnulib-lib\libxml\schematron.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\threads.in.h ..\..\gettext-tools\gnulib-lib\libxml\threads.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\tree.in.h ..\..\gettext-tools\gnulib-lib\libxml\tree.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\uri.in.h ..\..\gettext-tools\gnulib-lib\libxml\uri.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\valid.in.h ..\..\gettext-tools\gnulib-lib\libxml\valid.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xinclude.in.h ..\..\gettext-tools\gnulib-lib\libxml\xinclude.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xlink.in.h ..\..\gettext-tools\gnulib-lib\libxml\xlink.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.in.h ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xpath.in.h ..\..\gettext-tools\gnulib-lib\libxml\xpath.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.in.h ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.h ++ copy ..\..\gettext-tools\gnulib-lib\libxml\xpointer.in.h ..\..\gettext-tools\gnulib-lib\libxml\xpointer.h ++ ++ ++ <_PropertySheetDisplayName>gettexttoolscopyxmlhsprops ++ ++ ++ ++ ++ $(CopyXMLC14NH) ++ ++ ++ $(CopyXMLCatalogH) ++ ++ ++ $(CopyXMLChvalidH) ++ ++ ++ $(CopyXMLDebugXMLH) ++ ++ ++ $(CopyXMLDictH) ++ ++ ++ $(CopyXMLDOCBParserH) ++ ++ ++ $(CopyXMLEncodingH) ++ ++ ++ $(CopyXMLEntitiesH) ++ ++ ++ $(CopyXMLGlobalsH) ++ ++ ++ $(CopyXMLHashH) ++ ++ ++ $(CopyXMLHTMLParserH) ++ ++ ++ $(CopyXMLHTMLTreeH) ++ ++ ++ $(CopyXMLListH) ++ ++ ++ $(CopyXMLNanoftpH) ++ ++ ++ $(CopyXMLNanohttpH) ++ ++ ++ $(CopyXMLParserH) ++ ++ ++ $(CopyXMLParserInternalsH) ++ ++ ++ $(CopyXMLPatternH) ++ ++ ++ $(CopyXMLRelaxngH) ++ ++ ++ $(CopyXMLSAXH) ++ ++ ++ $(CopyXMLSAX2H) ++ ++ ++ $(CopyXMLSchemasInternalsH) ++ ++ ++ $(CopyXMLSchematronH) ++ ++ ++ $(CopyXMLThreadsH) ++ ++ ++ $(CopyXMLTreeH) ++ ++ ++ $(CopyXMLUriH) ++ ++ ++ $(CopyXMLValidH) ++ ++ ++ $(CopyXMLXincludeH) ++ ++ ++ $(CopyXMLXlinkH) ++ ++ ++ $(CopyXMLXMLAutomataH) ++ ++ ++ $(CopyXMLXMLErrorH) ++ ++ ++ $(CopyXMLXMLExportsH) ++ ++ ++ $(CopyXMLXMLIOH) ++ ++ ++ $(CopyXMLXMLMemoryH) ++ ++ ++ $(CopyXMLXMLModuleH) ++ ++ ++ $(CopyXMLXMLReaderH) ++ ++ ++ $(CopyXMLXMLRegexpH) ++ ++ ++ $(CopyXMLXMLSaveH) ++ ++ ++ $(CopyXMLXMLSchemasH) ++ ++ ++ $(CopyXMLXMLSchemaTypesH) ++ ++ ++ $(CopyXMLXMLStringH) ++ ++ ++ $(CopyXMLXMLUnicodeH) ++ ++ ++ $(CopyXMLXMLVersionH) ++ ++ ++ $(CopyXMLXMLWriterH) ++ ++ ++ $(CopyXMLXpathH) ++ ++ ++ $(CopyXMLXPathInternalsH) ++ ++ ++ $(CopyXMLXPointerH) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext.vcxproj gettext-0.19/win32/vs15/gettext.vcxproj +--- gettext-0.19-unpatched/win32/vs15/gettext.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,182 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {CC50D78A-91D8-48B1-82B5-2C5A365FFAE9} ++ gettext ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {ba6dcb6c-f80e-46c5-8f7e-c03ff251a74f} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext.vcxproj.filters gettext-0.19/win32/vs15/gettext.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/gettext.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gettext-version-paths.props gettext-0.19/win32/vs15/gettext-version-paths.props +--- gettext-0.19-unpatched/win32/vs15/gettext-version-paths.props 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gettext-version-paths.props 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,65 @@ ++ ++ ++ ++ ++ ++ 15 ++ $(SolutionDir)\..\..\vs$(VSVer)\$(Configuration)\$(Platform) ++ $(GlibEtcInstallRoot) ++ 0 ++ 19 ++ 8 ++ $(PackageVersionMajor).$(PackageVersionMinor).$(PackageVersionMicro) ++ c:/win32_bin_vc$(VSVer).0 ++ $(InstallRoot)/share ++ $(InstallRoot)/share ++ ++ ++ <_PropertySheetDisplayName>gettextversionpathsprops ++ ++ ++ ++ HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) ++ 4244;4273;4307;4308;%(DisableSpecificWarnings) ++ ..\..\build-aux\snippet;%(AdditionalIncludeDirectories) ++ unused-parameter.h;_Noreturn.h;arg-nonnull.h;c++defs.h;warn-on-use.h;%(ForcedIncludeFiles) ++ true ++ /d2Zi+ %(AdditionalOptions) ++ ++ ++ PACKAGE_VERSION_MAJOR=$(PackageVersionMajor);PACKAGE_VERSION_MINOR=$(PackageVersionMinor);PACKAGE_VERSION_SUBMINOR=$(PackageVersionMicro);PACKAGE_VERSION_STRING="$(PackageVersionString)";%(PreprocessorDefinitions) ++ ++ ++ ++ ++ $(VSVer) ++ ++ ++ $(GlibEtcInstallRoot) ++ ++ ++ $(CopyDir) ++ ++ ++ $(PackageVersionMajor) ++ ++ ++ $(PackageVersionMinor) ++ ++ ++ $(PackageVersionMicro) ++ ++ ++ $(PackageVersionString) ++ ++ ++ $(InstallRoot) ++ ++ ++ $(DataDir) ++ ++ ++ $(LibDir) ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/glib_rpl.vcxproj gettext-0.19/win32/vs15/glib_rpl.vcxproj +--- gettext-0.19-unpatched/win32/vs15/glib_rpl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/glib_rpl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,202 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {B8A2CA14-FFBA-4C52-BF3F-DCD77D57C8DE} ++ glib_rpl ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Copying glib.h from glib.in.h... ++ $(CopyGLibH) ++ ..\..\gettext-tools\gnulib-lib\glib.h;%(Outputs) ++ Copying glib.h from glib.in.h... ++ $(CopyGLibH) ++ ..\..\gettext-tools\gnulib-lib\glib.h;%(Outputs) ++ ++ ++ Copying glibconfig.h from glibconfig.in.h... ++ $(CopyGLibConfigH) ++ ..\..\gettext-tools\gnulib-lib\glibconfig.h;%(Outputs) ++ Copying glibconfig.h from glibconfig.in.h... ++ $(CopyGLibConfigH) ++ ..\..\gettext-tools\gnulib-lib\glibconfig.h;%(Outputs) ++ ++ ++ Copying ghash.h from ghash.in.h... ++ $(CopyGHashH) ++ ..\..\gettext-tools\gnulib-lib\glib\ghash.h;%(Outputs) ++ Copying ghash.h from ghash.in.h... ++ $(CopyGHashH) ++ ..\..\gettext-tools\gnulib-lib\glib\ghash.h;%(Outputs) ++ ++ ++ Copying glist.h from glist.in.h... ++ $(CopyGListH) ++ ..\..\gettext-tools\gnulib-lib\glib\glist.h;%(Outputs) ++ Copying glist.h from glist.in.h... ++ $(CopyGListH) ++ ..\..\gettext-tools\gnulib-lib\glib\glist.h;%(Outputs) ++ ++ ++ Copying gprimes.h from gprimes.in.h... ++ $(CopyGPrimesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gprimes.h;%(Outputs) ++ Copying gprimes.h from gprimes.in.h... ++ $(CopyGPrimesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gprimes.h;%(Outputs) ++ ++ ++ Copying gstrfuncs.h from gstrfuncs.in.h... ++ $(CopyGStrfuncsH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.h;%(Outputs) ++ Copying gstrfuncs.h from gstrfuncs.in.h... ++ $(CopyGStrfuncsH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstrfuncs.h;%(Outputs) ++ ++ ++ Copying gstring.h from gstring.in.h... ++ $(CopyGStringH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstring.h;%(Outputs) ++ Copying gstring.h from gstring.in.h... ++ $(CopyGStringH) ++ ..\..\gettext-tools\gnulib-lib\glib\gstring.h;%(Outputs) ++ ++ ++ Copying gtypes.h from gtypes.in.h... ++ $(CopyGTypesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gtypes.h;%(Outputs) ++ Copying gtypes.h from gtypes.in.h... ++ $(CopyGTypesH) ++ ..\..\gettext-tools\gnulib-lib\glib\gtypes.h;%(Outputs) ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/glib_rpl.vcxproj.filters gettext-0.19/win32/vs15/glib_rpl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/glib_rpl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/glib_rpl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,36 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gnu.vcxproj gettext-0.19/win32/vs15/gnu.vcxproj +--- gettext-0.19-unpatched/win32/vs15/gnu.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gnu.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,228 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {49313111-C26E-469F-9CCF-387AE306ABCD} ++ gnu ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextPoBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/gnu.vcxproj.filters gettext-0.19/win32/vs15/gnu.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/gnu.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/gnu.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,115 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/grep.vcxproj gettext-0.19/win32/vs15/grep.vcxproj +--- gettext-0.19-unpatched/win32/vs15/grep.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/grep.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,143 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {A6B79D6D-85A8-4F82-AEF0-ECED26168447} ++ grep ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(LibGrepDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(LibGrepDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(LibGrepDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(LibGrepDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/grep.vcxproj.filters gettext-0.19/win32/vs15/grep.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/grep.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/grep.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,30 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/grt.vcxproj gettext-0.19/win32/vs15/grt.vcxproj +--- gettext-0.19-unpatched/win32/vs15/grt.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/grt.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,196 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {BA6DCB6C-F80E-46C5-8F7E-C03FF251A74F} ++ grt ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ StaticLibrary ++ v141 ++ MultiByte ++ ++ ++ StaticLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ StaticLibrary ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/grt.vcxproj.filters gettext-0.19/win32/vs15/grt.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/grt.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/grt.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,83 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/intl.vcxproj gettext-0.19/win32/vs15/intl.vcxproj +--- gettext-0.19-unpatched/win32/vs15/intl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/intl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,210 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {C04F90E5-5865-4159-A5AF-6FF9FF089B0F} ++ intl ++ Win32Proj ++ ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ true ++ ++ ++ DynamicLibrary ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ %(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextIntlDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Windows ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ %(AdditionalIncludeDirectories) ++ $(GettextIntlDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ %(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextIntlDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ %(AdditionalIncludeDirectories) ++ $(GettextIntlDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Windows ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {3c86cbe3-57d1-416c-8143-3958768cb45d} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/intl.vcxproj.filters gettext-0.19/win32/vs15/intl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/intl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/intl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,55 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/libcroco_rpl.vcxproj gettext-0.19/win32/vs15/libcroco_rpl.vcxproj +--- gettext-0.19-unpatched/win32/vs15/libcroco_rpl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/libcroco_rpl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,166 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {2045108A-A97F-43DE-99CD-81635075C78A} ++ libcroco_rpl ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {b8a2ca14-ffba-4c52-bf3f-dcd77d57c8de} ++ false ++ ++ ++ {4c779a72-8dcc-4896-a8d7-a17fa6019682} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/libcroco_rpl.vcxproj.filters gettext-0.19/win32/vs15/libcroco_rpl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/libcroco_rpl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/libcroco_rpl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,45 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/libxml_rpl.vcxproj gettext-0.19/win32/vs15/libxml_rpl.vcxproj +--- gettext-0.19-unpatched/win32/vs15/libxml_rpl.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/libxml_rpl.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,560 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4C779A72-8DCC-4896-A8D7-A17FA6019682} ++ libxml_rpl ++ Win32Proj ++ ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ true ++ ++ ++ StaticLibrary ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ %(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextLibBaseIncludeDirs);%(AdditionalIncludeDirectories) ++ %(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Copying c14n.h from c14n.in.h... ++ $(CopyXMLC14NH) ++ ..\..\gettext-tools\gnulib-lib\libxml\c14n.h;%(Outputs) ++ Copying c14n.h from c14n.in.h... ++ $(CopyXMLC14NH) ++ ..\..\gettext-tools\gnulib-lib\libxml\c14n.h;%(Outputs) ++ ++ ++ Copying catalog.h from catalog.in.h... ++ $(CopyXMLCatalogH) ++ ..\..\gettext-tools\gnulib-lib\libxml\catalog.h;%(Outputs) ++ Copying catalog.h from catalog.in.h... ++ $(CopyXMLCatalogH) ++ ..\..\gettext-tools\gnulib-lib\libxml\catalog.h;%(Outputs) ++ ++ ++ Copying chvalid.h from chvalid.in.h... ++ $(CopyXMLChvalidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\chvalid.h;%(Outputs) ++ Copying chvalid.h from chvalid.in.h... ++ $(CopyXMLChvalidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\chvalid.h;%(Outputs) ++ ++ ++ Copying debugXML.h from debugXML.in.h... ++ $(CopyXMLDebugXMLH) ++ ..\..\gettext-tools\gnulib-lib\libxml\debugXML.h;%(Outputs) ++ Copying debugXML.h from debugXML.in.h... ++ $(CopyXMLDebugXMLH) ++ ..\..\gettext-tools\gnulib-lib\libxml\debugXML.h;%(Outputs) ++ ++ ++ Copying dict.h from dict.in.h... ++ $(CopyXMLDictH) ++ ..\..\gettext-tools\gnulib-lib\libxml\dict.h;%(Outputs) ++ Copying dict.h from dict.in.h... ++ $(CopyXMLDictH) ++ ..\..\gettext-tools\gnulib-lib\libxml\dict.h;%(Outputs) ++ ++ ++ Copying DOCBparser.h from DOCBparser.in.h... ++ $(CopyXMLDOCBParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.h;%(Outputs) ++ Copying DOCBparser.h from DOCBparser.in.h... ++ $(CopyXMLDOCBParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\DOCBparser.h;%(Outputs) ++ ++ ++ Copying encoding.h from encoding.in.h... ++ $(CopyXMLEncodingH) ++ ..\..\gettext-tools\gnulib-lib\libxml\encoding.h;%(Outputs) ++ Copying encoding.h from encoding.in.h... ++ $(CopyXMLEncodingH) ++ ..\..\gettext-tools\gnulib-lib\libxml\encoding.h;%(Outputs) ++ ++ ++ Copying entities.h from entities.in.h... ++ $(CopyXMLEntitiesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\entities.h;%(Outputs) ++ Copying entities.h from entities.in.h... ++ $(CopyXMLEntitiesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\entities.h;%(Outputs) ++ ++ ++ Copying globals.h from globals.in.h... ++ $(CopyXMLGlobalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\globals.h;%(Outputs) ++ Copying globals.h from globals.in.h... ++ $(CopyXMLGlobalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\globals.h;%(Outputs) ++ ++ ++ Copying hash.h from hash.in.h... ++ $(CopyXMLHashH) ++ ..\..\gettext-tools\gnulib-lib\libxml\hash.h;%(Outputs) ++ Copying hash.h from hash.in.h... ++ $(CopyXMLHashH) ++ ..\..\gettext-tools\gnulib-lib\libxml\hash.h;%(Outputs) ++ ++ ++ Copying HTMLparser.h from HTMLparser.in.h... ++ $(CopyXMLHTMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.h;%(Outputs) ++ Copying HTMLparser.h from HTMLparser.in.h... ++ $(CopyXMLHTMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLparser.h;%(Outputs) ++ ++ ++ Copying HTMLtree.h from HTMLtree.in.h... ++ $(CopyXMLHTMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.h;%(Outputs) ++ Copying HTMLtree.h from HTMLtree.in.h... ++ $(CopyXMLHTMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\HTMLtree.h;%(Outputs) ++ ++ ++ Copying list.h from list.in.h... ++ $(CopyXMLListH) ++ ..\..\gettext-tools\gnulib-lib\libxml\list.h;%(Outputs) ++ Copying list.h from list.in.h... ++ $(CopyXMLListH) ++ ..\..\gettext-tools\gnulib-lib\libxml\list.h;%(Outputs) ++ ++ ++ Copying nanoftp.h from nanoftp.in.h... ++ $(CopyXMLNanoftpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.h;%(Outputs) ++ Copying nanoftp.h from nanoftp.in.h... ++ $(CopyXMLNanoftpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanoftp.h;%(Outputs) ++ ++ ++ Copying nanohttp.h from nanohttp.in.h... ++ $(CopyXMLNanohttpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.h;%(Outputs) ++ Copying nanohttp.h from nanohttp.in.h... ++ $(CopyXMLNanohttpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\nanohttp.h;%(Outputs) ++ ++ ++ Copying parser.h from parser.in.h... ++ $(CopyXMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parser.h;%(Outputs) ++ Copying parser.h from parser.in.h... ++ $(CopyXMLParserH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parser.h;%(Outputs) ++ ++ ++ Copying parserInternals.h from parserInternals.in.h... ++ $(CopyXMLParserInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.h;%(Outputs) ++ Copying parserInternals.h from parserInternals.in.h... ++ $(CopyXMLParserInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\parserInternals.h;%(Outputs) ++ ++ ++ Copying pattern.h from pattern.in.h... ++ $(CopyXMLPatternH) ++ ..\..\gettext-tools\gnulib-lib\libxml\pattern.h;%(Outputs) ++ Copying pattern.h from pattern.in.h... ++ $(CopyXMLPatternH) ++ ..\..\gettext-tools\gnulib-lib\libxml\pattern.h;%(Outputs) ++ ++ ++ Copying relaxng.h from relaxng.in.h... ++ $(CopyXMLRelaxngH) ++ ..\..\gettext-tools\gnulib-lib\libxml\relaxng.h;%(Outputs) ++ Copying relaxng.h from relaxng.in.h... ++ $(CopyXMLRelaxngH) ++ ..\..\gettext-tools\gnulib-lib\libxml\relaxng.h;%(Outputs) ++ ++ ++ Copying SAX.h from SAX.in.h... ++ $(CopyXMLSAXH) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX.h;%(Outputs) ++ Copying SAX.h from SAX.in.h... ++ $(CopyXMLSAXH) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX.h;%(Outputs) ++ ++ ++ Copying SAX2.h from SAX2.in.h... ++ $(CopyXMLSAX2H) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX2.h;%(Outputs) ++ Copying SAX2.h from SAX2.in.h... ++ $(CopyXMLSAX2H) ++ ..\..\gettext-tools\gnulib-lib\libxml\SAX2.h;%(Outputs) ++ ++ ++ Copying schemasInternals.h from schemasInternals.in.h... ++ $(CopyXMLSchemasInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.h;%(Outputs) ++ Copying schemasInternals.h from schemasInternals.in.h... ++ $(CopyXMLSchemasInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schemasInternals.h;%(Outputs) ++ ++ ++ Copying schematron.h from schematron.in.h... ++ $(CopyXMLSchematronH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schematron.h;%(Outputs) ++ Copying schematron.h from schematron.in.h... ++ $(CopyXMLSchematronH) ++ ..\..\gettext-tools\gnulib-lib\libxml\schematron.h;%(Outputs) ++ ++ ++ Copying threads.h from threads.in.h... ++ $(CopyXMLThreadsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\threads.h;%(Outputs) ++ Copying threads.h from threads.in.h... ++ $(CopyXMLThreadsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\threads.h;%(Outputs) ++ ++ ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ Copying tree.h from tree.in.h... ++ $(CopyXMLTreeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\tree.h;%(Outputs) ++ ++ ++ Copying uri.h from uri.in.h... ++ $(CopyXMLUriH) ++ ..\..\gettext-tools\gnulib-lib\libxml\uri.h;%(Outputs) ++ Copying uri.h from uri.in.h... ++ $(CopyXMLUriH) ++ ..\..\gettext-tools\gnulib-lib\libxml\uri.h;%(Outputs) ++ ++ ++ Copying valid.h from valid.in.h... ++ $(CopyXMLValidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\valid.h;%(Outputs) ++ Copying valid.h from valid.in.h... ++ $(CopyXMLValidH) ++ ..\..\gettext-tools\gnulib-lib\libxml\valid.h;%(Outputs) ++ ++ ++ Copying xinclude.h from xinclude.in.h... ++ $(CopyXMLXincludeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xinclude.h;%(Outputs) ++ Copying xinclude.h from xinclude.in.h... ++ $(CopyXMLXincludeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xinclude.h;%(Outputs) ++ ++ ++ Copying xlink.h from xlink.in.h... ++ $(CopyXMLXlinkH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xlink.h;%(Outputs) ++ Copying xlink.h from xlink.in.h... ++ $(CopyXMLXlinkH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xlink.h;%(Outputs) ++ ++ ++ Copying xmlautomata.h from xmlautomata.in.h... ++ $(CopyXMLXMLAutomataH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.h;%(Outputs) ++ Copying xmlautomata.h from xmlautomata.in.h... ++ $(CopyXMLXMLAutomataH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlautomata.h;%(Outputs) ++ ++ ++ Copying xmlerror.h from xmlerror.in.h... ++ $(CopyXMLXMLErrorH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.h;%(Outputs) ++ Copying xmlerror.h from xmlerror.in.h... ++ $(CopyXMLXMLErrorH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlerror.h;%(Outputs) ++ ++ ++ Copying xmlexports.h from xmlexports.in.h... ++ $(CopyXMLXMLExportsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.h;%(Outputs) ++ Copying xmlexports.h from xmlexports.in.h... ++ $(CopyXMLXMLExportsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlexports.h;%(Outputs) ++ ++ ++ Copying xmlIO.h from xmlIO.in.h... ++ $(CopyXMLXMLIOH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.h;%(Outputs) ++ Copying xmlIO.h from xmlIO.in.h... ++ $(CopyXMLXMLIOH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlIO.h;%(Outputs) ++ ++ ++ Copying xmlmemory.h from xmlmemory.in.h... ++ $(CopyXMLXMLMemoryH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.h;%(Outputs) ++ Copying xmlmemory.h from xmlmemory.in.h... ++ $(CopyXMLXMLMemoryH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmemory.h;%(Outputs) ++ ++ ++ Copying xmlmodule.h from xmlmodule.in.h... ++ $(CopyXMLXMLModuleH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.h;%(Outputs) ++ Copying xmlmodule.h from xmlmodule.in.h... ++ $(CopyXMLXMLModuleH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlmodule.h;%(Outputs) ++ ++ ++ Copying xmlreader.h from xmlreader.in.h... ++ $(CopyXMLXMLReaderH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.h;%(Outputs) ++ Copying xmlreader.h from xmlreader.in.h... ++ $(CopyXMLXMLReaderH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlreader.h;%(Outputs) ++ ++ ++ Copying xmlregexp.h from xmlregexp.in.h... ++ $(CopyXMLXMLRegexpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.h;%(Outputs) ++ Copying xmlregexp.h from xmlregexp.in.h... ++ $(CopyXMLXMLRegexpH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlregexp.h;%(Outputs) ++ ++ ++ Copying xmlsave.h from xmlsave.in.h... ++ $(CopyXMLXMLSaveH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.h;%(Outputs) ++ Copying xmlsave.h from xmlsave.in.h... ++ $(CopyXMLXMLSaveH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlsave.h;%(Outputs) ++ ++ ++ Copying xmlschemas.h from xmlschemas.in.h... ++ $(CopyXMLXMLSchemasH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.h;%(Outputs) ++ Copying xmlschemas.h from xmlschemas.in.h... ++ $(CopyXMLXMLSchemasH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemas.h;%(Outputs) ++ ++ ++ Copying xmlschemastypes.h from xmlschemastypes.in.h... ++ $(CopyXMLXMLSchemasTypesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.h;%(Outputs) ++ Copying xmlschemastypes.h from xmlschemastypes.in.h... ++ $(CopyXMLXMLSchemasTypesH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlschemastypes.h;%(Outputs) ++ ++ ++ Copying xmlstring.h from xmlstring.in.h... ++ $(CopyXMLXMLStringH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.h;%(Outputs) ++ Copying xmlstring.h from xmlstring.in.h... ++ $(CopyXMLXMLStringH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlstring.h;%(Outputs) ++ ++ ++ Copying xmlunicode.h from xmlunicode.in.h... ++ $(CopyXMLXMLUnicodeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.h;%(Outputs) ++ Copying xmlunicode.h from xmlunicode.in.h... ++ $(CopyXMLXMLUnicodeH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlunicode.h;%(Outputs) ++ ++ ++ Copying xmlversion.h from xmlversion.in.h... ++ $(CopyXMLXMLVersionH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.h;%(Outputs) ++ Copying xmlversion.h from xmlversion.in.h... ++ $(CopyXMLXMLVersionH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlversion.h;%(Outputs) ++ ++ ++ Copying xmlwriter.h from xmlwriter.in.h... ++ $(CopyXMLXMLWriterH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.h;%(Outputs) ++ Copying xmlwriter.h from xmlwriter.in.h... ++ $(CopyXMLXMLWriterH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xmlwriter.h;%(Outputs) ++ ++ ++ Copying xpath.h from xpath.in.h... ++ $(CopyXMLXpathH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpath.h;%(Outputs) ++ Copying xpath.h from xpath.in.h... ++ $(CopyXMLXpathH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpath.h;%(Outputs) ++ ++ ++ Copying xpathInternals.h from xpathInternals.in.h... ++ $(CopyXMLXPathInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.h;%(Outputs) ++ Copying xpathInternals.h from xpathInternals.in.h... ++ $(CopyXMLXPathInternalsH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpathInternals.h;%(Outputs) ++ ++ ++ Copying xpointer.h from xpointer.in.h... ++ $(CopyXMLXPointerH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpointer.h;%(Outputs) ++ Copying xpointer.h from xpointer.in.h... ++ $(CopyXMLXPointerH) ++ ..\..\gettext-tools\gnulib-lib\libxml\xpointer.h;%(Outputs) ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/libxml_rpl.vcxproj.filters gettext-0.19/win32/vs15/libxml_rpl.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/libxml_rpl.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/libxml_rpl.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,112 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgattrib.vcxproj gettext-0.19/win32/vs15/msgattrib.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgattrib.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgattrib.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4A075F7F-8A3C-43AB-9278-2408F84A9397} ++ msgattrib ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgattrib.vcxproj.filters gettext-0.19/win32/vs15/msgattrib.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgattrib.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgattrib.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgcat.vcxproj gettext-0.19/win32/vs15/msgcat.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgcat.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgcat.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {47F1E067-3DAC-4225-A011-7FD969962CDE} ++ msgcat ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgcat.vcxproj.filters gettext-0.19/win32/vs15/msgcat.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgcat.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgcat.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgcmp.vcxproj gettext-0.19/win32/vs15/msgcmp.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgcmp.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgcmp.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,187 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {8D2EE6A3-8F3C-4CDC-9319-40F7642F7D5D} ++ msgcmp ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgcmp.vcxproj.filters gettext-0.19/win32/vs15/msgcmp.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgcmp.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgcmp.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,24 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgcomm.vcxproj gettext-0.19/win32/vs15/msgcomm.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgcomm.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgcomm.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {9C2B7992-AF0D-428F-B86A-BC24233B32B9} ++ msgcomm ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgcomm.vcxproj.filters gettext-0.19/win32/vs15/msgcomm.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgcomm.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgcomm.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgconv.vcxproj gettext-0.19/win32/vs15/msgconv.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgconv.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgconv.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4E533FC2-5AE7-4C6B-A312-B8452C0DAAC4} ++ msgconv ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgconv.vcxproj.filters gettext-0.19/win32/vs15/msgconv.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgconv.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgconv.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgen.vcxproj gettext-0.19/win32/vs15/msgen.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgen.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgen.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {BD69E250-2D16-4826-9424-DEEED8E08DAE} ++ msgen ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgen.vcxproj.filters gettext-0.19/win32/vs15/msgen.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgen.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgen.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgexec.vcxproj gettext-0.19/win32/vs15/msgexec.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgexec.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgexec.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {0A83B0BA-6A99-4E09-BEA0-8061347D48C6} ++ msgexec ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgexec.vcxproj.filters gettext-0.19/win32/vs15/msgexec.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgexec.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgexec.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgfilter.vcxproj gettext-0.19/win32/vs15/msgfilter.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgfilter.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgfilter.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,188 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {4BFE600E-5D03-4E36-875B-68326C55A530} ++ msgfilter ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgfilter.vcxproj.filters gettext-0.19/win32/vs15/msgfilter.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgfilter.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgfilter.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,25 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgfmt.vcxproj gettext-0.19/win32/vs15/msgfmt.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgfmt.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgfmt.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,194 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {10D98932-547A-4985-9F33-9671579A0309} ++ msgfmt ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgfmt.vcxproj.filters gettext-0.19/win32/vs15/msgfmt.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgfmt.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgfmt.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,31 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msggrep.vcxproj gettext-0.19/win32/vs15/msggrep.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msggrep.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msggrep.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,190 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {241BEBF9-7AAE-4BF4-B803-0ABB7633773B} ++ msggrep ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextGrepIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {a6b79d6d-85a8-4f82-aef0-eced26168447} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msggrep.vcxproj.filters gettext-0.19/win32/vs15/msggrep.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msggrep.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msggrep.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msginit.vcxproj gettext-0.19/win32/vs15/msginit.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msginit.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msginit.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,190 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {9982C8ED-7528-495E-9665-D627538953B9} ++ msginit ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msginit.vcxproj.filters gettext-0.19/win32/vs15/msginit.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msginit.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msginit.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,27 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgmerge.vcxproj gettext-0.19/win32/vs15/msgmerge.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgmerge.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgmerge.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,189 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {A79BB466-B66A-4CAA-B72C-E455824FB047} ++ msgmerge ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgmerge.vcxproj.filters gettext-0.19/win32/vs15/msgmerge.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgmerge.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgmerge.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,26 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgunfmt.vcxproj gettext-0.19/win32/vs15/msgunfmt.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msgunfmt.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgunfmt.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,191 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {3E00B0E2-87B4-416C-B9A4-07FA9A17A4E6} ++ msgunfmt ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msgunfmt.vcxproj.filters gettext-0.19/win32/vs15/msgunfmt.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msgunfmt.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msgunfmt.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,28 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msguniq.vcxproj gettext-0.19/win32/vs15/msguniq.vcxproj +--- gettext-0.19-unpatched/win32/vs15/msguniq.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msguniq.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,186 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {CF9D4289-B95B-4800-8AD5-193729257DDA} ++ msguniq ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/msguniq.vcxproj.filters gettext-0.19/win32/vs15/msguniq.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/msguniq.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/msguniq.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/ngettext.vcxproj gettext-0.19/win32/vs15/ngettext.vcxproj +--- gettext-0.19-unpatched/win32/vs15/ngettext.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/ngettext.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,182 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {2F40C8D6-FC5C-406D-BB0D-4A1E1DDAB01B} ++ ngettext ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextRuntimeGnulibIncludeDirs);%(AdditionalIncludeDirectories) ++ $(GettextRuntimeToolsDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {ba6dcb6c-f80e-46c5-8f7e-c03ff251a74f} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/ngettext.vcxproj.filters gettext-0.19/win32/vs15/ngettext.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/ngettext.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/ngettext.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/recode-sr-latin.vcxproj gettext-0.19/win32/vs15/recode-sr-latin.vcxproj +--- gettext-0.19-unpatched/win32/vs15/recode-sr-latin.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/recode-sr-latin.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,183 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {5E4B0F1E-74D0-4154-9F8D-481FE444FCA4} ++ recodesrlatin ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ Application ++ v141 ++ Unicode ++ true ++ ++ ++ Application ++ v141 ++ Unicode ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/recode-sr-latin.vcxproj.filters gettext-0.19/win32/vs15/recode-sr-latin.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/recode-sr-latin.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/recode-sr-latin.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,24 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/xgettext.vcxproj gettext-0.19/win32/vs15/xgettext.vcxproj +--- gettext-0.19-unpatched/win32/vs15/xgettext.vcxproj 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/xgettext.vcxproj 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,207 @@ ++ ++ ++ ++ ++ Debug ++ Win32 ++ ++ ++ Debug ++ x64 ++ ++ ++ Release ++ Win32 ++ ++ ++ Release ++ x64 ++ ++ ++ ++ {93C6ABA2-B4D6-4649-9FFE-22D36CA97162} ++ xgettext ++ Win32Proj ++ ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ Application ++ v141 ++ MultiByte ++ true ++ ++ ++ Application ++ v141 ++ MultiByte ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ true ++ ++ ++ false ++ ++ ++ true ++ ++ ++ false ++ ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ EditAndContinue ++ ++ ++ true ++ Console ++ MachineX86 ++ ++ ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX86 ++ ++ ++ ++ ++ X64 ++ ++ ++ Disabled ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ _DEBUG;$(BaseDefines);%(PreprocessorDefinitions) ++ true ++ EnableFastChecks ++ MultiThreadedDebugDLL ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ MachineX64 ++ ++ ++ ++ ++ X64 ++ ++ ++ MaxSpeed ++ true ++ $(GettextSrcIncludeDirs);%(AdditionalIncludeDirectories) ++ $(BaseDefines);%(PreprocessorDefinitions) ++ MultiThreadedDLL ++ true ++ ++ Level3 ++ ProgramDatabase ++ ++ ++ true ++ Console ++ true ++ true ++ MachineX64 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ CompileAsCpp ++ ++ ++ ++ ++ ++ ++ {c95b3a8e-c58b-4c74-96ea-2016127eb1ec} ++ false ++ ++ ++ {38d95da9-249e-4e67-ba61-aa56cd569e11} ++ false ++ ++ ++ {c04f90e5-5865-4159-a5af-6ff9ff089b0f} ++ false ++ ++ ++ ++ ++ ++ +diff -Nru gettext-0.19-unpatched/win32/vs15/xgettext.vcxproj.filters gettext-0.19/win32/vs15/xgettext.vcxproj.filters +--- gettext-0.19-unpatched/win32/vs15/xgettext.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 ++++ gettext-0.19/win32/vs15/xgettext.vcxproj.filters 2018-01-23 07:42:56.000000000 +0100 +@@ -0,0 +1,44 @@ ++ ++ ++ ++ ++ {4FC737F1-C7A5-4376-A066-2A32D752A2FF} ++ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx ++ ++ ++ {93995380-89BD-4b04-88EB-625FBE52EBFB} ++ h;hpp;hxx;hm;inl;inc;xsd ++ ++ ++ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} ++ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav ++ ++ ++ ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ Sources ++ ++ ++ Resource Files ++ ++ diff --git a/win32libs/gettext/gettext.py b/win32libs/gettext/gettext.py index 77c642f6..0c7594f2 100644 --- a/win32libs/gettext/gettext.py +++ b/win32libs/gettext/gettext.py @@ -1,22 +1,85 @@ # -*- coding: utf-8 -*- import info -from Package.CMakePackageBase import * +from Package.MSBuildPackageBase import * +from Package.AutoToolsPackageBase import * class subinfo(info.infoclass): def setTargets(self): - self.targets['0.18'] = 'http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.tar.gz' - self.targetInstSrc['0.18'] = "gettext-0.18" - self.patchToApply['0.18'] = [("gettext-0.18-20130523.diff", 1)] - self.targetDigests['0.18'] = 'de396ec6877a451427d8597197d18c2d4b8f1a26' + for ver in ['0.19.8.1']: + self.targets[ver] = 'http://ftp.gnu.org/pub/gnu/gettext/gettext-%s.tar.gz' % ver + self.targetInstSrc[ver] = "gettext-%s" % ver + + self.targetDigests['0.19.8.1'] = (['ff942af0e438ced4a8b0ea4b0b6e0d6d657157c5e2364de57baa279c1c125c43'], CraftHash.HashAlgorithm.SHA256) + + if CraftCore.compiler.isGCCLike(): + self.patchToApply['0.19.8.1'] = [("disable-tools.diff", 1)] #only to shorten compilation time and make targets equal to msvc targets + + if CraftCore.compiler.isMSVC(): + #patch based on https://github.com/fanc999/gtk-msvc-projects/tree/master/gettext/0.19.8.1 + self.patchToApply['0.19.8.1'] = [("gettext-0.19.8.1-gtk-msvc-projects.diff", 1)] + + self.patchToApply['0.19.8.1'] += [("0001-gettext-tools-gnulib-lib-xalloc.h-Fix-function-signa.patch", 1)] + self.patchToApply['0.19.8.1'] += [("0001-gettext-tools-src-Fix-linking.patch", 1)] + self.patchToApply['0.19.8.1'] += [("0001-gettext-tools-src-x-lua.c-Fix-on-pre-C99.patch", 1)] + self.patchToApply['0.19.8.1'] += [("0001-ostream.h-styled-ostream.h-Fix-linking.patch", 1)] + self.patchToApply['0.19.8.1'] += [("0001-printf-parse.c-Fix-build-on-Visual-Studio-2008.patch", 1)] + self.patchToApply['0.19.8.1'] += [("0001-tools-Fix-gnulib-lib-uniname-uniname.c-on-pre-C99.patch", 1)] + self.description = "GNU internationalization (i18n)" - self.defaultTarget = '0.18' + self.defaultTarget = '0.19.8.1' def setDependencies(self): self.runtimeDependencies["virtual/base"] = "default" self.runtimeDependencies["win32libs/win_iconv"] = "default" + if CraftCore.compiler.isGCCLike(): + self.buildDependencies["dev-util/msys"] = "default" + +class PackageMinGW(AutoToolsPackageBase): + def __init__(self, **args): + AutoToolsPackageBase.__init__(self) + self.subinfo.options.configure.args += " --disable-static --enable-shared --disable-java --disable-native-java --enable-nls --enable-c++ --with-included-gettext --with-included-glib --with-included-regex " -class Package(CMakePackageBase): +class PackageMSVC(MSBuildPackageBase): def __init__(self, **args): - CMakePackageBase.__init__(self) + MSBuildPackageBase.__init__(self) + if CraftCore.compiler.getInternalVersion() == 14: + self.gettextBuildDir = os.path.join(self.sourceDir(), "win32", "vs14") + else: + self.gettextBuildDir = os.path.join(self.sourceDir(), "win32", "vs15") + + + self.subinfo.options.configure.args = self.subinfo.options.configure.args + " /p:WindowsTargetPlatformVersion=" + os.getenv('WINDOWSSDKVERSION')[:-1] + self.subinfo.options.configure.args += " /p:UseEnv=true" + if CraftCore.compiler.isX86(): + self.subinfo.options.configure.args += " /p:Platform=win32" + + self.subinfo.options.configure.projectFile = os.path.join(self.gettextBuildDir, "gettext.sln") + + self.msbuildTargets = ["intl", "gettext", "ngettext", "envsubst"] + + + def make(self): + with utils.ScopedEnv({ + "LIB" : f"{os.environ['LIB']};{os.path.join(CraftStandardDirs.craftRoot() , 'lib')}", + "INCLUDE" : f"{os.environ['INCLUDE']};{os.path.join(CraftStandardDirs.craftRoot() , 'include')}"}): + return MSBuildPackageBase.make(self) + + def install(self): + if not MSBuildPackageBase.install(self, installHeaders=False, + buildDirs=[self.gettextBuildDir]): + return True + return (utils.copyFile(os.path.join(self.sourceDir(), "gettext-runtime", "intl", "msvc", "libintl.h"), + os.path.join(self.installDir(), "include", "libintl.h")) and + utils.copyFile(os.path.join(self.sourceDir(), "gettext-runtime", "libasprintf", "msvc", "autosprintf.h"), + os.path.join(self.installDir(), "include", "autosprintf.h"))) + +if CraftCore.compiler.isGCCLike(): + class Package(PackageMinGW): + def __init__(self): + PackageMinGW.__init__(self) +else: + class Package(PackageMSVC): + def __init__(self): + PackageMSVC.__init__(self)