2009-06-22 Marcus Brinkmann <marcus@g10code.de>
* configure.ac: Add AC_TYPE_UINTPTR_T. * assuan/assuan.h [_ASSUAN_IN_GPGME_BUILD_ASSUAN]: Declare _gpgme_io_connect. src/ 2009-06-22 Marcus Brinkmann <marcus@g10code.de> * debug.h: Everywhere, use %p instead of 0x%x to print pointer. [HAVE_STDINT_H]: Include <stdint.h>. (_TRACE, TRACE, TRACE0, TRACE1, TRACE2, TRACE3, TRACE6): Cast tag to (uintptr_t) before casting it to (void*) to silence GCC warning. * gpgme.h.in (_GPGME_DEPRECATED_OUTSIDE_GPGME): New macro. * sign.c (_GPGME_IN_GPGME): Define it. * keylist.c (_GPGME_IN_GPGME): Define it. * debug.c (_gpgme_debug_begin, _gpgme_debug_add): Handle error in vasprintf and asprintf. * priv-io.h: Include <sys/socket.h>. Declare _gpgme_io_connect. tests/ 2009-06-22 Marcus Brinkmann <marcus@g10code.de> * gpg/t-support.h (passphrase_cb): Implement write() according to the book to silence compiler warning. * gpgsm/t-support.h (passphrase_cb): Likewise.
This commit is contained in:
parent
b207a32d4d
commit
1c454aee81
@ -1,3 +1,10 @@
|
||||
2009-06-22 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* configure.ac: Add AC_TYPE_UINTPTR_T.
|
||||
|
||||
* assuan/assuan.h [_ASSUAN_IN_GPGME_BUILD_ASSUAN]: Declare
|
||||
_gpgme_io_connect.
|
||||
|
||||
2009-06-18 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
Released GPGME 1.2.0.
|
||||
|
@ -75,6 +75,7 @@
|
||||
int _gpgme_io_close (int fd);
|
||||
int _gpgme_io_read (int fd, void *buffer, size_t count);
|
||||
int _gpgme_io_write (int fd, const void *buffer, size_t count);
|
||||
int _gpgme_io_connect (int fd, struct sockaddr *addr, int addrlen);
|
||||
int _gpgme_io_sendmsg (int sock, const struct msghdr *msg, int flags);
|
||||
int _gpgme_io_recvmsg (int sock, struct msghdr *msg, int flags);
|
||||
int _gpgme_io_socket (int domain, int type, int proto);
|
||||
|
@ -197,6 +197,7 @@ AC_C_INLINE
|
||||
AC_CHECK_SIZEOF(unsigned int)
|
||||
AC_SYS_LARGEFILE
|
||||
AC_TYPE_OFF_T
|
||||
AC_TYPE_UINTPTR_T
|
||||
|
||||
# A simple compile time check in gpgme.h for GNU/Linux systems that
|
||||
# prevents a file offset bits mismatch between gpgme and the application.
|
||||
|
@ -1,3 +1,20 @@
|
||||
2009-06-22 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* debug.h: Everywhere, use %p instead of 0x%x to print pointer.
|
||||
[HAVE_STDINT_H]: Include <stdint.h>.
|
||||
(_TRACE, TRACE, TRACE0, TRACE1, TRACE2, TRACE3, TRACE6): Cast tag
|
||||
to (uintptr_t) before casting it to (void*) to silence GCC
|
||||
warning.
|
||||
|
||||
* gpgme.h.in (_GPGME_DEPRECATED_OUTSIDE_GPGME): New macro.
|
||||
* sign.c (_GPGME_IN_GPGME): Define it.
|
||||
* keylist.c (_GPGME_IN_GPGME): Define it.
|
||||
|
||||
* debug.c (_gpgme_debug_begin, _gpgme_debug_add): Handle error in
|
||||
vasprintf and asprintf.
|
||||
|
||||
* priv-io.h: Include <sys/socket.h>. Declare _gpgme_io_connect.
|
||||
|
||||
2009-06-18 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* gpgme.h.in (GPGME_CONF_PATHNAME): Revert last change, it's
|
||||
|
20
src/debug.c
20
src/debug.c
@ -1,6 +1,6 @@
|
||||
/* debug.c - helpful output in desperate situations
|
||||
Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 g10 Code GmbH
|
||||
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2009 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
@ -197,6 +197,7 @@ void
|
||||
_gpgme_debug_begin (void **line, int level, const char *format, ...)
|
||||
{
|
||||
va_list arg_ptr;
|
||||
int res;
|
||||
|
||||
debug_init ();
|
||||
if (debug_level < level)
|
||||
@ -207,8 +208,10 @@ _gpgme_debug_begin (void **line, int level, const char *format, ...)
|
||||
}
|
||||
|
||||
va_start (arg_ptr, format);
|
||||
vasprintf ((char **) line, format, arg_ptr);
|
||||
res = vasprintf ((char **) line, format, arg_ptr);
|
||||
va_end (arg_ptr);
|
||||
if (res < 0)
|
||||
*line = NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -219,16 +222,25 @@ _gpgme_debug_add (void **line, const char *format, ...)
|
||||
va_list arg_ptr;
|
||||
char *toadd;
|
||||
char *result;
|
||||
int res;
|
||||
|
||||
if (!*line)
|
||||
return;
|
||||
|
||||
va_start (arg_ptr, format);
|
||||
vasprintf (&toadd, format, arg_ptr);
|
||||
res = vasprintf (&toadd, format, arg_ptr);
|
||||
va_end (arg_ptr);
|
||||
asprintf (&result, "%s%s", *(char **) line, toadd);
|
||||
if (res < 0)
|
||||
{
|
||||
free (*line);
|
||||
*line = NULL;
|
||||
}
|
||||
res = asprintf (&result, "%s%s", *(char **) line, toadd);
|
||||
free (toadd);
|
||||
free (*line);
|
||||
if (res < 0)
|
||||
*line = NULL;
|
||||
else
|
||||
*line = result;
|
||||
}
|
||||
|
||||
|
78
src/debug.h
78
src/debug.h
@ -22,6 +22,9 @@
|
||||
#define DEBUG_H
|
||||
|
||||
#include <string.h>
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
/* Indirect stringification, requires __STDC__ to work. */
|
||||
#define STRINGIFY(v) #v
|
||||
@ -81,133 +84,134 @@ void _gpgme_debug_buffer (int lvl, const char *const fmt,
|
||||
int _gpgme_trace_level = lvl; \
|
||||
const char *const _gpgme_trace_func = name; \
|
||||
const char *const _gpgme_trace_tagname = STRINGIFY (tag); \
|
||||
void *_gpgme_trace_tag = (void *) tag
|
||||
void *_gpgme_trace_tag = (void *) (uintptr_t) tag
|
||||
|
||||
#define TRACE_BEG(lvl, name, tag) \
|
||||
_TRACE (lvl, name, tag); \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): enter\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): enter\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag), 0
|
||||
#define TRACE_BEG0(lvl, name, tag, fmt) \
|
||||
_TRACE (lvl, name, tag); \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): enter: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag), 0
|
||||
#define TRACE_BEG1(lvl, name, tag, fmt, arg1) \
|
||||
_TRACE (lvl, name, tag); \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): enter: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1), 0
|
||||
#define TRACE_BEG2(lvl, name, tag, fmt, arg1, arg2) \
|
||||
_TRACE (lvl, name, tag); \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): enter: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2), 0
|
||||
#define TRACE_BEG3(lvl, name, tag, fmt, arg1, arg2, arg3) \
|
||||
_TRACE (lvl, name, tag); \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): enter: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2, arg3), 0
|
||||
#define TRACE_BEG4(lvl, name, tag, fmt, arg1, arg2, arg3, arg4) \
|
||||
_TRACE (lvl, name, tag); \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): enter: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): enter: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2, arg3, arg4), 0
|
||||
|
||||
#define TRACE(lvl, name, tag) \
|
||||
_gpgme_debug (lvl, "%s (%s=0x%x): call\n", \
|
||||
name, STRINGIFY (tag), (void *) tag), 0
|
||||
_gpgme_debug (lvl, "%s (%s=%p): call\n", \
|
||||
name, STRINGIFY (tag), (void *) (uintptr_t) tag), 0
|
||||
#define TRACE0(lvl, name, tag, fmt) \
|
||||
_gpgme_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) tag), 0
|
||||
_gpgme_debug (lvl, "%s (%s=%p): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) (uintptr_t) tag), 0
|
||||
#define TRACE1(lvl, name, tag, fmt, arg1) \
|
||||
_gpgme_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) tag, arg1), 0
|
||||
_gpgme_debug (lvl, "%s (%s=%p): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1), 0
|
||||
#define TRACE2(lvl, name, tag, fmt, arg1, arg2) \
|
||||
_gpgme_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) tag, arg1, arg2), 0
|
||||
_gpgme_debug (lvl, "%s (%s=%p): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1, \
|
||||
arg2), 0
|
||||
#define TRACE3(lvl, name, tag, fmt, arg1, arg2, arg3) \
|
||||
_gpgme_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) tag, arg1, arg2, \
|
||||
arg3), 0
|
||||
_gpgme_debug (lvl, "%s (%s=%p): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1, \
|
||||
arg2, arg3), 0
|
||||
#define TRACE6(lvl, name, tag, fmt, arg1, arg2, arg3, arg4, arg5, arg6) \
|
||||
_gpgme_debug (lvl, "%s (%s=0x%x): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) tag, arg1, arg2, arg3, \
|
||||
arg4, arg5, arg6), 0
|
||||
_gpgme_debug (lvl, "%s (%s=%p): call: " fmt "\n", \
|
||||
name, STRINGIFY (tag), (void *) (uintptr_t) tag, arg1, \
|
||||
arg2, arg3, arg4, arg5, arg6), 0
|
||||
|
||||
#define TRACE_ERR(err) \
|
||||
err == 0 ? (TRACE_SUC ()) : \
|
||||
(_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): error: %s <%s>\n", \
|
||||
(_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): error: %s <%s>\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, gpgme_strerror (err), \
|
||||
gpgme_strsource (err)), (err))
|
||||
/* The cast to void suppresses GCC warnings. */
|
||||
#define TRACE_SYSRES(res) \
|
||||
res >= 0 ? ((void) (TRACE_SUC1 ("result=%i", res)), (res)) : \
|
||||
(_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): error: %s\n", \
|
||||
(_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): error: %s\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, strerror (errno)), (res))
|
||||
#define TRACE_SYSERR(res) \
|
||||
res == 0 ? ((void) (TRACE_SUC1 ("result=%i", res)), (res)) : \
|
||||
(_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): error: %s\n", \
|
||||
(_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): error: %s\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, strerror (res)), (res))
|
||||
|
||||
#define TRACE_SUC() \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): leave\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): leave\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag), 0
|
||||
#define TRACE_SUC0(fmt) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): leave: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag), 0
|
||||
#define TRACE_SUC1(fmt, arg1) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): leave: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1), 0
|
||||
#define TRACE_SUC2(fmt, arg1, arg2) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): leave: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2), 0
|
||||
#define TRACE_SUC5(fmt, arg1, arg2, arg3, arg4, arg5) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): leave: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): leave: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2, arg3, arg4, arg5), 0
|
||||
|
||||
#define TRACE_LOG(fmt) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): check: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag), 0
|
||||
#define TRACE_LOG1(fmt, arg1) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): check: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1), 0
|
||||
#define TRACE_LOG2(fmt, arg1, arg2) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): check: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2), 0
|
||||
#define TRACE_LOG3(fmt, arg1, arg2, arg3) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): check: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2, arg3), 0
|
||||
#define TRACE_LOG4(fmt, arg1, arg2, arg3, arg4) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): check: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2, arg3, arg4), 0
|
||||
#define TRACE_LOG6(fmt, arg1, arg2, arg3, arg4, arg5, arg6) \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=0x%x): check: " fmt "\n", \
|
||||
_gpgme_debug (_gpgme_trace_level, "%s (%s=%p): check: " fmt "\n", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, arg1, arg2, arg3, arg4, arg5, \
|
||||
arg6), 0
|
||||
|
||||
#define TRACE_LOGBUF(buf, len) \
|
||||
_gpgme_debug_buffer (_gpgme_trace_level, "%s (%s=0x%x): check: %s", \
|
||||
_gpgme_debug_buffer (_gpgme_trace_level, "%s (%s=%p): check: %s", \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag, buf, len)
|
||||
|
||||
#define TRACE_SEQ(hlp,fmt) \
|
||||
_gpgme_debug_begin (&(hlp), _gpgme_trace_level, \
|
||||
"%s (%s=0x%x): check: " fmt, \
|
||||
"%s (%s=%p): check: " fmt, \
|
||||
_gpgme_trace_func, _gpgme_trace_tagname, \
|
||||
_gpgme_trace_tag)
|
||||
#define TRACE_ADD0(hlp,fmt) \
|
||||
|
@ -66,6 +66,14 @@ extern "C" {
|
||||
#define _GPGME_DEPRECATED
|
||||
#endif
|
||||
|
||||
/* The macro _GPGME_DEPRECATED_OUTSIDE_GPGME suppresses warnings for
|
||||
fields we must access in GPGME for ABI compatibility. */
|
||||
#ifdef _GPGME_IN_GPGME
|
||||
#define _GPGME_DEPRECATED_OUTSIDE_GPGME
|
||||
#else
|
||||
#define _GPGME_DEPRECATED_OUTSIDE_GPGME _GPGME_DEPRECATED
|
||||
#endif
|
||||
|
||||
|
||||
/* The version of this header should match the one of the library. Do
|
||||
not use this symbol in your application, use gpgme_check_version
|
||||
@ -615,7 +623,7 @@ struct _gpgme_key_sig
|
||||
unsigned int _obsolete_class _GPGME_DEPRECATED;
|
||||
#else
|
||||
/* Must be set to SIG_CLASS below. */
|
||||
unsigned int class _GPGME_DEPRECATED;
|
||||
unsigned int class _GPGME_DEPRECATED_OUTSIDE_GPGME;
|
||||
#endif
|
||||
|
||||
/* The user ID string. */
|
||||
@ -1294,7 +1302,7 @@ struct _gpgme_new_signature
|
||||
unsigned int _obsolete_class_2;
|
||||
#else
|
||||
/* Must be set to SIG_CLASS below. */
|
||||
unsigned int class _GPGME_DEPRECATED;
|
||||
unsigned int class _GPGME_DEPRECATED_OUTSIDE_GPGME;
|
||||
#endif
|
||||
|
||||
/* Crypto backend specific signature class. */
|
||||
|
@ -32,6 +32,8 @@
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Suppress warning for accessing deprecated member "class". */
|
||||
#define _GPGME_IN_GPGME
|
||||
#include "gpgme.h"
|
||||
#include "util.h"
|
||||
#include "context.h"
|
||||
|
@ -22,6 +22,7 @@
|
||||
#ifndef IO_H
|
||||
#define IO_H
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
/* A single file descriptor passed to spawn. For child fds, dup_to
|
||||
specifies the fd it should become in the child, but only 0, 1 and 2
|
||||
@ -50,6 +51,7 @@ struct io_select_fd_s
|
||||
|
||||
/* These function are either defined in posix-io.c or w32-io.c. */
|
||||
void _gpgme_io_subsystem_init (void);
|
||||
int _gpgme_io_connect (int fd, struct sockaddr *addr, int addrlen);
|
||||
int _gpgme_io_read (int fd, void *buffer, size_t count);
|
||||
int _gpgme_io_write (int fd, const void *buffer, size_t count);
|
||||
int _gpgme_io_pipe (int filedes[2], int inherit_idx);
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Suppress warning for accessing deprecated member "class". */
|
||||
#define _GPGME_IN_GPGME 1
|
||||
#include "gpgme.h"
|
||||
#include "context.h"
|
||||
#include "ops.h"
|
||||
|
@ -1,3 +1,9 @@
|
||||
2009-06-22 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* gpg/t-support.h (passphrase_cb): Implement write() according to
|
||||
the book to silence compiler warning.
|
||||
* gpgsm/t-support.h (passphrase_cb): Likewise.
|
||||
|
||||
2009-06-16 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gpg/pgp-import.c: New.
|
||||
|
@ -80,7 +80,20 @@ passphrase_cb (void *opaque, const char *uid_hint, const char *passphrase_info,
|
||||
DWORD written;
|
||||
WriteFile ((HANDLE) fd, "abc\n", 4, &written, 0);
|
||||
#else
|
||||
write (fd, "abc\n", 4);
|
||||
int res;
|
||||
char *pass = "abc\n";
|
||||
int passlen = strlen (pass);
|
||||
int off = 0;
|
||||
|
||||
do
|
||||
{
|
||||
res = write (fd, &pass[off], passlen - off);
|
||||
if (res > 0)
|
||||
off += res;
|
||||
}
|
||||
while (res > 0 && off != passlen);
|
||||
|
||||
return off == passlen ? 0 : gpgme_error_from_errno (errno);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
@ -62,8 +62,20 @@ gpgme_error_t
|
||||
passphrase_cb (void *opaque, const char *uid_hint, const char *passphrase_info,
|
||||
int last_was_bad, int fd)
|
||||
{
|
||||
write (fd, "abc\n", 4);
|
||||
return 0;
|
||||
int res;
|
||||
char *pass = "abc\n";
|
||||
int passlen = strlen (pass);
|
||||
int off = 0;
|
||||
|
||||
do
|
||||
{
|
||||
res = write (fd, &pass[off], passlen - off);
|
||||
if (res > 0)
|
||||
off += res;
|
||||
}
|
||||
while (res > 0 && off != passlen);
|
||||
|
||||
return off == passlen ? 0 : gpgme_error_from_errno (errno);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user