external/libassuan/ExternalProject_libassuan.mk |    1 
 external/libassuan/UnpackedTarball_libassuan.mk |    1 
 external/libassuan/w32-stdc.patch               |   74 ++++++++++++++++++++++++
 3 files changed, 76 insertions(+)

New commits:
commit 3b32b91edebc76e4417b086acb6a0486a7fe80c0
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Fri Apr 22 21:52:50 2022 +0200
Commit:     Aron Budea <aron.bu...@collabora.com>
CommitDate: Fri May 31 07:51:52 2024 +0200

    external/libassuan: Fix fallout of defining __STDC__ on Windows
    
    ...since 1bb0e177124d5d6661b72df6c7d848fb23639652 "Fix autoconf>=2.70
    gcc-wrapper breakage", which had the side effect of preventing various
    deprecated function declarations in system headers (e.g., isascii in 
addition to
    __isascii).  This went unnoticed so far due to the traditionally lax 
handling of
    missing function declarations in C, and only now started to cause
    
    > conversion.c(94,9): error: call to undeclared function 'isascii'; ISO C99 
and later do not support implicit function declarations 
[-Wimplicit-function-declaration]
    >           if ((isascii (*istr) && isprint (*istr)) || (*istr >= 0x80))
    >                ^
    
    etc. with clang-cl 15 trunk after
    
<https://github.com/llvm/llvm-project/commit/7d644e1215b376ec5e915df9ea2eeb56e2d94626>
    "[C11/C2x] Change the behavior of the implicit function declaration 
warning".
    
    Where undeclared functions have been used in Windows-only code, they have 
been
    replaced with their __STDC__-declared counterparts, and for occurrences in
    shared code Windows-only macro definitions have been introduced (as would 
have
    done in the system headers too, if __STDC__ was not defined) to not clutter 
the
    shared code with #ifdefs.
    
    Also, for getpid (resp. _getpid), the #include <process.h> was apparently
    missing from the upstream code, even without our __STDC__ hack in
    external/libassuan/ExternalProject_libassuan.mk (but never caused errors 
until
    now, either).
    
    Change-Id: I7442394d0c6e633bca1f6c7331d7ee51651179a4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133339
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>
    (cherry picked from commit 8279d89d6e037def78f50c72fab2116ca56bef52)
    (cherry picked from commit 1f683fe50fe0e850a7a978228a71c84356b38cf6)
    (cherry picked from commit 5d969ce25538238066aaa3879746aae95959d03d)
    (cherry picked from commit 1b01f9e1d7ae5d3b12f7b3ed6bbe7b7445a0caae)

diff --git a/external/libassuan/UnpackedTarball_libassuan.mk 
b/external/libassuan/UnpackedTarball_libassuan.mk
index 295b87d49677..3604fa36a395 100644
--- a/external/libassuan/UnpackedTarball_libassuan.mk
+++ b/external/libassuan/UnpackedTarball_libassuan.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,libassuan, \
     $(if $(filter MSC,$(COM)),external/libassuan/w32-build-fixes.patch.1) \
     external/libassuan/w32-build-fixes-2.patch \
     $(if $(filter LINUX,$(OS)),external/libassuan/rpath.patch) \
+    external/libassuan/w32-stdc.patch \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/libassuan/w32-stdc.patch 
b/external/libassuan/w32-stdc.patch
new file mode 100644
index 000000000000..def3dea833af
--- /dev/null
+++ b/external/libassuan/w32-stdc.patch
@@ -0,0 +1,74 @@
+--- src/assuan-handler.c
++++ src/assuan-handler.c
+@@ -938,7 +938,7 @@
+ #if defined(HAVE_W32CE_SYSTEM)
+         fdarray[n++] = (void*)fileno (ctx->outbound.data.fp);
+ #elif defined(HAVE_W32_SYSTEM)
+-        fdarray[n++] = (void*)_get_osfhandle (fileno (ctx->outbound.data.fp));
++        fdarray[n++] = (void*)_get_osfhandle (_fileno 
(ctx->outbound.data.fp));
+ #else
+         fdarray[n++] = fileno (ctx->outbound.data.fp);
+ #endif
+--- src/assuan-logging.c
++++ src/assuan-logging.c
+@@ -30,10 +30,15 @@
+ # ifdef HAVE_WINSOCK2_H
+ #  include <winsock2.h>
+ # endif
++# include <process.h>
++# define getpid _getpid
+ # include <windows.h>
+ #endif /*HAVE_W32_SYSTEM*/
+ #include <errno.h>
+ #include <ctype.h>
++#if defined HAVE_W32_SYSTEM
++#define isascii __isascii
++#endif
+ 
+ #include "assuan-defs.h"
+ 
+--- src/assuan-pipe-connect.c
++++ src/assuan-pipe-connect.c
+@@ -47,6 +47,8 @@
+ # ifdef HAVE_WINSOCK2_H
+ #  include <winsock2.h>
+ # endif
++# include <process.h>
++# define getpid _getpid
+ # include <windows.h>
+ #endif
+ 
+--- src/assuan-socket.c
++++ src/assuan-socket.c
+@@ -27,6 +27,8 @@
+ #include <stdlib.h>
+ #ifdef HAVE_W32_SYSTEM
+ # define WIN32_LEAN_AND_MEAN
++# include <process.h>
++# define getpid _getpid
+ # include <windows.h>
+ # include <wincrypt.h>
+ #ifndef HAVE_W32CE_SYSTEM
+--- src/conversion.c
++++ src/conversion.c
+@@ -27,6 +27,9 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <ctype.h>
++#if defined HAVE_W32_SYSTEM
++#define isascii __isascii
++#endif
+ 
+ #include "assuan-defs.h"
+ #include "debug.h"
+--- src/system-w32.c
++++ src/system-w32.c
+@@ -453,7 +453,7 @@
+ 
+   /* Dup stderr to /dev/null unless it is in the list of FDs to be
+      passed to the child. */
+-  fd = assuan_fd_from_posix_fd (fileno (stderr));
++  fd = assuan_fd_from_posix_fd (_fileno (stderr));
+   fdp = fd_child_list;
+   if (fdp)
+     {
commit 14c21a527f43f598db783cc55b4526edacb1ff03
Author:     Thorsten Behrens <thorsten.behr...@allotropia.de>
AuthorDate: Tue Dec 28 17:22:29 2021 +0100
Commit:     Aron Budea <aron.bu...@collabora.com>
CommitDate: Fri May 31 07:51:44 2024 +0200

    Fix autoconf>=2.70 gcc-wrapper breakage
    
    Re-generated configure file gets confused & claims not finding C89-
    compatible compiler for gcc-wrapper-building libassuan with msvc
    underneath.
    
    Work-around the problem by telling toolchain right off that this
    _is_ a std c compliant compiler.
    
    Change-Id: I4fa23673b790bc70a9294951df545c27f5236f81
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127641
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>
    (cherry picked from commit 1bb0e177124d5d6661b72df6c7d848fb23639652)
    (cherry picked from commit 9c58a604bd1310ed579c9821f1c0f0de4672c192)
    (cherry picked from commit abe1e391f2a5f190984d8bafd7f9613639cb93b1)
    (cherry picked from commit c798d5c3d190537a4b669e910ed438cf3e12ef2d)

diff --git a/external/libassuan/ExternalProject_libassuan.mk 
b/external/libassuan/ExternalProject_libassuan.mk
index 899c21e4cec9..9237c35a5d31 100644
--- a/external/libassuan/ExternalProject_libassuan.mk
+++ b/external/libassuan/ExternalProject_libassuan.mk
@@ -30,6 +30,7 @@ $(call gb_ExternalProject_get_state_target,libassuan,build): 
$(call gb_Executabl
                --disable-shared \
                --disable-doc \
                $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \
+               CFLAGS="$(CFLAGS) -D__STDC__=1" \
                CXXFLAGS="$(CXXFLAGS)" \
                GPG_ERROR_CFLAGS="$(GPG_ERROR_CFLAGS)" \
                GPG_ERROR_LIBS="$(GPG_ERROR_LIBS)" \

Reply via email to