diff --git a/mcwin32/ChangeLog.txt b/mcwin32/ChangeLog.txt
index ec4cc9b7..47221c01 100644
--- a/mcwin32/ChangeLog.txt
+++ b/mcwin32/ChangeLog.txt
@@ -1,3 +1,18 @@
+Mon Nov 8 21:14:55 2021 adamy
+
+ * exec non-shell tweaks
+
+ * submodule updates
+
+ o mbedtls - 2.27.0
+
+Wed Oct 27 00:32:42 2021 adamy
+
+ * submodule updates
+
+ o libssh2 - 1.10,0
+ o libappupdater
+
Fri Oct 22 00:20:44 2021 adamy
* Build 220: 4.8.24 beta5.
diff --git a/mcwin32/autoupdater/libappupdater b/mcwin32/autoupdater/libappupdater
index 625c9975..bf1f5e56 160000
--- a/mcwin32/autoupdater/libappupdater
+++ b/mcwin32/autoupdater/libappupdater
@@ -1 +1 @@
-Subproject commit 625c9975684b35e0db40ed4eee1ac76d65ee0990
+Subproject commit bf1f5e56f9162544ebef0cf6129af76ecab17caa
diff --git a/mcwin32/libmbedtls/.cvsignore b/mcwin32/libmbedtls/.cvsignore
index c6a8b89c..8bd53d40 100644
--- a/mcwin32/libmbedtls/.cvsignore
+++ b/mcwin32/libmbedtls/.cvsignore
@@ -1,5 +1,6 @@
mbedtls-2.13.0
mbedtls-2.16.6
+mbedtls-2.27.0
.unpacked.*
Makefile
*.err
diff --git a/mcwin32/libmbedtls/.gitignore b/mcwin32/libmbedtls/.gitignore
index b172d743..13f8fe02 100644
--- a/mcwin32/libmbedtls/.gitignore
+++ b/mcwin32/libmbedtls/.gitignore
@@ -1,5 +1,6 @@
mbedtls-2.13.0/
-mbedtls-2.16.6/
+mbedtls-2.16.6*/
+mbedtls-2.27.0*/
.unpacked.*
Makefile
*.err
diff --git a/mcwin32/libmbedtls/Makefile.in b/mcwin32/libmbedtls/Makefile.in
index ad6c5895..bbeae21a 100644
--- a/mcwin32/libmbedtls/Makefile.in
+++ b/mcwin32/libmbedtls/Makefile.in
@@ -1,10 +1,9 @@
-# Generated by makelib.pl, Sun Oct 21 00:33:54 2018
# -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*-
-# $Id: Makefile.in,v 1.4 2020/06/14 00:47:59 cvsuser Exp $
+# $Id: Makefile.in,v 1.6 2021/11/08 13:12:55 cvsuser Exp $
# libmbedtls makefile.
#
#
-# Copyright (c) 2017 - 2020 Adam Young.
+# Copyright (c) 2017 - 2021 Adam Young.
# All rights reserved.
#
# This file is part of the Midnight Commander.
@@ -68,7 +67,7 @@ D_OBJ= $(ROOT)/objects@TOOLCHAINEXT@/$(BUILD_TYPE)/libmbedtls
# Common flags
-XFLAGS=
+XFLAGS=
CFLAGS= @CFLAGS@
CWARN= @CWARN@
@@ -104,12 +103,12 @@ MBEDX509DLL= $(D_LIB)/$(LP)mbedx509.la
MBEDTLSLIB= $(D_LIB)/$(LP)mbedtls_static$(A)
MBEDTLSDLL= $(D_LIB)/$(LP)mbedtls.la
-VERSION= 2.16.6
+VERSION= 2.27.0
VERSION_1 =$(word 1,$(subst ., ,$(VERSION)))
VERSION_2 =$(word 2,$(subst ., ,$(VERSION)))
VERSION_3 =$(word 3,$(subst ., ,$(VERSION)))
VERSIONSPEC= $(subst .,:,$(VERSION))
-VERPACKED= mbedtls-$(VERSION)-apache.gr.tgz
+VERPACKED= mbedtls-$(VERSION).gr.tgz
MBEDBASE= ./mbedtls-$(VERSION)
MBEDSRC= $(MBEDBASE)/library
@@ -117,9 +116,11 @@ MBEDINCLUDE= $(MBEDBASE)/include
CINCLUDE+= -I./win32 -I$(MBEDINCLUDE)
CEXTRA+= -D_WIN32_WINNT=0x601 -DLIBMBED_WIN32 -DLIBMBED_HAVE_ZLIB
+CEXTRA+= -DMBEDTLS_EXPORTS -DKRML_VERIFIED_UINT128
VPATH+= $(MBEDSRC) $(MBEDBASE)/programs/test ./win32
+#see: library/CMakelists.txt
CRYPTO_SOURCES= aes.c aesni.c arc4.c \
aria.c asn1parse.c asn1write.c \
base64.c bignum.c blowfish.c \
@@ -132,7 +133,7 @@ CRYPTO_SOURCES= aes.c aesni.c arc4.c \
error.c gcm.c havege.c \
hkdf.c \
hmac_drbg.c md.c md2.c \
- md4.c md5.c md_wrap.c \
+ md4.c md5.c \
memory_buffer_alloc.c nist_kw.c \
oid.c padlock.c pem.c \
pk.c pk_wrap.c pkcs12.c \
@@ -150,8 +151,9 @@ X509_SOURCES= certs.c pkcs11.c x509.c \
TLS_SOURCES= debug.c net_sockets.c \
ssl_cache.c ssl_ciphersuites.c \
ssl_cli.c ssl_cookie.c \
+ ssl_msg.c \
ssl_srv.c ssl_ticket.c \
- ssl_tls.c
+ ssl_tls.c ssl_tls13_keys.c
CRYPTO_LIBOBJS=\
$(addprefix $(D_OBJ)/,$(subst .c,$(O),$(CRYPTO_SOURCES)))
@@ -187,7 +189,7 @@ endif
LIBOBJS= $(CRYPTO_LIBOBJS) \
$(X509_LIBOBJS) \
- $(TLS_LIBOBJS)
+ $(TLS_LIBOBJS)
DLLOBJS= $(CRYPTO_DLLOBJS) \
$(X509_DLLOBJS) \
@@ -264,7 +266,7 @@ $(MBEDTLSDLL): $(TLS_DLLOBJS)
#######
$(D_BIN)/$(TARGET): MAPFILE=$(basename $@).map
$(D_BIN)/$(TARGET): $(D_OBJ)/.created $(TARGETOBJS)
- $(CC) $(LDFLAGS) -o $@ $(TARGETOBJS) $(LDFLAGS) -llibmbedtls -llibmbedcrypto -llibmbedx509 $(LDLIBS) @LDMAPFILE@
+ $(CC) $(LDFLAGS) -o $@ $(TARGETOBJS) $(LDFLAGS) -llibmbedtls -llibmbedcrypto -llibmbedx509 $(LDLIBS) @LDMAPFILE@
#######
source: .unpacked.$(VERSION)
@@ -293,6 +295,7 @@ clean:
-@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) >/dev/null 2>&1
-@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1
-@$(RM) $(LIBOBJS) >/dev/null 2>&1
+ -@$(RM) ../include/mbedtls/* >/dev/null 2>&1
$(D_OBJ)/%$(O): %.c
$(CC) $(CFLAGS) -o $@ -c $<
diff --git a/mcwin32/libmbedtls/Makefile.in.2_13_0 b/mcwin32/libmbedtls/Makefile.in.2_13_0
index b6d55359..9e2a21dd 100644
--- a/mcwin32/libmbedtls/Makefile.in.2_13_0
+++ b/mcwin32/libmbedtls/Makefile.in.2_13_0
@@ -1,6 +1,5 @@
-# Generated by makelib.pl, Sun Oct 21 00:33:54 2018
# -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*-
-# $Id: Makefile.in.2_13_0,v 1.1 2020/05/01 14:32:59 cvsuser Exp $
+# $Id: Makefile.in.2_13_0,v 1.2 2021/11/08 13:12:23 cvsuser Exp $
# libmbedtls makefile.
#
#
diff --git a/mcwin32/libmbedtls/Makefile.in.2_16_0 b/mcwin32/libmbedtls/Makefile.in.2_16_0
new file mode 100644
index 00000000..f74b3f16
--- /dev/null
+++ b/mcwin32/libmbedtls/Makefile.in.2_16_0
@@ -0,0 +1,308 @@
+# -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*-
+# $Id: Makefile.in.2_16_0,v 1.1 2021/11/08 13:12:23 cvsuser Exp $
+# libmbedtls makefile.
+#
+#
+# Copyright (c) 2017 - 2021 Adam Young.
+# All rights reserved.
+#
+# This file is part of the Midnight Commander.
+#
+# The Midnight Commander 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.
+#
+# The Midnight Commander 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 .
+# ==end==
+#
+
+@SET_MAKE@
+ROOT= @abs_top_builddir@
+top_builddir= @top_builddir@
+
+# File extensions
+
+E=
+O= .o
+H= .h
+A= .a
+LP= lib
+
+CLEAN= *.bak *~ *.BAK *.swp *.tmp core *.core a.out
+XCLEAN=
+
+# Compilers, programs
+
+CC= @CC@
+AR= @AR@
+RANLIB= @RANLIB@
+RM= @RM@
+PERL= @PERL@
+LIBTOOL= @LIBTOOL@
+RC= @RC@
+
+# Configuration
+
+ifeq ("$(BUILD_TYPE)","") #default
+BUILD_TYPE= debug
+MAKEFLAGS+= BUILD_TYPE=debug
+endif
+ifneq ("$(BUILD_TYPE)","release")
+RTSUFFIX=d
+endif
+
+# Directories
+
+D_INC= $(ROOT)/include
+D_BIN= $(ROOT)/bin@TOOLCHAINEXT@/$(BUILD_TYPE)
+D_LIB= $(ROOT)/lib@TOOLCHAINEXT@/$(BUILD_TYPE)
+D_OBJ= $(ROOT)/objects@TOOLCHAINEXT@/$(BUILD_TYPE)/libmbedtls
+
+# Common flags
+
+XFLAGS=
+
+CFLAGS= @CFLAGS@
+CWARN= @CWARN@
+CDEBUG= @CDEBUG@
+CRELEASE= @CRELEASE@
+LDDEBUG= @LDDEBUG@
+LDRELEASE= @LDRELEASE@
+
+CINCLUDE= -I. -I$(D_INC) @CINCLUDE@
+CEXTRA= @DEFS@
+ifeq ("$(BUILD_TYPE)","release")
+CFLAGS+= $(CRELEASE) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS)
+LDFLAGS= $(LDRELEASE) @LDFLAGS@
+else
+CFLAGS+= $(CDEBUG) $(CWARN) $(CINCLUDE) $(CEXTRA) $(XFLAGS)
+LDFLAGS= $(LDDEBUG) @LDFLAGS@
+endif
+LDLIBS= -L$(D_LIB) $(D_LIB)/$(LP)regex$(A) @LIBS@ @LIBM@ @EXTRALIBS@
+
+ARFLAGS= rcv
+RMFLAGS= -f
+
+############################################################
+
+# Targets
+
+MBEDCRYPTOLIB= $(D_LIB)/$(LP)mbedcrypto_static$(A)
+MBEDCRYPTODLL= $(D_LIB)/$(LP)mbedcrypto.la
+
+MBEDX509LIB= $(D_LIB)/$(LP)mbedx509_static$(A)
+MBEDX509DLL= $(D_LIB)/$(LP)mbedx509.la
+
+MBEDTLSLIB= $(D_LIB)/$(LP)mbedtls_static$(A)
+MBEDTLSDLL= $(D_LIB)/$(LP)mbedtls.la
+
+VERSION= 2.16.6
+VERSION_1 =$(word 1,$(subst ., ,$(VERSION)))
+VERSION_2 =$(word 2,$(subst ., ,$(VERSION)))
+VERSION_3 =$(word 3,$(subst ., ,$(VERSION)))
+VERSIONSPEC= $(subst .,:,$(VERSION))
+VERPACKED= mbedtls-$(VERSION)-apache.gr.tgz
+
+MBEDBASE= ./mbedtls-$(VERSION)
+MBEDSRC= $(MBEDBASE)/library
+MBEDINCLUDE= $(MBEDBASE)/include
+
+CINCLUDE+= -I./win32 -I$(MBEDINCLUDE)
+CEXTRA+= -D_WIN32_WINNT=0x601 -DLIBMBED_WIN32 -DLIBMBED_HAVE_ZLIB
+
+VPATH+= $(MBEDSRC) $(MBEDBASE)/programs/test ./win32
+
+CRYPTO_SOURCES= aes.c aesni.c arc4.c \
+ aria.c asn1parse.c asn1write.c \
+ base64.c bignum.c blowfish.c \
+ camellia.c ccm.c chacha20.c \
+ chachapoly.c cipher.c cipher_wrap.c \
+ cmac.c ctr_drbg.c des.c \
+ dhm.c ecdh.c ecdsa.c \
+ ecjpake.c ecp.c \
+ ecp_curves.c entropy.c entropy_poll.c \
+ error.c gcm.c havege.c \
+ hkdf.c \
+ hmac_drbg.c md.c md2.c \
+ md4.c md5.c md_wrap.c \
+ memory_buffer_alloc.c nist_kw.c \
+ oid.c padlock.c pem.c \
+ pk.c pk_wrap.c pkcs12.c \
+ pkcs5.c pkparse.c pkwrite.c \
+ platform.c platform_util.c poly1305.c \
+ ripemd160.c rsa_internal.c rsa.c \
+ sha1.c sha256.c sha512.c \
+ threading.c timing.c version.c \
+ version_features.c xtea.c
+
+X509_SOURCES= certs.c pkcs11.c x509.c \
+ x509_create.c x509_crl.c x509_crt.c \
+ x509_csr.c x509write_crt.c x509write_csr.c
+
+TLS_SOURCES= debug.c net_sockets.c \
+ ssl_cache.c ssl_ciphersuites.c \
+ ssl_cli.c ssl_cookie.c \
+ ssl_srv.c ssl_ticket.c \
+ ssl_tls.c
+
+CRYPTO_LIBOBJS=\
+ $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(CRYPTO_SOURCES)))
+CRYPTO_DLLOBJS=\
+ $(subst $(O),.lo,$(CRYPTO_LIBOBJS)) \
+ $(D_OBJ)/crypto_globals.lo
+ifeq ("mingw32","win32")
+CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls_res.o
+else ifeq ("win32","win32")
+CRYPTO_DLLOBJS+=$(D_OBJ)/libmbedtls.res
+endif
+
+X509_LIBOBJS=\
+ $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(X509_SOURCES)))
+X509_DLLOBJS=\
+ $(subst $(O),.lo,$(X509_LIBOBJS)) \
+ $(D_OBJ)/x509_globals.lo
+ifeq ("mingw32","win32")
+X509_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o
+else ifeq ("win32","win32")
+X509_DLLOBJS+= $(D_OBJ)/libmbedtls.res
+endif
+
+TLS_LIBOBJS=\
+ $(addprefix $(D_OBJ)/,$(subst .c,$(O),$(TLS_SOURCES)))
+TLS_DLLOBJS=\
+ $(subst $(O),.lo,$(TLS_LIBOBJS))
+ifeq ("mingw32","win32")
+TLS_DLLOBJS+= $(D_OBJ)/libmbedtls_res.o
+else ifeq ("win32","win32")
+TLS_DLLOBJS+= $(D_OBJ)/libmbedtls.res
+endif
+
+LIBOBJS= $(CRYPTO_LIBOBJS) \
+ $(X509_LIBOBJS) \
+ $(TLS_LIBOBJS)
+
+DLLOBJS= $(CRYPTO_DLLOBJS) \
+ $(X509_DLLOBJS) \
+ $(TLS_DLLOBJS)
+
+LIBS= $(MBEDCRYPTOLIB) \
+ $(MBEDX509LIB) \
+ $(MBEDTLSLIB)
+
+DLLS= $(MBEDCRYPTODLL) \
+ $(MBEDX509DLL) \
+ $(MBEDTLSDLL)
+
+TARGET= mbedtls_selftest$(E)
+TARGETOBJS= $(D_OBJ)/selftest.obj
+
+TSKS= $(D_BIN)/$(TARGET)
+
+# Rules
+
+.PHONY: build release debug
+build: source unpacked
+unpacked: object $(LIBS) $(DLLS) $(TSKS) installinc
+
+release:
+ $(MAKE) BUILD_TYPE=release $(filter-out release, $(MAKECMDGOALS))
+debug:
+ $(MAKE) BUILD_TYPE=debug $(filter-out debug, $(MAKECMDGOALS))
+
+CEXTRA += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D__STDC_WANT_LIB_EXT1__=1
+
+#######
+$(MBEDCRYPTOLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDCRYPTO_SOURCE
+$(MBEDCRYPTOLIB): $(CRYPTO_LIBOBJS)
+ $(RM) $(RMFLAGS) $@ >/dev/null 2>&1
+ $(AR) $(ARFLAGS) $@ $^
+ $(RANLIB) $@
+
+$(MBEDCRYPTODLL): LIBNAME=libmbedcrypto
+$(MBEDCRYPTODLL): LIBDEF=-export-symbols win32/libmbedcrypto.def
+$(MBEDCRYPTODLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDCRYPTO_SOURCE -D_WINDLL
+$(MBEDCRYPTODLL): $(CRYPTO_DLLOBJS)
+ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \
+ -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ $(LDLIBS)
+
+#######
+$(MBEDX509LIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDX509_SOURCE -DLIBMBEDX509
+$(MBEDX509LIB): $(X509_LIBOBJS)
+ $(RM) $(RMFLAGS) $@ >/dev/null 2>&1
+ $(AR) $(ARFLAGS) $@ $^
+ $(RANLIB) $@
+
+$(MBEDX509DLL): LIBNAME=libmbedx509
+$(MBEDX509DLL): LIBDEF=-export-symbols win32/libmbedx509.def
+$(MBEDX509DLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDX509_SOURCE -D_WINDLL
+$(MBEDX509DLL): $(X509_DLLOBJS)
+ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \
+ -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -llibmbedcrypto $(LDLIBS)
+
+#######
+$(MBEDTLSLIB): CEXTRA += -DLIBMBED_STATIC -DLIBMBEDTLS_SOURCE
+$(MBEDTLSLIB): $(TLS_LIBOBJS)
+ $(RM) $(RMFLAGS) $@ >/dev/null 2>&1
+ $(AR) $(ARFLAGS) $@ $^
+ $(RANLIB) $@
+
+$(MBEDTLSDLL): LIBNAME=libmbedtls
+$(MBEDTLSDLL): LIBDEF=-export-symbols win32/libmbedtls.def
+$(MBEDTLSDLL): CEXTRA += -DLIBMBED_DYNAMIC -DLIBMBEDTLS_SOURCE -DLIBMBEDTLS -D_WINDLL
+$(MBEDTLSDLL): $(TLS_DLLOBJS)
+ $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -version-number $(VERSIONSPEC) \
+ -rpath $(D_LIB) -bindir $(D_BIN) $(LIBDEF) -o $@ $^ -llibmbedcrypto -llibmbedx509 $(LDLIBS)
+
+#######
+$(D_BIN)/$(TARGET): MAPFILE=$(basename $@).map
+$(D_BIN)/$(TARGET): $(D_OBJ)/.created $(TARGETOBJS)
+ $(CC) $(LDFLAGS) -o $@ $(TARGETOBJS) $(LDFLAGS) -llibmbedtls -llibmbedcrypto -llibmbedx509 $(LDLIBS) @LDMAPFILE@
+
+#######
+source: .unpacked.$(VERSION)
+ $(MAKE) unpacked
+
+.unpacked.$(VERSION): $(VERPACKED)
+ @echo "do not delete, managed file" > $@
+ @echo "unpacking source $VERPACKED"
+ @gzip -c -d $(VERPACKED) | tar -xvf -
+
+.PHONY: object
+object: $(D_OBJ)/.created
+
+.PHONY: installinc
+installinc: ../include/.created ../include/mbedtls/.created
+ @echo publishing headers ...
+ -cp $(MBEDINCLUDE)/mbedtls/*.h ../include/mbedtls
+ -cp ./win32/*.h ../include/mbedtls
+
+%/.created:
+ -@mkdir $(@D)
+ @echo "do not delete, managed directory" > $@
+
+clean:
+ @echo $(BUILD_TYPE) clean
+ -@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) >/dev/null 2>&1
+ -@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1
+ -@$(RM) $(LIBOBJS) >/dev/null 2>&1
+
+$(D_OBJ)/%$(O): %.c
+ $(CC) $(CFLAGS) -o $@ -c $<
+
+$(D_OBJ)/%.lo: %.c
+ $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -o $@ -c $<
+
+$(D_OBJ)/%.res: %.rc
+ $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -fo $@ $<
+
+$(D_OBJ)/%_res.o: %.rc
+ $(RC) -DLIBNAME=$(LIBNAME) -DVERSION=$(VERSION) -DVERSION_1=$(VERSION_1) -DVERSION_2=$(VERSION_2) -DVERSION_3=$(VERSION_3) -o $@ $<
+
+#end
diff --git a/mcwin32/libmbedtls/mbedtls-2.27.0.gr.tgz b/mcwin32/libmbedtls/mbedtls-2.27.0.gr.tgz
new file mode 100644
index 00000000..57577d4c
Binary files /dev/null and b/mcwin32/libmbedtls/mbedtls-2.27.0.gr.tgz differ
diff --git a/mcwin32/libmbedtls/readme_2_16_6.txt b/mcwin32/libmbedtls/readme_2_16_6.txt
index eecbfc38..b8d33f23 100644
--- a/mcwin32/libmbedtls/readme_2_16_6.txt
+++ b/mcwin32/libmbedtls/readme_2_16_6.txt
@@ -2,10 +2,10 @@
Source: mbed TLS 2.16.6 (Apache)
include\mbedtls\platform.h
-
+
#if defined(_WIN32) && !defined(LIBMBEDCRYPTO_SOURCE) //stdlib, linkage
+ #include "crypto_globals.h"
- + #define mbedtls_fprintf get_mbedtls_fprintf()
+ + #define mbedtls_fprintf get_mbedtls_fprintf()
+ #else
extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
+ #endif
@@ -119,6 +119,5 @@
+ mbedtls_x509_crt_verify_restartable
-
--end--
diff --git a/mcwin32/libmbedtls/readme_2_27_0.txt b/mcwin32/libmbedtls/readme_2_27_0.txt
new file mode 100644
index 00000000..eeee4f04
--- /dev/null
+++ b/mcwin32/libmbedtls/readme_2_27_0.txt
@@ -0,0 +1,129 @@
+ Source: mbed TLS 2.27.0
+
+ Makefile.in:
+
+ TLS_SOURCES=
+ + ssl_msg.c
+ + ssl_tls13_keys.c
+
+ include\mbedtls\platform.h:
+
+ - #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900)
+ + #if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900) || defined(__WATCOMC__)
+ #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
+ #define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
+
+ -------
+
+ #if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
+ /* We need FILE * */
+ #include
+ + #if defined(LIBMBED_WIN32) && !defined(LIBMBEDCRYPTO_SOURCE) //stdlib, linkage
+ + #include "crypto_globals.h"
+ + #define mbedtls_fprintf get_mbedtls_fprintf()
+ + #else
+ extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... );
+ + #endif
+
+ -------
+
+ #if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
+ + #if defined(LIBMBED_WIN32) && !defined(LIBMBEDCRYPTO_SOURCE) //stdlib, linkage
+ + #include "crypto_globals.h"
+ + #define mbedtls_printf get_mbedtls_printf()
+ + #else
+ extern int (*mbedtls_printf)( const char * format, ... );
+ + #endif
+
+ -------
+
+ #if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
+ + #if defined(LIBMBED_WIN32) && !defined(LIBMBEDCRYPTO_SOURCE) //stdlib, linkage
+ + #include "crypto_globals.h"
+ + #define mbedtls_snprintf get_mbedtls_snprintf()
+ + #else
+ extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... );
+ + #endif
+
+ -------
+
+ #if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
+ #include
+ + #if defined(LIBMBED_WIN32) && !defined(LIBMBEDCRYPTO_SOURCE) //stdlib, linkage
+ + #include "crypto_globals.h"
+ + #define mbedtls_vsnprintf get_mbedtls_vsnprintf()
+ + #else
+ extern int (*mbedtls_vsnprintf)( char * s, size_t n, const char * format, va_list arg );
+ + #endif
+
+ include\mbedtls\platform_util.h
+
+ + #if defined(LIBMBED_WIN32) && defined(LIBMBEDCRYPTO_SOURCE) //stdlib, linkage
+ + #include "crypto_globals.h"
+ + CRYPTO_MBEDAPI struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt,
+ + struct tm *tm_buf );
+ + #else
+ struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt,
+ struct tm *tm_buf );
+ + #endif
+
+ library\platform_util.c:
+
+ + #if defined(_MSC_VER) || defined(__WATCOMC__) //stdlib, linkage
+ + static void * stdlib_memset( void *buf, int value, size_t len)
+ + {
+ + return memset( buf, value, len);
+ + }
+ +
+ + static void * (* const volatile memset_func)( void *, int, size_t ) = stdlib_memset;
+ + #else
+ static void * (* const volatile memset_func)( void *, int, size_t ) = memset;
+ + #endif
+
+ -----
+
+ #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
+ + #if defined(__WATCOMC__)
+ + return gmtime_s( tt, tm_buf );
+ + #else
+ + return( ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL );
+ + #endif
+
+ library\ssl_tls.c:
+
+ #if defined(MBEDTLS_SSL_TLS_C)
+ + #if defined(_WINDLL) && defined(LIBMBED_DYNAMIC) //stdlib, linkage
+ + #include "x509_globals.h"
+ + #endif
+
+ -----
+
+ + #if defined(_WINDLL) && defined(LIBMBED_DYNAMIC) //stdlib, linkage
+ + conf->cert_profile = get_mbedtls_x509_crt_profile_suiteb();
+ + #else
+ conf->cert_profile = &mbedtls_x509_crt_profile_suiteb;
+ + #endf
+
+ -----
+
+ + #if defined(_WINDLL) && defined(LIBMBED_DYNAMIC) //stdlib, linkage
+ + conf->cert_profile = get_mbedtls_x509_crt_profile_default();
+ + #else
+ conf->cert_profile = &mbedtls_x509_crt_profile_default;
+ + #endif
+
+ win32\libmbedcrypto.def:
+
+ ; library\cipher.c
+ + mbedtls_cipher_auth_encrypt_ext
+ + mbedtls_cipher_auth_decrypt_ext
+
+ ; library\ans1write.c
+ + mbedtls_asn1_write_named_bitstring
+
+ ; library\oid.c
+ + mbedtls_oid_get_certificate_policies
+
+ win32\libmbedx509.def:
+
+--end--
diff --git a/mcwin32/libmbedtls/win32/crypto_globals.c b/mcwin32/libmbedtls/win32/crypto_globals.c
index 5580425d..fb9cd3c0 100644
--- a/mcwin32/libmbedtls/win32/crypto_globals.c
+++ b/mcwin32/libmbedtls/win32/crypto_globals.c
@@ -1,4 +1,4 @@
-//$Id: crypto_globals.c,v 1.3 2020/05/01 14:33:00 cvsuser Exp $
+//$Id: crypto_globals.c,v 1.5 2021/11/08 14:40:45 cvsuser Exp $
//
// libmbedcrypto support -
// retrieve the dynamic fprintf/snprintf/printf implementations (if required)
@@ -7,7 +7,7 @@
#include "crypto_globals.h"
#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
-mbedtls_fprintf_t
+CRYPTO_MBEDAPI mbedtls_fprintf_t
get_mbedtls_fprintf(void) {
#undef mbedtls_fprintf
return mbedtls_fprintf;
@@ -15,22 +15,82 @@ get_mbedtls_fprintf(void) {
#endif
+#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
+CRYPTO_MBEDAPI mbedtls_printf_t
+get_mbedtls_printf(void) {
+#undef mbedtls_printf
+ return mbedtls_printf;
+}
+#endif
+
#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
-mbedtls_snprintf_t
+CRYPTO_MBEDAPI mbedtls_snprintf_t
get_mbedtls_snprintf(void) {
-#undef mbedtls_snprintf
+#undef mbedtls_snprintf
return mbedtls_snprintf;
}
#endif
-#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
-mbedtls_printf_t
-get_mbedtls_printf(void) {
-#undef mbedtls_printf
- return mbedtls_printf;
+#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
+CRYPTO_MBEDAPI mbedtls_vsnprintf_t
+get_mbedtls_vsnprintf(void) {
+#undef mbedtls_vsnprintf
+ return mbedtls_vsnprintf;
+}
+#endif
+
+
+/*
+ * Optional toolchain components, supply allowing common def's
+ *
+ * see: platform.h/.c
+ */
+
+#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900) || defined(__WATCOMC__)
+#define HAVE_MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
+#define HAVE_MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
+#endif
+
+
+#if !defined(HAVE_MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF)
+int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... )
+{
+ int ret = -1;
+ va_list argp;
+
+ va_start( argp, fmt );
+ ret = mbedtls_vsnprintf( s, n, fmt, argp );
+ va_end( argp );
+
+ return( ret );
}
+#endif //HAVE_MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF
+
+
+#if !defined(HAVE_MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF)
+int mbedtls_platform_win32_vsnprintf( char *s, size_t n, const char *fmt, va_list arg )
+{
+ int ret = -1;
+
+ /* Avoid calling the invalid parameter handler by checking ourselves */
+ if( s == NULL || n == 0 || fmt == NULL )
+ return( -1 );
+
+#if defined(_TRUNCATE)
+ ret = vsnprintf_s( s, n, _TRUNCATE, fmt, arg );
+#else
+ ret = vsnprintf( s, n, fmt, arg );
+ if( ret < 0 || (size_t) ret == n )
+ {
+ s[n-1] = '\0';
+ ret = -1;
+ }
#endif
+ return( ret );
+}
+#endif //HAVE_MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF
+
//end
diff --git a/mcwin32/libmbedtls/win32/crypto_globals.h b/mcwin32/libmbedtls/win32/crypto_globals.h
index 6753a205..e40e51ce 100644
--- a/mcwin32/libmbedtls/win32/crypto_globals.h
+++ b/mcwin32/libmbedtls/win32/crypto_globals.h
@@ -1,7 +1,7 @@
#ifndef CRYPTO_GLOBALS_H_INCLUDED
#define CRYPTO_GLOBALS_H_INCLUDED
#pragma once
-//$Id: crypto_globals.h,v 1.2 2020/05/01 14:33:00 cvsuser Exp $
+//$Id: crypto_globals.h,v 1.3 2021/11/08 13:13:02 cvsuser Exp $
//
// libmbedcrypto support
//
@@ -27,19 +27,24 @@
#endif
#include "mbedtls/platform.h"
+#include
typedef int (*mbedtls_fprintf_t)(FILE *stream, const char *format, ...);
-typedef int (*mbedtls_snprintf_t)(char * s, size_t n, const char * format, ...);
typedef int (*mbedtls_printf_t)(const char *format, ...);
+typedef int (*mbedtls_snprintf_t)(char * s, size_t n, const char * format, ...);
+typedef int (*mbedtls_vsnprintf_t)(char * s, size_t n, const char * format, va_list arg);
#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
CRYPTO_MBEDAPI mbedtls_fprintf_t get_mbedtls_fprintf(void);
#endif
+#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
+CRYPTO_MBEDAPI mbedtls_printf_t get_mbedtls_printf(void);
+#endif
#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT)
CRYPTO_MBEDAPI mbedtls_snprintf_t get_mbedtls_snprintf(void);
#endif
-#if defined(MBEDTLS_PLATFORM_PRINTF_ALT)
-CRYPTO_MBEDAPI mbedtls_printf_t get_mbedtls_printf(void);
+#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT)
+CRYPTO_MBEDAPI mbedtls_vsnprintf_t get_mbedtls_vsnprintf(void);
#endif
#endif //CRYPTO_GLOBALS_H_INCLUDED
diff --git a/mcwin32/libmbedtls/win32/libmbedcrypto.def b/mcwin32/libmbedtls/win32/libmbedcrypto.def
index 7c83d219..34a4ad1c 100644
--- a/mcwin32/libmbedtls/win32/libmbedcrypto.def
+++ b/mcwin32/libmbedtls/win32/libmbedcrypto.def
@@ -1,4 +1,4 @@
-;$Id: libmbedcrypto.def,v 1.2 2020/05/01 14:33:00 cvsuser Exp $
+;$Id: libmbedcrypto.def,v 1.3 2021/11/08 13:13:02 cvsuser Exp $
;
; libmbedcrypto library definition (4.16.6)
;
@@ -65,6 +65,7 @@ EXPORTS
mbedtls_asn1_write_raw_buffer
mbedtls_asn1_write_tag
mbedtls_asn1_write_tagged_string
+ mbedtls_asn1_write_named_bitstring
; library\base64.c
mbedtls_base64_decode
@@ -171,6 +172,8 @@ EXPORTS
; library\cipher.c
mbedtls_cipher_auth_decrypt
mbedtls_cipher_auth_encrypt
+ mbedtls_cipher_auth_encrypt_ext
+ mbedtls_cipher_auth_decrypt_ext
mbedtls_cipher_check_tag
mbedtls_cipher_crypt
mbedtls_cipher_finish
@@ -198,7 +201,7 @@ EXPORTS
mbedtls_ctr_drbg_random_with_add
mbedtls_ctr_drbg_reseed
mbedtls_ctr_drbg_seed
- mbedtls_ctr_drbg_seed_entropy_len
+ ;;mbedtls_ctr_drbg_seed_entropy_len
mbedtls_ctr_drbg_self_test
mbedtls_ctr_drbg_set_entropy_len
mbedtls_ctr_drbg_set_prediction_resistance
@@ -412,7 +415,8 @@ EXPORTS
mbedtls_oid_get_sig_alg
mbedtls_oid_get_sig_alg_desc
mbedtls_oid_get_x509_ext_type
-
+ mbedtls_oid_get_certificate_policies
+
; library\pem.c
mbedtls_pem_free
mbedtls_pem_init
diff --git a/mcwin32/libssh2/.cvsignore b/mcwin32/libssh2/.cvsignore
index 594b1a28..ed193da4 100644
--- a/mcwin32/libssh2/.cvsignore
+++ b/mcwin32/libssh2/.cvsignore
@@ -1,5 +1,6 @@
libssh2-1.8.0
libssh2-1.9.0
+libssh2-1.10.0
.unpacked.*
Makefile
*.err
diff --git a/mcwin32/libssh2/.gitignore b/mcwin32/libssh2/.gitignore
index 19a756fe..e6a790fe 100644
--- a/mcwin32/libssh2/.gitignore
+++ b/mcwin32/libssh2/.gitignore
@@ -1,5 +1,6 @@
libssh2-1.8.0/
libssh2-1.9.0/
+libssh2-1.10.0/
.unpacked.*
Makefile
*.err
diff --git a/mcwin32/libssh2/Makefile.in b/mcwin32/libssh2/Makefile.in
index 9fd4aee2..6712ee12 100644
--- a/mcwin32/libssh2/Makefile.in
+++ b/mcwin32/libssh2/Makefile.in
@@ -1,9 +1,9 @@
# -*- mode: mak; indent-tabs-mode: t; tab-width: 8 -*-
-# $Id: Makefile.in,v 1.12 2021/04/13 16:00:16 cvsuser Exp $
+# $Id: Makefile.in,v 1.14 2021/11/08 13:14:15 cvsuser Exp $
# libssh2 makefile.
#
#
-# Copyright (c) 2015 - 2020, Adam Young.
+# Copyright (c) 2015 - 2021, Adam Young.
# All rights reserved.
#
#
@@ -99,7 +99,7 @@ RMFLAGS= -f
SSH2LIB= $(D_LIB)/$(LP)ssh2_static$(A)
SSH2DLL= $(D_LIB)/$(LP)ssh2.la
-VERSION= 1.9.0
+VERSION= 1.10.0
VERSIONSPEC= $(subst .,:,$(VERSION))
VERPACKED= libssh2-$(VERSION).gr.tgz
@@ -139,6 +139,10 @@ CSOURCES=\
CSOURCES+=\
blowfish.c bcrypt_pbkdf.c
+#+1.10.0
+CSOURCES+=\
+ agent_win.c
+
LIBOBJS=\
$(addprefix $(D_OBJ)/,$(subst .c,$(O),$(CSOURCES)))
@@ -208,7 +212,7 @@ clean:
-@$(LIBTOOL) --mode=clean $(RM) $(DLLS) $(DLLOBJS) >/dev/null 2>&1
-@$(RM) $(RMFLAGS) $(BAK) $(TSKS) $(LIBS) $(CLEAN) $(XCLEAN) >/dev/null 2>&1
-@$(RM) $(LIBOBJS) >/dev/null 2>&1
- -@$(RM) ../include/libssh2*.h >/dev/null 2>&1
+ -@$(RM) ../include/libssh2/*.h >/dev/null 2>&1
$(D_OBJ)/%$(O): %.c
$(CC) $(CFLAGS) -o $@ -c $<
diff --git a/mcwin32/libssh2/libssh2-1.10.0.gr.tgz b/mcwin32/libssh2/libssh2-1.10.0.gr.tgz
new file mode 100644
index 00000000..8dece8c3
Binary files /dev/null and b/mcwin32/libssh2/libssh2-1.10.0.gr.tgz differ
diff --git a/mcwin32/libssh2/readme_1_10_0.txt b/mcwin32/libssh2/readme_1_10_0.txt
new file mode 100644
index 00000000..859af3cc
--- /dev/null
+++ b/mcwin32/libssh2/readme_1_10_0.txt
@@ -0,0 +1,32 @@
+
+ Source: libssh2 1.10.0, code changes
+
+ Makefile.in:
+
+ + agent_win$(O)
+
+
+ src\libssh2_priv.h:
+
+ #include
+ + #include //UINT_MAX
+
+
+ src\misc.c:
+
+ #ifdef WIN32
+ + #if defined(__WATCOMC__)
+ + static void *safememset(void *a, int b, size_t c) {
+ + return memset(a, b, c);
+ + }
+ + static void * (__watcall * const volatile memset_libssh)(void *, int, size_t) =
+ + safememset;
+ + #else
+ static void * (__cdecl * const volatile memset_libssh)(void *, int, size_t) =
+ memset;
+ + #endif
+ #else
+ static void * (* const volatile memset_libssh)(void *, int, size_t) = memset;
+ #endif
+
+ ---------
diff --git a/mcwin32/libssh2/readme_1_9_0.txt b/mcwin32/libssh2/readme_1_9_0.txt
index d01266b4..43f2f9bd 100644
--- a/mcwin32/libssh2/readme_1_9_0.txt
+++ b/mcwin32/libssh2/readme_1_9_0.txt
@@ -1,13 +1,13 @@
Source: libssh2 1.9.0, code changes
- src\libssh2_priv.h
+ src\libssh2_priv.h
#include
- + #include //UINT_MAX
+ + #include //UINT_MAX
- src\misc.c
+ src\misc.c
#ifdef WIN32
+ #if defined(__WATCOMC__)
@@ -18,7 +18,7 @@
+ safememset;
+ #else
static void * (__cdecl * const volatile memset_libssh)(void *, int, size_t) =
- memset;
+ memset;
+ #endif
#else
static void * (* const volatile memset_libssh)(void *, int, size_t) = memset;
diff --git a/mcwin32/libw32/w32_child.c b/mcwin32/libw32/w32_child.c
index 476f8ac0..3015a5db 100644
--- a/mcwin32/libw32/w32_child.c
+++ b/mcwin32/libw32/w32_child.c
@@ -1,5 +1,5 @@
#include
-__CIDENT_RCSID(gr_w32_child_c,"$Id: w32_child.c,v 1.11 2020/05/06 19:45:42 cvsuser Exp $")
+__CIDENT_RCSID(gr_w32_child_c,"$Id: w32_child.c,v 1.12 2021/11/08 13:20:58 cvsuser Exp $")
/* -*- mode: c; indent-width: 4; -*- */
/*
@@ -570,7 +570,7 @@ w32_child_exec(
*/
(void) memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
- si.wShowWindow = SW_HIDE; //SW_NORMAL, SW_SHOWMINIMIZED
+ si.wShowWindow = ((args->flags & W32_SWHIDE) ? SW_HIDE : SW_SHOW);
si.hStdInput = hStdIn;
si.hStdOutput = hStdOut;
si.hStdError = hStdErr;
@@ -715,7 +715,7 @@ WASNOT_ENOENT(void)
LIBW32_API BOOL
w32_child_wait(HANDLE hProc, int *status, int nowait)
{
- DWORD dwStatus, rc;
+ DWORD dwStatus = 0, rc;
BOOL ret = FALSE;
/*
@@ -728,7 +728,13 @@ w32_child_wait(HANDLE hProc, int *status, int nowait)
errno = ECHILD;
/*
- * Wait for child process, then fetch its exit code
+ * Verify handle.
+ */
+ } else if (0 == GetExitCodeProcess(hProc, (LPDWORD)&dwStatus)) {
+ errno = ECHILD;
+
+ /*
+ * Wait for child process, then fetch its exit code.
*/
} else if ((rc = WaitForSingleObject(hProc, (nowait ? 0 : INFINITE))) == WAIT_OBJECT_0 &&
GetExitCodeProcess(hProc, (LPDWORD)&dwStatus)) {
diff --git a/mcwin32/libw32/w32_shell.c b/mcwin32/libw32/w32_shell.c
index f74b638e..a7bf4b29 100644
--- a/mcwin32/libw32/w32_shell.c
+++ b/mcwin32/libw32/w32_shell.c
@@ -1,5 +1,5 @@
#include
-__CIDENT_RCSID(gr_w32_shell_c,"$Id: w32_shell.c,v 1.8 2020/04/28 22:59:44 cvsuser Exp $")
+__CIDENT_RCSID(gr_w32_shell_c,"$Id: w32_shell.c,v 1.9 2021/11/08 13:20:58 cvsuser Exp $")
/* -*- mode: c; indent-width: 4; -*- */
/*
@@ -86,6 +86,7 @@ w32_shell(const char *shell, const char *cmd,
"/C", // command
"/k" // interactive
};
+ const int interactive = ((NULL == cmd || !*cmd) ? 1 : 0);
char *slash, *shname = WIN32_STRDUP(shell ? shell : w32_getshell());
int xstdout = FALSE, xstderr = FALSE; // mode (TRUE == append)
SECURITY_ATTRIBUTES sa;
@@ -94,7 +95,6 @@ w32_shell(const char *shell, const char *cmd,
win32_spawn_t args = {0};
const char *argv[4] = {0};
HANDLE hProc = 0;
- int interactive = 0;
int status = 0;
// sync or async
@@ -176,23 +176,26 @@ w32_shell(const char *shell, const char *cmd,
}
// command or interactive
+ (void)memset(&args, 0, sizeof(args));
+
if (w32_iscommand(shname)) {
slash = shname - 1;
while ((slash = strchr(slash + 1, XSLASHCHAR)) != NULL) {
*slash = SLASHCHAR; // convert slashes
}
- }
- if (NULL == cmd || !*cmd) {
- ++interactive; // interactive if no cmd
+ argv[0] = shname;
+ argv[1] = sharg[ interactive ]; // /C or /K
+ argv[2] = cmd;
+ argv[3] = NULL;
+
+ } else {
+ argv[0] = shname;
+ argv[1] = cmd;
+ argv[2] = NULL;
}
// create child process
- (void)memset(&args, 0, sizeof(args));
- argv[0] = shname;
- argv[1] = sharg[ interactive ];
- argv[2] = cmd;
- argv[3] = NULL;
args.argv = argv;
args._dwFlags = 0;
diff --git a/mcwin32/libw32/win32_child.h b/mcwin32/libw32/win32_child.h
index d92865be..6f8832e9 100644
--- a/mcwin32/libw32/win32_child.h
+++ b/mcwin32/libw32/win32_child.h
@@ -1,7 +1,7 @@
#ifndef LIBW32_WIN32_CHILD_H_INCLUDED
#define LIBW32_WIN32_CHILD_H_INCLUDED
#include
-__CIDENT_RCSID(gr_libw32_win32_child_h,"$Id: win32_child.h,v 1.8 2021/04/13 15:49:35 cvsuser Exp $")
+__CIDENT_RCSID(gr_libw32_win32_child_h,"$Id: win32_child.h,v 1.9 2021/11/08 13:20:58 cvsuser Exp $")
__CPRAGMA_ONCE
/* -*- mode: c; indent-width: 4; -*- */
@@ -44,6 +44,7 @@ typedef struct win32_spawn {
const char ** envp;
const char * dir;
#define W32_SPAWNDETACHED 0x01
+#define W32_SWHIDE 0x02 /* hide otherwise show child window */
int flags;
unsigned long _dwFlags; /* reserved */
unsigned long _dwProcessId; /* reserved */