aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS5
-rw-r--r--configure.ac36
-rw-r--r--doc/gpgme.texi62
-rw-r--r--src/assuan-support.c4
-rw-r--r--src/ath-pthread.c10
-rw-r--r--src/ath.c11
-rw-r--r--src/ath.h10
-rw-r--r--src/data-compat.c8
-rw-r--r--src/data-fd.c8
-rw-r--r--src/data-mem.c8
-rw-r--r--src/data-stream.c8
-rw-r--r--src/data-user.c8
-rw-r--r--src/data.c20
-rw-r--r--src/data.h17
-rw-r--r--src/engine-gpgsm.c2
-rw-r--r--src/engine-uiserver.c2
-rw-r--r--src/gpgme-tool.c4
-rw-r--r--src/gpgme.c4
-rw-r--r--src/gpgme.h.in25
19 files changed, 153 insertions, 99 deletions
diff --git a/NEWS b/NEWS
index bf8c2f9a..dc67bf73 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,11 @@
Noteworthy changes in version 1.4.2 (unreleased)
------------------------------------------------
+ * Interface changes relative to the 1.4.1 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_off_t NEW.
+ gpgme_size_t NEW.
+
Noteworthy changes in version 1.4.1 (2013-05-01)
------------------------------------------------
diff --git a/configure.ac b/configure.ac
index 25dce1c6..015995b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -282,25 +282,31 @@ AC_SUBST(NEED__FILE_OFFSET_BITS)
# Figure out platform dependent typedefs for gpgme.h
if test "$have_w32_system" = yes; then
- if test "$have_w64_system" = yes; then
- INSERT__TYPEDEFS_FOR_GPGME_H="/* Typedefs for the 64 bit W32 API. */
-#include <basetsd.h>
-typedef long off_t;
-typedef __int64 ssize_t;"
- else
- INSERT__TYPEDEFS_FOR_GPGME_H="/* Typedefs for the 32 bit W32 API. */
-#ifndef _OFF_T_DEFINED /* Defined by newer mingw32 toolkits. */
-typedef long off_t;
-#endif
-#ifndef _SSIZE_T_DEFINED /* Defined by newer mingw32 toolkits. */
-typedef long ssize_t;
-#endif"
- fi
+ INSERT__TYPEDEFS_FOR_GPGME_H="
+#ifdef _WIN64
+# include <stdint.h>
+ typedef int64_t gpgme_off_t;
+ typedef int64_t gpgme_ssize_t;
+#else /* _WIN32 */
+ typedef long gpgme_off_t;
+ typedef long gpgme_ssize_t;
+#endif /* _WIN32 */"
+ API__OFF_T="gpgme_off_t"
+ API__SSIZE_T="gpgme_ssize_t"
else
- INSERT__TYPEDEFS_FOR_GPGME_H="#include <sys/types.h>"
+ INSERT__TYPEDEFS_FOR_GPGME_H="
+#include <sys/types.h>
+typedef off_t gpgme_off_t;
+typedef ssize_t gpgme_ssize_t;"
+ API__OFF_T="off_t"
+ API__SSIZE_T="ssize_t"
fi
AC_SUBST(INSERT__TYPEDEFS_FOR_GPGME_H)
AM_SUBST_NOTMAKE(INSERT__TYPEDEFS_FOR_GPGME_H)
+AC_SUBST(API__OFF_T)
+AM_SUBST_NOTMAKE(API__OFF_T)
+AC_SUBST(API__SSIZE_T)
+AM_SUBST_NOTMAKE(API__SSIZE_T)
# Checks for compiler features.
if test "$GCC" = yes; then
diff --git a/doc/gpgme.texi b/doc/gpgme.texi
index b47d4383..589747d0 100644
--- a/doc/gpgme.texi
+++ b/doc/gpgme.texi
@@ -493,18 +493,42 @@ support by default and just use that. The compatibility modes (small
file sizes or dual mode) can be considered an historic artefact, only
useful to allow for a transitional period.
-@acronym{GPGME} is compiled using largefile support by default. This
-means that your application must do the same, at least as far as it is
-relevant for using the @file{gpgme.h} header file. All types in this
-header files refer to their largefile counterparts, if they are
-different from any default types on the system.
-
-You can enable largefile support, if it is different from the default
-on the system the application is compiled on, by using the Autoconf
-macro @code{AC_SYS_LARGEFILE}. If you do this, then you don't need to
-worry about anything else: It will just work. In this case you might
-also want to use @code{AC_FUNC_FSEEKO} to take advantage of some new
-interfaces, and @code{AC_TYPE_OFF_T} (just in case).
+On POSIX platforms @acronym{GPGME} is compiled using largefile support
+by default. This means that your application must do the same, at
+least as far as it is relevant for using the @file{gpgme.h} header
+file. All types in this header files refer to their largefile
+counterparts, if they are different from any default types on the
+system.
+
+On 32 and 64 bit Windows platforms @code{off_t} is declared as 32 bit
+signed integer. There is no specific support for LFS in the C
+library. The recommendation from Microsoft is to use the native
+interface (@code{CreateFile} et al.) for large files. Released binary
+versions of @acronym{GPGME} (libgpgme-11.dll) have always been build
+with a 32 bit @code{off_t}. To avoid an ABI break we stick to this
+convention for 32 bit Windows by using @code{long} there.
+@acronym{GPGME} versions for 64 bit Windows have never been released
+and thus we are able to use @code{int64_t} instead of @code{off_t}
+there. For easier migration the typedef @code{gpgme_off_t} has been
+defined. The reason we cannot use @code{off_t} directly is that some
+toolchains (e.g. mingw64) introduce a POSIX compatible hack for
+@code{off_t}. Some widely used toolkits make use of this hack and in
+turn @acronym{GPGME} would need to use it also. However, this would
+introduce an ABI break and existing software making use of libgpgme
+might suffer from a severe break. Thus with version 1.4.2 we
+redefined all functions using @code{off_t} to use @code{gpgme_off_t}
+which is defined as explained above. This way we keep the ABI well
+defined and independent of any toolchain hacks. The bottom line is
+that LFS support in @acronym{GPGME} is only available on 64 bit
+versions of Windows.
+
+On POSIX platforms you can enable largefile support, if it is
+different from the default on the system the application is compiled
+on, by using the Autoconf macro @code{AC_SYS_LARGEFILE}. If you do
+this, then you don't need to worry about anything else: It will just
+work. In this case you might also want to use @code{AC_FUNC_FSEEKO}
+to take advantage of some new interfaces, and @code{AC_TYPE_OFF_T}
+(just in case).
If you do not use Autoconf, you can define the preprocessor symbol
@code{_FILE_OFFSET_BITS} to 64 @emph{before} including any header
@@ -1538,6 +1562,20 @@ by using memory buffers or files rather than pipes or sockets. This
might be relevant, for example, if the external event loop mechanism
is used.
+@deftp {Data type} {gpgme_off_t}
+On POSIX platforms the @code{gpgme_off_t} type is an alias for
+@code{off_t}; it may be used interchangeable. On Windows platforms
+@code{gpgme_off_t} is defined as a long (i.e. 32 bit) for 32 bit
+Windows and as a 64 bit signed integer for 64 bit Windows.
+@end deftp
+
+@deftp {Data type} {gpgme_ssize_t}
+The @code{gpgme_ssize_t} type is an alias for @code{ssize_t}. It has
+only been introduced to overcome portability problems pertaining to
+the declaration of @code{ssize_t} by different toolchains.
+@end deftp
+
+
@menu
* Creating Data Buffers:: Creating new data buffers.
* Destroying Data Buffers:: Releasing data buffers.
diff --git a/src/assuan-support.c b/src/assuan-support.c
index 6ff0679d..d06518a1 100644
--- a/src/assuan-support.c
+++ b/src/assuan-support.c
@@ -68,14 +68,14 @@ my_close (assuan_context_t ctx, assuan_fd_t fd)
}
-static ssize_t
+static gpgme_ssize_t
my_read (assuan_context_t ctx, assuan_fd_t fd, void *buffer, size_t size)
{
return _gpgme_io_read ((int) fd, buffer, size);
}
-static ssize_t
+static gpgme_ssize_t
my_write (assuan_context_t ctx, assuan_fd_t fd, const void *buffer, size_t size)
{
return _gpgme_io_write ((int) fd, buffer, size);
diff --git a/src/ath-pthread.c b/src/ath-pthread.c
index dfbdac2a..47b38ee0 100644
--- a/src/ath-pthread.c
+++ b/src/ath-pthread.c
@@ -39,6 +39,8 @@
#include <pthread.h>
+#include "gpgme.h"
+
#include "ath.h"
@@ -130,21 +132,21 @@ ath_mutex_unlock (ath_mutex_t *lock)
}
-ssize_t
+gpgme_ssize_t
ath_read (int fd, void *buf, size_t nbytes)
{
return read (fd, buf, nbytes);
}
-ssize_t
+gpgme_ssize_t
ath_write (int fd, const void *buf, size_t nbytes)
{
return write (fd, buf, nbytes);
}
-ssize_t
+gpgme_ssize_t
ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
struct timeval *timeout)
{
@@ -152,7 +154,7 @@ ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
}
-ssize_t
+gpgme_ssize_t
ath_waitpid (pid_t pid, int *status, int options)
{
return waitpid (pid, status, options);
diff --git a/src/ath.c b/src/ath.c
index 52cee458..ddd8a872 100644
--- a/src/ath.c
+++ b/src/ath.c
@@ -40,8 +40,9 @@
#include <sys/wait.h>
#endif
+#include "gpgme.h"
+
#ifdef _MSC_VER
- typedef long ssize_t;
typedef int pid_t;
#endif
@@ -125,7 +126,7 @@ ath_mutex_unlock (ath_mutex_t *lock)
}
-ssize_t
+gpgme_ssize_t
ath_read (int fd, void *buf, size_t nbytes)
{
#if defined(HAVE_W32CE_SYSTEM) && defined(_MSC_VER)
@@ -136,7 +137,7 @@ ath_read (int fd, void *buf, size_t nbytes)
}
-ssize_t
+gpgme_ssize_t
ath_write (int fd, const void *buf, size_t nbytes)
{
#if defined(HAVE_W32CE_SYSTEM) && defined(_MSC_VER)
@@ -147,7 +148,7 @@ ath_write (int fd, const void *buf, size_t nbytes)
}
-ssize_t
+gpgme_ssize_t
ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
struct timeval *timeout)
{
@@ -159,7 +160,7 @@ ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
}
-ssize_t
+gpgme_ssize_t
ath_waitpid (pid_t pid, int *status, int options)
{
#ifdef HAVE_W32_SYSTEM
diff --git a/src/ath.h b/src/ath.h
index eecf8d10..8eb9eb95 100644
--- a/src/ath.h
+++ b/src/ath.h
@@ -88,11 +88,11 @@ int ath_mutex_unlock (ath_mutex_t *mutex);
/* Replacement for the POSIX functions, which can be used to allow
other (user-level) threads to run. */
-ssize_t ath_read (int fd, void *buf, size_t nbytes);
-ssize_t ath_write (int fd, const void *buf, size_t nbytes);
-ssize_t ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
- struct timeval *timeout);
-ssize_t ath_waitpid (pid_t pid, int *status, int options);
+gpgme_ssize_t ath_read (int fd, void *buf, size_t nbytes);
+gpgme_ssize_t ath_write (int fd, const void *buf, size_t nbytes);
+gpgme_ssize_t ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
+ struct timeval *timeout);
+gpgme_ssize_t ath_waitpid (pid_t pid, int *status, int options);
int ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr);
int ath_connect (int s, const struct sockaddr *addr, socklen_t length);
int ath_sendmsg (int s, const struct msghdr *msg, int flags);
diff --git a/src/data-compat.c b/src/data-compat.c
index e9ca90a9..99827f16 100644
--- a/src/data-compat.c
+++ b/src/data-compat.c
@@ -41,7 +41,7 @@
non-zero). */
gpgme_error_t
gpgme_data_new_from_filepart (gpgme_data_t *r_dh, const char *fname,
- FILE *stream, off_t offset, size_t length)
+ FILE *stream, gpgme_off_t offset, size_t length)
{
#if defined (HAVE_W32CE_SYSTEM) && defined (_MSC_VER)
return gpgme_error (GPG_ERR_NOT_IMPLEMENTED);
@@ -175,7 +175,7 @@ gpgme_error_to_errno (gpgme_error_t err)
}
-static ssize_t
+static gpgme_ssize_t
old_user_read (gpgme_data_t dh, void *buffer, size_t size)
{
gpgme_error_t err;
@@ -191,8 +191,8 @@ old_user_read (gpgme_data_t dh, void *buffer, size_t size)
}
-static off_t
-old_user_seek (gpgme_data_t dh, off_t offset, int whence)
+static gpgme_off_t
+old_user_seek (gpgme_data_t dh, gpgme_off_t offset, int whence)
{
gpgme_error_t err;
TRACE_BEG2 (DEBUG_DATA, "gpgme:old_user_seek", dh,
diff --git a/src/data-fd.c b/src/data-fd.c
index 4b75e942..42d6a0d2 100644
--- a/src/data-fd.c
+++ b/src/data-fd.c
@@ -89,22 +89,22 @@ lseek (int fildes, long offset, int whence)
-static ssize_t
+static gpgme_ssize_t
fd_read (gpgme_data_t dh, void *buffer, size_t size)
{
return read (dh->data.fd, buffer, size);
}
-static ssize_t
+static gpgme_ssize_t
fd_write (gpgme_data_t dh, const void *buffer, size_t size)
{
return write (dh->data.fd, buffer, size);
}
-static off_t
-fd_seek (gpgme_data_t dh, off_t offset, int whence)
+static gpgme_off_t
+fd_seek (gpgme_data_t dh, gpgme_off_t offset, int whence)
{
return lseek (dh->data.fd, offset, whence);
}
diff --git a/src/data-mem.c b/src/data-mem.c
index fc7694d2..e06a920c 100644
--- a/src/data-mem.c
+++ b/src/data-mem.c
@@ -35,7 +35,7 @@
#include "debug.h"
-static ssize_t
+static gpgme_ssize_t
mem_read (gpgme_data_t dh, void *buffer, size_t size)
{
size_t amt = dh->data.mem.length - dh->data.mem.offset;
@@ -54,7 +54,7 @@ mem_read (gpgme_data_t dh, void *buffer, size_t size)
}
-static ssize_t
+static gpgme_ssize_t
mem_write (gpgme_data_t dh, const void *buffer, size_t size)
{
size_t unused;
@@ -109,8 +109,8 @@ mem_write (gpgme_data_t dh, const void *buffer, size_t size)
}
-static off_t
-mem_seek (gpgme_data_t dh, off_t offset, int whence)
+static gpgme_off_t
+mem_seek (gpgme_data_t dh, gpgme_off_t offset, int whence)
{
switch (whence)
{
diff --git a/src/data-stream.c b/src/data-stream.c
index a9bb815b..f358a0e0 100644
--- a/src/data-stream.c
+++ b/src/data-stream.c
@@ -31,7 +31,7 @@
#include "data.h"
-static ssize_t
+static gpgme_ssize_t
stream_read (gpgme_data_t dh, void *buffer, size_t size)
{
size_t amt = fread (buffer, 1, size, dh->data.stream);
@@ -41,7 +41,7 @@ stream_read (gpgme_data_t dh, void *buffer, size_t size)
}
-static ssize_t
+static gpgme_ssize_t
stream_write (gpgme_data_t dh, const void *buffer, size_t size)
{
size_t amt = fwrite (buffer, 1, size, dh->data.stream);
@@ -51,8 +51,8 @@ stream_write (gpgme_data_t dh, const void *buffer, size_t size)
}
-static off_t
-stream_seek (gpgme_data_t dh, off_t offset, int whence)
+static gpgme_off_t
+stream_seek (gpgme_data_t dh, gpgme_off_t offset, int whence)
{
int err;
diff --git a/src/data-user.c b/src/data-user.c
index 52046148..816ad7db 100644
--- a/src/data-user.c
+++ b/src/data-user.c
@@ -31,7 +31,7 @@
#include "data.h"
-static ssize_t
+static gpgme_ssize_t
user_read (gpgme_data_t dh, void *buffer, size_t size)
{
if (!dh->data.user.cbs->read)
@@ -44,7 +44,7 @@ user_read (gpgme_data_t dh, void *buffer, size_t size)
}
-static ssize_t
+static gpgme_ssize_t
user_write (gpgme_data_t dh, const void *buffer, size_t size)
{
if (!dh->data.user.cbs->write)
@@ -57,8 +57,8 @@ user_write (gpgme_data_t dh, const void *buffer, size_t size)
}
-static off_t
-user_seek (gpgme_data_t dh, off_t offset, int whence)
+static gpgme_off_t
+user_seek (gpgme_data_t dh, gpgme_off_t offset, int whence)
{
if (!dh->data.user.cbs->seek)
{
diff --git a/src/data.c b/src/data.c
index 0657081c..7123a82b 100644
--- a/src/data.c
+++ b/src/data.c
@@ -72,10 +72,10 @@ _gpgme_data_release (gpgme_data_t dh)
/* Read up to SIZE bytes into buffer BUFFER from the data object with
the handle DH. Return the number of characters read, 0 on EOF and
-1 on error. If an error occurs, errno is set. */
-ssize_t
+gpgme_ssize_t
gpgme_data_read (gpgme_data_t dh, void *buffer, size_t size)
{
- ssize_t res;
+ gpgme_ssize_t res;
TRACE_BEG2 (DEBUG_DATA, "gpgme_data_read", dh,
"buffer=%p, size=%u", buffer, size);
@@ -100,10 +100,10 @@ gpgme_data_read (gpgme_data_t dh, void *buffer, size_t size)
/* Write up to SIZE bytes from buffer BUFFER to the data object with
the handle DH. Return the number of characters written, or -1 on
error. If an error occurs, errno is set. */
-ssize_t
+gpgme_ssize_t
gpgme_data_write (gpgme_data_t dh, const void *buffer, size_t size)
{
- ssize_t res;
+ gpgme_ssize_t res;
TRACE_BEG2 (DEBUG_DATA, "gpgme_data_write", dh,
"buffer=%p, size=%u", buffer, size);
@@ -128,8 +128,8 @@ gpgme_data_write (gpgme_data_t dh, const void *buffer, size_t size)
/* Set the current position from where the next read or write starts
in the data object with the handle DH to OFFSET, relativ to
WHENCE. */
-off_t
-gpgme_data_seek (gpgme_data_t dh, off_t offset, int whence)
+gpgme_off_t
+gpgme_data_seek (gpgme_data_t dh, gpgme_off_t offset, int whence)
{
TRACE_BEG2 (DEBUG_DATA, "gpgme_data_seek", dh,
"offset=%lli, whence=%i", offset, whence);
@@ -253,7 +253,7 @@ _gpgme_data_inbound_handler (void *opaque, int fd)
gpgme_data_t dh = (gpgme_data_t) data->handler_value;
char buffer[BUFFER_SIZE];
char *bufp = buffer;
- ssize_t buflen;
+ gpgme_ssize_t buflen;
TRACE_BEG1 (DEBUG_CTX, "_gpgme_data_inbound_handler", dh,
"fd=0x%x", fd);
@@ -268,7 +268,7 @@ _gpgme_data_inbound_handler (void *opaque, int fd)
do
{
- ssize_t amt = gpgme_data_write (dh, bufp, buflen);
+ gpgme_ssize_t amt = gpgme_data_write (dh, bufp, buflen);
if (amt == 0 || (amt < 0 && errno != EINTR))
return TRACE_ERR (gpg_error_from_syserror ());
bufp += amt;
@@ -284,13 +284,13 @@ _gpgme_data_outbound_handler (void *opaque, int fd)
{
struct io_cb_data *data = (struct io_cb_data *) opaque;
gpgme_data_t dh = (gpgme_data_t) data->handler_value;
- ssize_t nwritten;
+ gpgme_ssize_t nwritten;
TRACE_BEG1 (DEBUG_CTX, "_gpgme_data_outbound_handler", dh,
"fd=0x%x", fd);
if (!dh->pending_len)
{
- ssize_t amt = gpgme_data_read (dh, dh->pending, BUFFER_SIZE);
+ gpgme_ssize_t amt = gpgme_data_read (dh, dh->pending, BUFFER_SIZE);
if (amt < 0)
return TRACE_ERR (gpg_error_from_syserror ());
if (amt == 0)
diff --git a/src/data.h b/src/data.h
index 5076619b..3d404af8 100644
--- a/src/data.h
+++ b/src/data.h
@@ -36,20 +36,23 @@
/* Read up to SIZE bytes into buffer BUFFER from the data object with
the handle DH. Return the number of characters read, 0 on EOF and
-1 on error. If an error occurs, errno is set. */
-typedef ssize_t (*gpgme_data_read_cb) (gpgme_data_t dh, void *buffer,
- size_t size);
+typedef gpgme_ssize_t (*gpgme_data_read_cb) (gpgme_data_t dh,
+ void *buffer,
+ size_t size);
/* Write up to SIZE bytes from buffer BUFFER to the data object with
the handle DH. Return the number of characters written, or -1 on
error. If an error occurs, errno is set. */
-typedef ssize_t (*gpgme_data_write_cb) (gpgme_data_t dh, const void *buffer,
- size_t size);
+typedef gpgme_ssize_t (*gpgme_data_write_cb) (gpgme_data_t dh,
+ const void *buffer,
+ size_t size);
/* Set the current position from where the next read or write starts
in the data object with the handle DH to OFFSET, relativ to
WHENCE. */
-typedef off_t (*gpgme_data_seek_cb) (gpgme_data_t dh, off_t offset,
- int whence);
+typedef gpgme_off_t (*gpgme_data_seek_cb) (gpgme_data_t dh,
+ gpgme_off_t offset,
+ int whence);
/* Release the data object with the handle DH. */
typedef void (*gpgme_data_release_cb) (gpgme_data_t dh);
@@ -109,7 +112,7 @@ struct gpgme_data
/* Allocated size of BUFFER. */
size_t size;
size_t length;
- off_t offset;
+ gpgme_off_t offset;
} mem;
/* For gpgme_data_new_from_read_cb. */
diff --git a/src/engine-gpgsm.c b/src/engine-gpgsm.c
index 79adde2c..391b632d 100644
--- a/src/engine-gpgsm.c
+++ b/src/engine-gpgsm.c
@@ -891,7 +891,7 @@ status_handler (void *opaque, int fd)
char *src = line + 2;
char *end = line + linelen;
char *dst = src;
- ssize_t nwritten;
+ gpgme_ssize_t nwritten;
linelen = 0;
while (src < end)
diff --git a/src/engine-uiserver.c b/src/engine-uiserver.c
index a68915a5..a0008e41 100644
--- a/src/engine-uiserver.c
+++ b/src/engine-uiserver.c
@@ -754,7 +754,7 @@ status_handler (void *opaque, int fd)
char *src = line + 2;
char *end = line + linelen;
char *dst = src;
- ssize_t nwritten;
+ gpgme_ssize_t nwritten;
linelen = 0;
while (src < end)
diff --git a/src/gpgme-tool.c b/src/gpgme-tool.c
index 978c387d..bce52b82 100644
--- a/src/gpgme-tool.c
+++ b/src/gpgme-tool.c
@@ -3056,7 +3056,7 @@ _cmd_genkey_write (gpgme_data_t data, const void *buf, size_t size)
{
while (size > 0)
{
- ssize_t writen = gpgme_data_write (data, buf, size);
+ gpgme_ssize_t writen = gpgme_data_write (data, buf, size);
if (writen < 0 && errno != EAGAIN)
return gpg_error_from_syserror ();
else if (writen > 0)
@@ -3112,7 +3112,7 @@ cmd_genkey (assuan_context_t ctx, char *line)
do
{
char buf[512];
- ssize_t readn = gpgme_data_read (inp_data, buf, sizeof (buf));
+ gpgme_ssize_t readn = gpgme_data_read (inp_data, buf, sizeof (buf));
if (readn < 0)
{
err = gpg_error_from_syserror ();
diff --git a/src/gpgme.c b/src/gpgme.c
index 281ba9cf..a8de64b4 100644
--- a/src/gpgme.c
+++ b/src/gpgme.c
@@ -643,7 +643,7 @@ gpgme_set_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs)
/* This function provides access to the internal read function; it is
normally not used. */
-ssize_t
+gpgme_ssize_t
gpgme_io_read (int fd, void *buffer, size_t count)
{
int ret;
@@ -659,7 +659,7 @@ gpgme_io_read (int fd, void *buffer, size_t count)
/* This function provides access to the internal write function. It
is to be used by user callbacks to return data to gpgme. See
gpgme_passphrase_cb_t and gpgme_edit_cb_t. */
-ssize_t
+gpgme_ssize_t
gpgme_io_write (int fd, const void *buffer, size_t count)
{
int ret;
diff --git a/src/gpgme.h.in b/src/gpgme.h.in
index 12bd4ac7..caf64d4c 100644
--- a/src/gpgme.h.in
+++ b/src/gpgme.h.in
@@ -18,7 +18,7 @@
You should have received a copy of the GNU Lesser General Public
License along with this program; if not, see <http://www.gnu.org/licenses/>.
- File: @configure_input@ */
+ Generated from gpgme.h.in for @GPGME_CONFIG_HOST@. */
#ifndef GPGME_H
#define GPGME_H
@@ -33,10 +33,8 @@
/* Include stdio.h for the FILE type definition. */
#include <stdio.h>
-
-@INSERT__TYPEDEFS_FOR_GPGME_H@
-
#include <time.h>
+@INSERT__TYPEDEFS_FOR_GPGME_H@
#include <gpg-error.h>
@@ -1043,8 +1041,8 @@ void gpgme_get_io_cbs (gpgme_ctx_t ctx, gpgme_io_cbs_t io_cbs);
/* Wrappers around the internal I/O functions for use with
gpgme_passphrase_cb_t and gpgme_edit_cb_t. */
-ssize_t gpgme_io_read (int fd, void *buffer, size_t count);
-ssize_t gpgme_io_write (int fd, const void *buffer, size_t count);
+@API__SSIZE_T@ gpgme_io_read (int fd, void *buffer, size_t count);
+@API__SSIZE_T@ gpgme_io_write (int fd, const void *buffer, size_t count);
int gpgme_io_writen (int fd, const void *buffer, size_t count);
/* Process the pending operation and, if HANG is non-zero, wait for
@@ -1060,19 +1058,20 @@ gpgme_ctx_t gpgme_wait_ext (gpgme_ctx_t ctx, gpgme_error_t *status,
/* Read up to SIZE bytes into buffer BUFFER from the data object with
the handle HANDLE. Return the number of characters read, 0 on EOF
and -1 on error. If an error occurs, errno is set. */
-typedef ssize_t (*gpgme_data_read_cb_t) (void *handle, void *buffer,
+typedef @API__SSIZE_T@ (*gpgme_data_read_cb_t) (void *handle, void *buffer,
size_t size);
/* Write up to SIZE bytes from buffer BUFFER to the data object with
the handle HANDLE. Return the number of characters written, or -1
on error. If an error occurs, errno is set. */
-typedef ssize_t (*gpgme_data_write_cb_t) (void *handle, const void *buffer,
+typedef @API__SSIZE_T@ (*gpgme_data_write_cb_t) (void *handle, const void *buffer,
size_t size);
/* Set the current position from where the next read or write starts
in the data object with the handle HANDLE to OFFSET, relativ to
WHENCE. */
-typedef off_t (*gpgme_data_seek_cb_t) (void *handle, off_t offset, int whence);
+typedef @API__OFF_T@ (*gpgme_data_seek_cb_t) (void *handle,
+ @API__OFF_T@ offset, int whence);
/* Close the data object with the handle DL. */
typedef void (*gpgme_data_release_cb_t) (void *handle);
@@ -1089,17 +1088,17 @@ typedef struct gpgme_data_cbs *gpgme_data_cbs_t;
/* Read up to SIZE bytes into buffer BUFFER from the data object with
the handle DH. Return the number of characters read, 0 on EOF and
-1 on error. If an error occurs, errno is set. */
-ssize_t gpgme_data_read (gpgme_data_t dh, void *buffer, size_t size);
+@API__SSIZE_T@ gpgme_data_read (gpgme_data_t dh, void *buffer, size_t size);
/* Write up to SIZE bytes from buffer BUFFER to the data object with
the handle DH. Return the number of characters written, or -1 on
error. If an error occurs, errno is set. */
-ssize_t gpgme_data_write (gpgme_data_t dh, const void *buffer, size_t size);
+@API__SSIZE_T@ gpgme_data_write (gpgme_data_t dh, const void *buffer, size_t size);
/* Set the current position from where the next read or write starts
in the data object with the handle DH to OFFSET, relativ to
WHENCE. */
-off_t gpgme_data_seek (gpgme_data_t dh, off_t offset, int whence);
+@API__OFF_T@ gpgme_data_seek (gpgme_data_t dh, @API__OFF_T@ offset, int whence);
/* Create a new data buffer and return it in R_DH. */
gpgme_error_t gpgme_data_new (gpgme_data_t *r_dh);
@@ -1168,7 +1167,7 @@ gpgme_error_t gpgme_data_new_from_file (gpgme_data_t *r_dh,
non-zero). */
gpgme_error_t gpgme_data_new_from_filepart (gpgme_data_t *r_dh,
const char *fname, FILE *fp,
- off_t offset, size_t length);
+ @API__OFF_T@ offset, size_t length);
/* Reset the read pointer in DH. Deprecated, please use
gpgme_data_seek instead. */