From 987993a38d12f6de052683711e673fa6bbbdae86 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 2 Nov 2010 16:27:46 +0000 Subject: [PATCH] First take on changes to allow building with MSC for W32CE. Fixed regression in plain W32 build. --- ChangeLog | 4 + autogen.sh | 2 +- configure.ac | 2 +- contrib/ChangeLog | 5 + contrib/conf-w32ce-msc/build.mk | 253 +++++++++++++++++++++++++ contrib/conf-w32ce-msc/config.h | 314 ++++++++++++++++++++++++++++++++ src/ChangeLog | 27 ++- src/Makefile.am | 3 +- src/ath-pthread.c | 8 +- src/ath.c | 13 +- src/ath.h | 4 +- src/data-compat.c | 4 +- src/data-fd.c | 4 +- src/data-mem.c | 4 +- src/data.c | 4 +- src/debug.c | 4 +- src/encrypt-sign.c | 3 + src/engine-assuan.c | 4 +- src/engine-g13.c | 4 +- src/engine-gpg.c | 4 +- src/engine-gpgconf.c | 4 +- src/engine-gpgsm.c | 4 +- src/engine-uiserver.c | 4 +- src/gpgme.c | 4 +- src/posix-io.c | 9 +- src/posix-sema.c | 8 +- src/priv-io.h | 3 + src/ttyname_r.c | 8 +- src/util.h | 8 +- src/vfs-create.c | 1 + src/w32-ce.c | 3 +- src/w32-ce.h | 8 +- src/w32-glib-io.c | 8 +- src/w32-io.c | 10 +- src/w32-sema.c | 5 +- src/w32-util.c | 18 +- 36 files changed, 729 insertions(+), 46 deletions(-) create mode 100644 contrib/ChangeLog create mode 100755 contrib/conf-w32ce-msc/build.mk create mode 100644 contrib/conf-w32ce-msc/config.h diff --git a/ChangeLog b/ChangeLog index 63ce5ab..13d4125 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-11-02 Werner Koch + + * configure.ac (AC_CHECK_HEADERS): Check for sys.time.h. + 2010-08-19 Werner Koch * configure.ac (AH_BOTTOM): Define GPG_ERR_ENABLE_ERRNO_MACROS. diff --git a/autogen.sh b/autogen.sh index da7865f..23d672a 100755 --- a/autogen.sh +++ b/autogen.sh @@ -127,7 +127,7 @@ if [ "$myhost" = "w32" ]; then fi fi - ./configure --enable-maintainer-mode --prefix=${w32root} \ + $tsdir/configure --enable-maintainer-mode --prefix=${w32root} \ --host=${host} --build=${build} \ --with-gpg-error-prefix=${w32root} \ --with-libassuan-prefix=${w32root} "$@" diff --git a/configure.ac b/configure.ac index 8f4c77b..5850ace 100644 --- a/configure.ac +++ b/configure.ac @@ -774,7 +774,7 @@ AC_CHECK_FUNCS(getgid getegid) # Replacement functions. AC_REPLACE_FUNCS(stpcpy) # Check for unistd.h for setenv replacement function. -AC_CHECK_HEADERS(unistd.h) +AC_CHECK_HEADERS([unistd.h sys/time.h]) AC_REPLACE_FUNCS(setenv) # Assuan check for descriptor passing. diff --git a/contrib/ChangeLog b/contrib/ChangeLog new file mode 100644 index 0000000..406d107 --- /dev/null +++ b/contrib/ChangeLog @@ -0,0 +1,5 @@ +2010-11-01 Werner Koch + + * conf-w32ce-msc/config.h: New. + * conf-w32ce-msc/build.mk: New. + diff --git a/contrib/conf-w32ce-msc/build.mk b/contrib/conf-w32ce-msc/build.mk new file mode 100755 index 0000000..4a77a99 --- /dev/null +++ b/contrib/conf-w32ce-msc/build.mk @@ -0,0 +1,253 @@ +# build.mk - Makefile to build libgpg-error using Visual-C +# Copyright 2010 g10 Code GmbH +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This file is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This is a helper make script to build libgpg-error for WindowsCE +# using the Microsoft Visual C compiler. + +targetdir = /home/smb/xppro-gnu/src/gpgme/src +# The target build directory where we run the Visual C compiler/ This +# needs to be an absolute directory name. Further we expect this +# structure of the tree: +# +# TARGET/src - Source directories: One directory for each project +# /bin - Installed DLLs +# /lib - Installed import libs. +# /include - Instaled header files. + +targetdir = /home/smb/xppro-gnu +targetsrc = $(targetdir)/src + +# Install directories (relative) +bindir = ../../../bin +libdir = ../../../lib +incdir = ../../../include + + +help: + @echo "Run " + @echo " make -f ../contrib/conf-w32ce-msc/build.mk copy-source" + @echo "on the POSIX system and then" + @echo " nmake -f build.mk all" + @echo " nmake -f build.mk install" + @echo "on the Windows system" + +ce_defines = -DWINCE -D_WIN32_WCE=0x502 -DUNDER_CE \ + -DWIN32_PLATFORM_PSPC -D_UNICODE -DUNICODE \ + -D_CONSOLE -DARM -D_ARM_ +#-D_DEBUG -DDEBUG + +CFLAGS = -nologo -W3 -fp:fast -Os $(ce_defines) \ + -DHAVE_CONFIG_H -DDLL_EXPORT -D_CRT_SECURE_NO_WARNINGS \ + -I. -I$(incdir) -I$(incdir)/gpg-extra + +LDFLAGS = + +# Standard source files +sources = \ + assuan-support.c \ + ath-pth.c \ + ath-pthread.c \ + ath.c \ + ath.h \ + context.h \ + conversion.c \ + data-compat.c \ + data-fd.c \ + data-mem.c \ + data-stream.c \ + data-user.c \ + data.c \ + data.h \ + debug.c \ + debug.h \ + decrypt-verify.c \ + decrypt.c \ + delete.c \ + dirinfo.c \ + edit.c \ + encrypt-sign.c \ + encrypt.c \ + engine-assuan.c \ + engine-backend.h \ + engine-g13.c \ + engine-gpg.c \ + engine-gpgconf.c \ + engine-gpgsm.c \ + engine-uiserver.c \ + engine.c \ + engine.h \ + error.c \ + export.c \ + funopen.c \ + genkey.c \ + get-env.c \ + getauditlog.c \ + gpgconf.c \ + gpgme-tool.c \ + gpgme-w32spawn.c \ + gpgme.c \ + import.c \ + isascii.c \ + kdpipeiodevice.h \ + key.c \ + keylist.c \ + memrchr.c \ + op-support.c \ + opassuan.c \ + ops.h \ + passphrase.c \ + passwd.c \ + priv-io.h \ + progress.c \ + putc_unlocked.c \ + sema.h \ + setenv.c \ + sig-notation.c \ + sign.c \ + signers.c \ + stpcpy.c \ + trust-item.c \ + trustlist.c \ + ttyname_r.c \ + util.h \ + vasprintf.c \ + verify.c \ + version.c \ + vfs-create.c \ + vfs-mount.c \ + w32-ce.c \ + w32-ce.h \ + w32-glib-io.c \ + w32-io.c \ + w32-sema.c \ + w32-util.c \ + wait-global.c \ + wait-private.c \ + wait-user.c \ + wait.c \ + wait.h \ + gpgme.def + +# The object files we need to create from sources. +objs = \ + conversion.obj \ + get-env.obj \ + data.obj \ + data-fd.obj \ + data-stream.obj \ + data-mem.obj \ + data-user.obj \ + data-compat.obj \ + signers.obj \ + sig-notation.obj \ + wait.obj \ + wait-global.obj \ + wait-private.obj \ + wait-user.obj \ + op-support.obj \ + encrypt.obj \ + encrypt-sign.obj \ + decrypt.obj \ + decrypt-verify.obj \ + verify.obj \ + sign.obj \ + passphrase.obj \ + progress.obj \ + key.obj \ + keylist.obj \ + trust-item.obj \ + trustlist.obj \ + import.obj \ + export.obj \ + genkey.obj \ + delete.obj \ + edit.obj \ + getauditlog.obj \ + opassuan.obj \ + passwd.obj \ + engine.obj \ + engine-gpg.obj \ + engine-gpgsm.obj \ + assuan-support.obj \ + engine-assuan.obj \ + engine-gpgconf.obj \ + engine-g13.obj \ + vfs-mount.obj \ + vfs-create.obj \ + gpgconf.obj \ + w32-ce.obj \ + w32-util.obj \ + w32-sema.obj \ + w32-io.obj \ + dirinfo.obj \ + debug.obj \ + gpgme.obj \ + version.obj \ + error.obj \ + ath.obj \ + vasprintf.obj \ + ttyname_r.obj \ + stpcpy.obj \ + setenv.obj + + +# Sources files in this directory inclduing this Makefile +conf_sources = \ + build.mk \ + config.h + +# Source files built by running the standard build system. +built_sources = \ + gpgme.h \ + status-table.h + + +copy-static-source: + @if [ ! -f ./gpgme.c ]; then \ + echo "Please cd to the src/ directory first"; \ + exit 1; \ + fi + cp -t $(targetsrc)/gpgme/src $(sources); + cd ../contrib/conf-w32ce-msc ; \ + cp -t $(targetsrc)/gpgme/src $(conf_sources) + + +copy-built-source: + @if [ ! -f ./gpgme.h ]; then \ + echo "Please build using ./autogen.sh --build-w32ce first"; \ + exit 1; \ + fi + cp -t $(targetsrc)/gpgme/src $(built_sources) + +copy-source: copy-static-source copy-built-source + + +.c.obj: + $(CC) $(CFLAGS) -c $< + +all: $(sources) $(conf_sources) $(built_sources) $(objs) + link /DLL /IMPLIB:libgpgme-11-msc.lib \ + /OUT:libgpgme-11-msc.dll \ + /DEF:gpgme.def /NOLOGO /MANIFEST:NO \ + /NODEFAULTLIB:"oldnames.lib" /DYNAMICBASE:NO \ + $(objs) \ + $(libdir)/libgpg-error-0-msc.lib \ + $(libdir)/libassuan-0-msc.lib \ + coredll.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib \ + commctrl.lib /subsystem:windowsce,5.02 + +# Note that we don't need to create the install directories because +# libgpg-error must have been build and installed prior to this +# package. +install: all + copy /y gpgme.h $(incdir:/=\) + copy /y libgpgme-11-msc.dll $(bindir:/=\) + copy /y libgpgme-11-msc.lib $(libdir:/=\) diff --git a/contrib/conf-w32ce-msc/config.h b/contrib/conf-w32ce-msc/config.h new file mode 100644 index 0000000..d8ab5d7 --- /dev/null +++ b/contrib/conf-w32ce-msc/config.h @@ -0,0 +1,314 @@ +/* config.h for building with Visual-C for WindowsCE. + * Copyright 2010 g10 Code GmbH + * + * This file is free software; as a special exception the author gives + * unlimited permission to copy and/or distribute it, with or without + * modifications, as long as this notice is preserved. + * + * This file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the + * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + +/* This file was originally created by running + * ./autogen.sh --build-w32ce + * on svn revision 1495 (gpgme 1.3.1-svn1495) and then adjusted to work + * with Visual-C. + */ + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.3.1-svn1495-msc1" + +/* Name of this package */ +#define PACKAGE "gpgme" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "bug-gpgme@gnupg.org" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "gpgme" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "gpgme " PACKAGE_VERSION + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gpgme" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + + + +/* Whether Assuan support is enabled */ +#define ENABLE_ASSUAN 1 + +/* Whether G13 support is enabled */ +#define ENABLE_G13 1 + +/* Whether GPGCONF support is enabled */ +#define ENABLE_GPGCONF 1 + +/* Whether GPGSM support is enabled */ +#define ENABLE_GPGSM 1 + +/* Defined if we are building with uiserver support. */ +/* #undef ENABLE_UISERVER */ + +/* Path to the G13 binary. */ +#define G13_PATH "c:\\gnupg\\g13.exe" + +/* Path to the GPGCONF binary. */ +#define GPGCONF_PATH "c:\\gnupg\\gpgconf.exe" + +/* version of the libassuan library */ +#define GPGME_LIBASSUAN_VERSION "2.0.2-svn381" + +/* Path to the GPGSM binary. */ +#define GPGSM_PATH "c:\\gnupg\\gpgsm.exe" + +/* The default error source for GPGME. */ +#define GPG_ERR_SOURCE_DEFAULT GPG_ERR_SOURCE_GPGME + +/* Path to the GnuPG binary. */ +#define GPG_PATH "c:\\gnupg\\gpg.exe" + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Defined if we run on some of the PCDOS like systems (DOS, Windoze. OS/2) + with special properties like no file modes */ +#define HAVE_DOSISH_SYSTEM 1 + +/* Define to 1 if the system has the type `error_t'. */ +/* #undef HAVE_ERROR_T */ + +/* Define to 1 if you have the `fopencookie' function. */ +/* #undef HAVE_FOPENCOOKIE */ + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +/* #undef HAVE_FSEEKO */ + +/* Define to 1 if you have the `funopen' function. */ +/* #undef HAVE_FUNOPEN */ + +/* Define to 1 if you have the `getegid' function. */ +/* #undef HAVE_GETEGID */ + +/* Define to 1 if you have the `getenv_r' function. */ +/* #undef HAVE_GETENV_R */ + +/* Define to 1 if you have the `getgid' function. */ +/* #undef HAVE_GETGID */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LOCALE_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define if we have Pth. */ +/* #undef HAVE_PTH */ + +/* Define if we have pthread. */ +/* #undef HAVE_PTHREAD */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef HAVE_SETENV */ + +/* Define to 1 if you have the `setlocale' function. */ +/* #undef HAVE_SETLOCALE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +/* #undef HAVE_STPCPY */ + +/* 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 header file. */ +/* #undef HAVE_SYS_SELECT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_STAT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_TYPES_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_UIO_H */ + +/* Define if getenv() is thread-safe */ +/* #undef HAVE_THREAD_SAFE_GETENV */ + +/* Define to 1 if you have the `timegm' function. */ +/* #undef HAVE_TIMEGM */ + +/* Define if __thread is supported */ +/* #define HAVE_TLS 1 */ + +/* Define to 1 if you have the `ttyname_r' function. */ +/* #undef HAVE_TTYNAME_R */ + +/* Define to 1 if the system has the type `uintptr_t'. */ +#define HAVE_UINTPTR_T 1 + +/* Define to 1 if you have the header file. */ +/* #define HAVE_UNISTD_H 1 */ + +/* Define to 1 if you have the `vasprintf' function. */ +/* #undef HAVE_VASPRINTF */ + +/* Defined if we run on a W32 CE API based system */ +#define HAVE_W32CE_SYSTEM 1 + +/* Defined if we run on a W32 API based system */ +#define HAVE_W32_SYSTEM 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* used to implement the va_copy macro */ +/* #undef MUST_COPY_VA_BYVAL */ + +/* Min. needed G13 version. */ +#define NEED_G13_VERSION "2.1.0" + +/* Min. needed GPGCONF version. */ +#define NEED_GPGCONF_VERSION "2.0.4" + +/* Min. needed GPGSM version. */ +#define NEED_GPGSM_VERSION "1.9.6" + +/* Min. needed GnuPG version. */ +#define NEED_GPG_VERSION "1.4.0" + + +/* Separators as used in $PATH. */ +#ifdef HAVE_DOSISH_SYSTEM +#define PATHSEP_C ';' +#else +#define PATHSEP_C ':' +#endif + + +/* The size of `unsigned int', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_INT 4 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Defined if descriptor passing is enabled and supported */ +/* #undef USE_DESCRIPTOR_PASSING */ + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + + +/* Version of this package */ +#define VERSION PACKAGE_VERSION + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* 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 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* To allow the use of GPGME in multithreaded programs we have to use + special features from the library. + IMPORTANT: gpgme is not yet fully reentrant and you should use it + only from one thread. */ +#ifndef _REENTRANT +# define _REENTRANT 1 +#endif + +/* Activate POSIX interface on MacOS X */ +/* #undef _XOPEN_SOURCE */ + +/* Define to a type to use for `error_t' if it is not otherwise available. */ +#define error_t int + +/* 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 +#define inline __inline +#endif + +/* Define to `long int' if does not define. */ +/* #undef off_t */ + +/* Define to the type of an unsigned integer type wide enough to hold a + pointer, if such a type exists, and if the system does not define it. */ +/* #undef uintptr_t */ + + +/* Definition of GCC specific attributes. */ +#if __GNUC__ > 2 +# define GPGME_GCC_A_PURE __attribute__ ((__pure__)) +#else +# define GPGME_GCC_A_PURE +#endif + +/* Under WindowsCE we need gpg-error's strerror macro. */ +#define GPG_ERR_ENABLE_ERRNO_MACROS 1 + +/* snprintf is not part of oldnames.lib thus we redefine it here. */ +#define snprintf _snprintf + +/* We don't want warnings like this: + + warning C4996: e.g. "The POSIX name for this item is + deprecated. Instead, use the ISO C++ conformant name: _fileno" + + warning C4018: '<' : signed/unsigned mismatch + + warning C4244: '=' : conversion from 'time_t' to + 'unsigned long', possible loss of data + + */ +#pragma warning(disable:4996 4018 4244) + + + diff --git a/src/ChangeLog b/src/ChangeLog index a868d6d..7c6d429 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,4 +1,29 @@ -2010-10-28 Marcus Brinkmann +2010-11-02 Werner Koch + + * w32-io.c (handle_to_fd, fd_tohandle): Add. We need them for W32. + * w32-util.c (_WIN32_IE): Define to 0x0400. + + * util.h [W32]: Include windows.h. + * w32-sema.c: Do not include windows.h directly. + * ath.c (ssize_t, pid_t)[_MSC_VER]: Add new types. + * gpgme.c (gpgme_result_ref, gpgme_result_unref): Do not use a + void pointer in pointer arithmetic. + * w32-util.c: Include util.h prior to ath.h. Don't include + windows.h directly. + (F_OK): Define if not defined. + * w32-ce.c: Include string.h. + (RegQueryValueExA): Use WINAPI modifier to match the declaration. + * vfs-create.c: Include string.h because under W32CE with MSC we + get a warning related to our strerror replacement. + * encrypt-sign.c: Include stdlib.h, string.h and errno.h. + * priv-io.h [W32CE]: Include w32-ce.h + * w32-ce.h: Include winsock2.h and ws2tcpip.h. + (_MSV_VER): Remove useless macro. + (pid_t): Add typedef. + + Guard all includes of unistd.h and sys/time.h. + +2010-10-28 Marcus Brinkmann * opassuan.c (gpgme_op_assuan_transact_ext): Fix uninitialized value use. Reported by Marc Mutz. diff --git a/src/Makefile.am b/src/Makefile.am index e557c7b..ecda904 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -203,7 +203,8 @@ libgpgme_la_LDFLAGS = $(no_undefined) $(export_symbols) \ $(libgpgme_version_script_cmd) -version-info \ @LIBGPGME_LT_CURRENT@:@LIBGPGME_LT_REVISION@:@LIBGPGME_LT_AGE@ libgpgme_la_DEPENDENCIES = @LTLIBOBJS@ $(srcdir)/libgpgme.vers $(gpgme_deps) -libgpgme_la_LIBADD = $(gpgme_res) @LIBASSUAN_LIBS@ @LTLIBOBJS@ @GPG_ERROR_LIBS@ +libgpgme_la_LIBADD = $(gpgme_res) @LIBASSUAN_LIBS@ @LTLIBOBJS@ \ + @GPG_ERROR_LIBS@ libgpgme_pthread_la_LDFLAGS = $(no_undefined) $(export_symbols) \ $(libgpgme_version_script_cmd) -version-info \ diff --git a/src/ath-pthread.c b/src/ath-pthread.c index d642299..9684afb 100644 --- a/src/ath-pthread.c +++ b/src/ath-pthread.c @@ -24,11 +24,15 @@ #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #ifdef HAVE_SYS_SELECT_H # include #else -# include +# ifdef HAVE_SYS_TIME_H +# include +# endif #endif #include #include diff --git a/src/ath.c b/src/ath.c index 803dedb..a303ffc 100644 --- a/src/ath.c +++ b/src/ath.c @@ -23,17 +23,26 @@ #endif #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #ifdef HAVE_SYS_SELECT_H # include #else -# include +# ifdef HAVE_SYS_TIME_H +# include +# endif #endif #include #ifndef HAVE_W32_SYSTEM #include #endif +#ifdef _MSC_VER + typedef long ssize_t; + typedef int pid_t; +#endif + #include "ath.h" diff --git a/src/ath.h b/src/ath.h index 26d0cb2..8a7a507 100644 --- a/src/ath.h +++ b/src/ath.h @@ -36,7 +36,9 @@ # ifdef HAVE_SYS_SELECT_H # include # else -# include +# ifdef HAVE_SYS_TIME_H +# include +# endif # endif # include # include diff --git a/src/data-compat.c b/src/data-compat.c index 76d6cd0..0843ffd 100644 --- a/src/data-compat.c +++ b/src/data-compat.c @@ -23,7 +23,9 @@ #endif #include -#include +#ifdef HAVE_SYS_TIME_H +# include +#endif #include #include diff --git a/src/data-fd.c b/src/data-fd.c index 47a0d99..1ada70f 100644 --- a/src/data-fd.c +++ b/src/data-fd.c @@ -22,7 +22,9 @@ #include #endif -#include +#ifdef HAVE_UNISTD_H +# include +#endif #include #include "debug.h" diff --git a/src/data-mem.c b/src/data-mem.c index 7be72bf..eda695a 100644 --- a/src/data-mem.c +++ b/src/data-mem.c @@ -24,7 +24,9 @@ #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #include #include diff --git a/src/data.c b/src/data.c index be64ef0..0a62910 100644 --- a/src/data.c +++ b/src/data.c @@ -23,7 +23,9 @@ #endif #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #include #include diff --git a/src/debug.c b/src/debug.c index 6faf4aa..754c8e1 100644 --- a/src/debug.c +++ b/src/debug.c @@ -26,7 +26,9 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #include #include #include diff --git a/src/encrypt-sign.c b/src/encrypt-sign.c index 02af179..3b862be 100644 --- a/src/encrypt-sign.c +++ b/src/encrypt-sign.c @@ -22,6 +22,9 @@ #if HAVE_CONFIG_H #include #endif +#include +#include +#include #include "gpgme.h" #include "debug.h" diff --git a/src/engine-assuan.c b/src/engine-assuan.c index 73ece80..e521d6d 100644 --- a/src/engine-assuan.c +++ b/src/engine-assuan.c @@ -32,7 +32,9 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #ifdef HAVE_LOCALE_H #include #endif diff --git a/src/engine-g13.c b/src/engine-g13.c index 8b2af4d..f3119b5 100644 --- a/src/engine-g13.c +++ b/src/engine-g13.c @@ -27,7 +27,9 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #ifdef HAVE_LOCALE_H #include #endif diff --git a/src/engine-gpg.c b/src/engine-gpg.c index da66d4d..f163f0f 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -27,7 +27,9 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #ifdef HAVE_LOCALE_H #include #endif diff --git a/src/engine-gpgconf.c b/src/engine-gpgconf.c index d3c47a7..cf4df56 100644 --- a/src/engine-gpgconf.c +++ b/src/engine-gpgconf.c @@ -26,7 +26,9 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #include /* FIXME */ #include diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c index 64be281..8a9cd89 100644 --- a/src/engine-gpgsm.c +++ b/src/engine-gpgsm.c @@ -28,7 +28,9 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #ifdef HAVE_LOCALE_H #include #endif diff --git a/src/engine-uiserver.c b/src/engine-uiserver.c index 9e910b6..fec7d7d 100644 --- a/src/engine-uiserver.c +++ b/src/engine-uiserver.c @@ -31,7 +31,9 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #include #include /* FIXME */ #include diff --git a/src/gpgme.c b/src/gpgme.c index b6a518f..7feb3be 100644 --- a/src/gpgme.c +++ b/src/gpgme.c @@ -211,7 +211,7 @@ gpgme_result_ref (void *result) if (! result) return; - data = result - sizeof (struct ctx_op_data); + data = (void*)((char*)result - sizeof (struct ctx_op_data)); assert (data->magic == CTX_OP_DATA_MAGIC); @@ -229,7 +229,7 @@ gpgme_result_unref (void *result) if (! result) return; - data = result - sizeof (struct ctx_op_data); + data = (void*)((char*)result - sizeof (struct ctx_op_data)); assert (data->magic == CTX_OP_DATA_MAGIC); diff --git a/src/posix-io.c b/src/posix-io.c index 5c3def0..762051e 100644 --- a/src/posix-io.c +++ b/src/posix-io.c @@ -28,8 +28,12 @@ #include #include #include -#include -#include +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_TIME_H +# include +#endif #include #include #ifdef HAVE_SYS_UIO_H @@ -37,7 +41,6 @@ #endif #include #include -#include #include "util.h" #include "priv-io.h" diff --git a/src/posix-sema.c b/src/posix-sema.c index 4ec3abb..7ab08df 100644 --- a/src/posix-sema.c +++ b/src/posix-sema.c @@ -29,8 +29,12 @@ #include #include #include -#include -#include +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_TIME_H +# include +#endif #include #include "util.h" diff --git a/src/priv-io.h b/src/priv-io.h index 89c750d..2c9d1e7 100644 --- a/src/priv-io.h +++ b/src/priv-io.h @@ -23,6 +23,9 @@ #define IO_H #ifdef HAVE_W32_SYSTEM +# ifdef HAVE_W32CE_SYSTEM +# include "w32-ce.h" +# endif # include #else # include diff --git a/src/ttyname_r.c b/src/ttyname_r.c index 4487658..810c217 100644 --- a/src/ttyname_r.c +++ b/src/ttyname_r.c @@ -24,10 +24,14 @@ #include #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif -#warning ttyname is not thread-safe, and ttyname_r is missing +#ifdef __GNUC__ +# warning ttyname is not thread-safe, and ttyname_r is missing +#endif int ttyname_r (int fd, char *buf, size_t buflen) diff --git a/src/util.h b/src/util.h index f7e6d27..b7dfbbd 100644 --- a/src/util.h +++ b/src/util.h @@ -22,8 +22,12 @@ #ifndef UTIL_H #define UTIL_H -#ifdef HAVE_W32CE_SYSTEM -#include "w32-ce.h" +#ifdef HAVE_W32_SYSTEM +# ifdef HAVE_W32CE_SYSTEM +# include "w32-ce.h" +# else +# include "windows.h" +# endif #endif /* For pid_t. */ diff --git a/src/vfs-create.c b/src/vfs-create.c index 142549a..d7fd24f 100644 --- a/src/vfs-create.c +++ b/src/vfs-create.c @@ -23,6 +23,7 @@ #endif #include +#include #include "gpgme.h" #include "debug.h" diff --git a/src/w32-ce.c b/src/w32-ce.c index 57590fa..076eaae 100644 --- a/src/w32-ce.c +++ b/src/w32-ce.c @@ -22,6 +22,7 @@ #include #endif +#include #include #include @@ -248,7 +249,7 @@ RegOpenKeyExA (HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, } -LONG +LONG WINAPI RegQueryValueExA (HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData) { diff --git a/src/w32-ce.h b/src/w32-ce.h index 2b761d6..bcd5344 100644 --- a/src/w32-ce.h +++ b/src/w32-ce.h @@ -24,8 +24,12 @@ #include #include -/* For getaddrinfo. */ -#define _MSV_VER 0x401 +#ifdef _MSC_VER +typedef int pid_t; +#endif + +#include +#include /* For getaddrinfo. */ #include diff --git a/src/w32-glib-io.c b/src/w32-glib-io.c index ff21c3d..6b7cd15 100644 --- a/src/w32-glib-io.c +++ b/src/w32-glib-io.c @@ -28,8 +28,12 @@ #include #include #include -#include -#include +#ifdef HAVE_UNISTD_H +# include +#endif +#ifdef HAVE_SYS_TIME_H +# include +#endif #include #include #include diff --git a/src/w32-io.c b/src/w32-io.c index 12d8437..d7abbf4 100644 --- a/src/w32-io.c +++ b/src/w32-io.c @@ -28,11 +28,14 @@ #include #include #include -#include +#ifdef HAVE_SYS_TIME_H +# include +#endif #include -#include #include +#include "util.h" + #ifdef HAVE_W32CE_SYSTEM #include #include @@ -42,7 +45,6 @@ CTL_CODE (FILE_DEVICE_STREAMS, 2051, METHOD_BUFFERED, FILE_ANY_ACCESS) #endif -#include "util.h" #include "sema.h" #include "priv-io.h" #include "debug.h" @@ -123,6 +125,8 @@ release_fd (int fd) #define pid_to_handle(a) ((HANDLE)(a)) #define handle_to_pid(a) ((int)(a)) +#define fd_to_handle(a) ((HANDLE)(a)) +#define handle_to_fd(a) ((int)(a)) #define READBUF_SIZE 4096 #define WRITEBUF_SIZE 4096 diff --git a/src/w32-sema.c b/src/w32-sema.c index 6a5137d..3396104 100644 --- a/src/w32-sema.c +++ b/src/w32-sema.c @@ -28,9 +28,10 @@ #include #include #include -#include +#ifdef HAVE_SYS_TIME_H +# include +#endif #include -#include #include #include "util.h" diff --git a/src/w32-util.c b/src/w32-util.c index e4820c1..cbbc126 100644 --- a/src/w32-util.c +++ b/src/w32-util.c @@ -29,17 +29,22 @@ #include #include #include -#include +#ifdef HAVE_SYS_TIME_H +# include +#endif #include #include -#include +#ifdef HAVE_UNISTD_H +# include +#endif #include -#include -#include #include -#include "ath.h" +#define _WIN32_IE 0x0400 /* Required for SHGetSpecialFolderPathA. */ + #include "util.h" +#include +#include "ath.h" #include "sema.h" #include "debug.h" @@ -47,6 +52,9 @@ #ifndef HAVE_W32CE_SYSTEM #define HAVE_ALLOW_SET_FOREGROUND_WINDOW 1 #endif +#ifndef F_OK +# define F_OK 0 +#endif DEFINE_STATIC_LOCK (get_path_lock); -- 2.26.2