2005-09-12 Marcus Brinkmann <marcus@g10code.de>
* configure.ac (HAVE_PTH): Don't add $PTH_CFLAGS to $CFLAGS here. gpgme/ 2005-09-12 Marcus Brinkmann <marcus@g10code.de> * Makefile.am (libgpgme_la_SOURCES): Set to ath.h and ath.c. (ath_pth_src, ath_pthread_src): Removed. (w32_o_files): Replace ath-compat.o with ath.o. (libgpgme_pth_la_CFLAGS): New variable. * ath-compat.c, ath-pthread-compat.c, ath-pth-compat.c: Removed. * ath.h (ath_pthread_available, ath_pth_available): Removed. (ath_init) [!_ATH_EXT_SYM_PREFIX]: Do not define macro. (struct ath_ops, ath_init) [_ATH_COMPAT]: Removed. (_ATH_COMPAT): Macro removed. * posix-sema.c (_gpgme_sema_subsystem_init): Do not call _gpgme_ath_init.
This commit is contained in:
parent
a02fa90f6b
commit
f1eb841d3b
@ -1,3 +1,7 @@
|
||||
2005-09-12 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* configure.ac (HAVE_PTH): Don't add $PTH_CFLAGS to $CFLAGS here.
|
||||
|
||||
2005-08-26 Werner Koch <wk@g10code.com>
|
||||
|
||||
* configure.ac (SEPCONSTANTS): New to define DIRSEP_C et al.
|
||||
|
22
NEWS
22
NEWS
@ -1,12 +1,6 @@
|
||||
Noteworthy changes in version 1.1.0 (unreleased)
|
||||
------------------------------------------------
|
||||
|
||||
* "./autogen.sh --build-w32" does now build gpgme.dll.
|
||||
|
||||
* [W32] The environment variable GPGME_DEBUG now uses a semicolon as
|
||||
delimiter. The standard install directory is used when locating
|
||||
gpg or gpgsm before finally falling back to the hardwired name.
|
||||
|
||||
* You can now configure the backend engine file name and home
|
||||
directory to be used, as default and per context.
|
||||
|
||||
@ -27,6 +21,22 @@ Noteworthy changes in version 1.1.0 (unreleased)
|
||||
if available is made available in the new field plaintext_filename
|
||||
of the respective result structure.
|
||||
|
||||
* The code for "automagically detecting the thread library" has been
|
||||
removed from libgpgme. It is deprecated since version 0.4.3.
|
||||
Since then, you had to link against libgpgme-pthread for
|
||||
applications using pthread and libgpgme-pth for applications using
|
||||
GNU Pth.
|
||||
|
||||
The code was removed because it caused compilation problems on
|
||||
systems where the pthread.h header from GNU Pth is available in
|
||||
addition to the system header (FreeBSD 6 and later for example).
|
||||
|
||||
* "./autogen.sh --build-w32" does now build gpgme.dll.
|
||||
|
||||
* [W32] The environment variable GPGME_DEBUG now uses a semicolon as
|
||||
delimiter. The standard install directory is used when locating
|
||||
gpg or gpgsm before finally falling back to the hardwired name.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
gpgme_set_engine_info NEW
|
||||
gpgme_ctx_get_engine_info NEW
|
||||
|
@ -1,3 +1,17 @@
|
||||
2005-09-12 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* Makefile.am (libgpgme_la_SOURCES): Set to ath.h and ath.c.
|
||||
(ath_pth_src, ath_pthread_src): Removed.
|
||||
(w32_o_files): Replace ath-compat.o with ath.o.
|
||||
(libgpgme_pth_la_CFLAGS): New variable.
|
||||
* ath-compat.c, ath-pthread-compat.c, ath-pth-compat.c: Removed.
|
||||
* ath.h (ath_pthread_available, ath_pth_available): Removed.
|
||||
(ath_init) [!_ATH_EXT_SYM_PREFIX]: Do not define macro.
|
||||
(struct ath_ops, ath_init) [_ATH_COMPAT]: Removed.
|
||||
(_ATH_COMPAT): Macro removed.
|
||||
* posix-sema.c (_gpgme_sema_subsystem_init): Do not call
|
||||
_gpgme_ath_init.
|
||||
|
||||
2005-09-12 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* keylist.c (release_op_data): Do not free opd->tmp_uid.
|
||||
|
@ -83,18 +83,7 @@ libgpgme_real_la_SOURCES = \
|
||||
$(gpgsm_components) sema.h priv-io.h $(system_components) \
|
||||
debug.c debug.h gpgme.c version.c error.c
|
||||
|
||||
# libgpgme_la_SOURCES = ath.h ath.c
|
||||
if HAVE_PTH
|
||||
ath_pth_src = ath-pth-compat.c
|
||||
else
|
||||
ath_pth_src =
|
||||
endif
|
||||
if HAVE_PTHREAD
|
||||
ath_pthread_src = ath-pthread-compat.c
|
||||
else
|
||||
ath_pthread_src =
|
||||
endif
|
||||
libgpgme_la_SOURCES = ath.h ath-compat.c $(ath_pth_src) $(ath_pthread_src)
|
||||
libgpgme_la_SOURCES = ath.h ath.c
|
||||
libgpgme_pthread_la_SOURCES = ath.h ath-pthread.c
|
||||
libgpgme_pth_la_SOURCES = ath.h ath-pth.c
|
||||
|
||||
@ -114,6 +103,7 @@ libgpgme_pthread_la_DEPENDENCIES = libgpgme-real.la $(assuan_libobjs) \
|
||||
libgpgme_pthread_la_LIBADD = libgpgme-real.la $(assuan_libobjs) @LTLIBOBJS@ \
|
||||
-lpthread @GPG_ERROR_LIBS@
|
||||
|
||||
libgpgme_pth_la_CFLAGS = $(AM_CFLAGS) @PTH_CFLAGS@
|
||||
libgpgme_pth_la_CPPFLAGS = $(AM_CPPFLAGS) @PTH_CPPFLAGS@
|
||||
libgpgme_pth_la_LDFLAGS = @PTH_LDFLAGS@ \
|
||||
$(libgpgme_version_script_cmd) -version-info \
|
||||
@ -130,7 +120,7 @@ status-table.h : gpgme.h
|
||||
# able to do this properly; we better use gcc's built in magic.
|
||||
if HAVE_W32_SYSTEM
|
||||
|
||||
w32_o_files = ath-compat.o conversion.o data-compat.o data-fd.o \
|
||||
w32_o_files = ath.o conversion.o data-compat.o data-fd.o \
|
||||
data-mem.o data-stream.o data-user.o data.o debug.o \
|
||||
decrypt-verify.o decrypt.o delete.o edit.o encrypt-sign.o \
|
||||
encrypt.o engine-gpgsm.o engine.o error.o export.o genkey.o \
|
||||
|
@ -1,211 +0,0 @@
|
||||
/* ath.c - self-adapting thread-safeness library
|
||||
Copyright (C) 2002, 2004 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
GPGME is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
GPGME 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
# include <sys/select.h>
|
||||
#else
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#ifndef HAVE_W32_SYSTEM
|
||||
#include <sys/wait.h>
|
||||
#endif /*!HAVE_W32_SYSTEM*/
|
||||
|
||||
|
||||
#include "ath.h"
|
||||
|
||||
static struct ath_ops *ath_ops;
|
||||
|
||||
void
|
||||
ath_init (void)
|
||||
{
|
||||
if (0)
|
||||
;
|
||||
#ifdef HAVE_PTHREAD
|
||||
else if (!ath_ops)
|
||||
ath_ops = ath_pthread_available ();
|
||||
#endif
|
||||
#ifdef HAVE_PTH
|
||||
else if (!ath_ops)
|
||||
ath_ops = ath_pth_available ();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_mutex_init (ath_mutex_t *lock)
|
||||
{
|
||||
if (!ath_ops)
|
||||
return 0;
|
||||
|
||||
return ath_ops->mutex_init (lock, 0);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_mutex_destroy (ath_mutex_t *lock)
|
||||
{
|
||||
int err;
|
||||
if (!ath_ops)
|
||||
return 0;
|
||||
err = ath_ops->mutex_init (lock, 1);
|
||||
if (!err)
|
||||
err = ath_ops->mutex_destroy (*lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_mutex_lock (ath_mutex_t *lock)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!ath_ops)
|
||||
return 0;
|
||||
err = ath_ops->mutex_init (lock, 1);
|
||||
if (!err)
|
||||
err = ath_ops->mutex_lock (*lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_mutex_unlock (ath_mutex_t *lock)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!ath_ops)
|
||||
return 0;
|
||||
err = ath_ops->mutex_init (lock, 1);
|
||||
if (!err)
|
||||
err = ath_ops->mutex_unlock (*lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
ssize_t
|
||||
ath_read (int fd, void *buf, size_t nbytes)
|
||||
{
|
||||
if (ath_ops && ath_ops->read)
|
||||
return ath_ops->read (fd, buf, nbytes);
|
||||
else
|
||||
return read (fd, buf, nbytes);
|
||||
}
|
||||
|
||||
|
||||
ssize_t
|
||||
ath_write (int fd, const void *buf, size_t nbytes)
|
||||
{
|
||||
if (ath_ops && ath_ops->write)
|
||||
return ath_ops->write (fd, buf, nbytes);
|
||||
else
|
||||
return write (fd, buf, nbytes);
|
||||
}
|
||||
|
||||
|
||||
ssize_t
|
||||
ath_select (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
|
||||
struct timeval *timeout)
|
||||
{
|
||||
if (ath_ops && ath_ops->select)
|
||||
return ath_ops->select (nfd, rset, wset, eset, timeout);
|
||||
else
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return -1; /* We don't support this yet. */
|
||||
#else
|
||||
return select (nfd, rset, wset, eset, timeout);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
ssize_t
|
||||
ath_waitpid (pid_t pid, int *status, int options)
|
||||
{
|
||||
if (ath_ops && ath_ops->waitpid)
|
||||
return ath_ops->waitpid (pid, status, options);
|
||||
else
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return -1; /* We don't support this yet. */
|
||||
#else
|
||||
return waitpid (pid, status, options);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr)
|
||||
{
|
||||
if (ath_ops && ath_ops->accept)
|
||||
return ath_ops->accept (s, addr, length_ptr);
|
||||
else
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return -1; /* We don't support this yet. */
|
||||
#else
|
||||
return accept (s, addr, length_ptr);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_connect (int s, const struct sockaddr *addr, socklen_t length)
|
||||
{
|
||||
if (ath_ops && ath_ops->connect)
|
||||
return ath_ops->connect (s, addr, length);
|
||||
else
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return -1; /* We don't support this yet. */
|
||||
#else
|
||||
return connect (s, addr, length);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_sendmsg (int s, const struct msghdr *msg, int flags)
|
||||
{
|
||||
if (ath_ops && ath_ops->sendmsg)
|
||||
return ath_ops->sendmsg (s, msg, flags);
|
||||
else
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return -1; /* We don't support this yet. */
|
||||
#else
|
||||
return sendmsg (s, msg, flags);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ath_recvmsg (int s, struct msghdr *msg, int flags)
|
||||
{
|
||||
if (ath_ops && ath_ops->recvmsg)
|
||||
return ath_ops->recvmsg (s, msg, flags);
|
||||
else
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
return -1; /* We don't support this yet. */
|
||||
#else
|
||||
return recvmsg (s, msg, flags);
|
||||
#endif
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
/* ath-pth.c - Pth module for self-adapting thread-safeness library
|
||||
Copyright (C) 2002, 2004 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
GPGME is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
GPGME 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <pth.h>
|
||||
|
||||
#include "ath.h"
|
||||
|
||||
#pragma weak pth_mutex_init
|
||||
#pragma weak pth_mutex_acquire
|
||||
#pragma weak pth_mutex_release
|
||||
#pragma weak pth_read
|
||||
#pragma weak pth_write
|
||||
#pragma weak pth_select
|
||||
#pragma weak pth_waitpid
|
||||
#pragma weak pth_accept
|
||||
#pragma weak pth_connect
|
||||
|
||||
/* The lock we take while checking for lazy lock initialization. */
|
||||
static pth_mutex_t check_init_lock = PTH_MUTEX_INIT;
|
||||
|
||||
/* Initialize the mutex *PRIV. If JUST_CHECK is true, only do this if
|
||||
it is not already initialized. */
|
||||
static int
|
||||
mutex_pth_init (void **priv, int just_check)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
if (just_check)
|
||||
pth_mutex_acquire (&check_init_lock, 0, NULL);
|
||||
if (!*priv || !just_check)
|
||||
{
|
||||
pth_mutex_t *lock = malloc (sizeof (pth_mutex_t));
|
||||
if (!lock)
|
||||
err = ENOMEM;
|
||||
if (!err)
|
||||
{
|
||||
err = pth_mutex_init (lock);
|
||||
if (err == FALSE)
|
||||
err = errno;
|
||||
else
|
||||
err = 0;
|
||||
|
||||
if (err)
|
||||
free (lock);
|
||||
else
|
||||
*priv = lock;
|
||||
}
|
||||
}
|
||||
if (just_check)
|
||||
pth_mutex_release (&check_init_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
mutex_pth_destroy (void *priv)
|
||||
{
|
||||
free (priv);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
mutex_pth_lock (void *priv)
|
||||
{
|
||||
int ret = pth_mutex_acquire ((pth_mutex_t *) priv, 0, NULL);
|
||||
return ret == FALSE ? errno : 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
mutex_pth_unlock (void *priv)
|
||||
{
|
||||
int ret = pth_mutex_release ((pth_mutex_t *) priv);
|
||||
return ret == FALSE ? errno : 0;
|
||||
}
|
||||
|
||||
|
||||
static struct ath_ops ath_pth_ops =
|
||||
{
|
||||
mutex_pth_init,
|
||||
mutex_pth_destroy,
|
||||
mutex_pth_lock,
|
||||
mutex_pth_unlock,
|
||||
pth_read,
|
||||
pth_write,
|
||||
pth_select,
|
||||
pth_waitpid,
|
||||
pth_accept,
|
||||
pth_connect,
|
||||
NULL, /* FIXME: When GNU PTh has sendmsg. */
|
||||
NULL /* FIXME: When GNU PTh has recvmsg. */
|
||||
};
|
||||
|
||||
|
||||
struct ath_ops *
|
||||
ath_pth_available (void)
|
||||
{
|
||||
if (pth_mutex_init && pth_mutex_acquire && pth_mutex_release
|
||||
&& pth_read && pth_write && pth_select && pth_waitpid)
|
||||
return &ath_pth_ops;
|
||||
else
|
||||
return 0;
|
||||
}
|
@ -1,104 +0,0 @@
|
||||
/* ath-pthread.c - pthread module for self-adapting thread-safeness library
|
||||
Copyright (C) 2002, 2004 g10 Code GmbH
|
||||
|
||||
This file is part of GPGME.
|
||||
|
||||
GPGME is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation; either version 2.1 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
GPGME 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "ath.h"
|
||||
|
||||
/* Need to include pthread_create in our check, as the GNU C library
|
||||
has the pthread_mutex_* functions in their public interface. */
|
||||
#pragma weak pthread_create
|
||||
#pragma weak pthread_mutex_init
|
||||
#pragma weak pthread_mutex_destroy
|
||||
#pragma weak pthread_mutex_lock
|
||||
#pragma weak pthread_mutex_unlock
|
||||
|
||||
/* The lock we take while checking for lazy lock initialization. */
|
||||
static pthread_mutex_t check_init_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
/* Initialize the mutex *PRIV. If JUST_CHECK is true, only do this if
|
||||
it is not already initialized. */
|
||||
static int
|
||||
mutex_pthread_init (void **priv, int just_check)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
if (just_check)
|
||||
pthread_mutex_lock (&check_init_lock);
|
||||
if (!*priv || !just_check)
|
||||
{
|
||||
pthread_mutex_t *lock = malloc (sizeof (pthread_mutex_t));
|
||||
if (!lock)
|
||||
err = ENOMEM;
|
||||
if (!err)
|
||||
{
|
||||
err = pthread_mutex_init (lock, NULL);
|
||||
if (err)
|
||||
free (lock);
|
||||
else
|
||||
*priv = lock;
|
||||
}
|
||||
}
|
||||
if (just_check)
|
||||
pthread_mutex_unlock (&check_init_lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
mutex_pthread_destroy (void *priv)
|
||||
{
|
||||
int err = pthread_mutex_destroy ((pthread_mutex_t *) priv);
|
||||
free (priv);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static struct ath_ops ath_pthread_ops =
|
||||
{
|
||||
mutex_pthread_init,
|
||||
mutex_pthread_destroy,
|
||||
(int (*) (void *)) pthread_mutex_lock,
|
||||
(int (*) (void *)) pthread_mutex_unlock,
|
||||
NULL, /* read */
|
||||
NULL, /* write */
|
||||
NULL, /* select */
|
||||
NULL, /* waitpid */
|
||||
NULL, /* accept */
|
||||
NULL, /* connect */
|
||||
NULL, /* sendmsg */
|
||||
NULL /* recvmsg */
|
||||
};
|
||||
|
||||
|
||||
struct ath_ops *
|
||||
ath_pthread_available (void)
|
||||
{
|
||||
/* Need to include pthread_create in our check, as the GNU C library
|
||||
has the pthread_mutex_* functions in their public interface. */
|
||||
if (pthread_create
|
||||
&& pthread_mutex_init && pthread_mutex_destroy
|
||||
&& pthread_mutex_lock && pthread_mutex_unlock)
|
||||
return &ath_pthread_ops;
|
||||
else
|
||||
return 0;
|
||||
}
|
30
gpgme/ath.h
30
gpgme/ath.h
@ -86,34 +86,4 @@ int ath_connect (int s, const struct sockaddr *addr, socklen_t length);
|
||||
int ath_sendmsg (int s, const struct msghdr *msg, int flags);
|
||||
int ath_recvmsg (int s, struct msghdr *msg, int flags);
|
||||
|
||||
#define _ATH_COMPAT
|
||||
#ifdef _ATH_COMPAT
|
||||
struct ath_ops
|
||||
{
|
||||
int (*mutex_init) (void **priv, int just_check);
|
||||
int (*mutex_destroy) (void *priv);
|
||||
int (*mutex_lock) (void *priv);
|
||||
int (*mutex_unlock) (void *priv);
|
||||
ssize_t (*read) (int fd, void *buf, size_t nbytes);
|
||||
ssize_t (*write) (int fd, const void *buf, size_t nbytes);
|
||||
ssize_t (*select) (int nfd, fd_set *rset, fd_set *wset, fd_set *eset,
|
||||
struct timeval *timeout);
|
||||
ssize_t (*waitpid) (pid_t pid, int *status, int options);
|
||||
int (*accept) (int s, struct sockaddr *addr, socklen_t *length_ptr);
|
||||
int (*connect) (int s, const struct sockaddr *addr, socklen_t length);
|
||||
int (*sendmsg) (int s, const struct msghdr *msg, int flags);
|
||||
int (*recvmsg) (int s, struct msghdr *msg, int flags);
|
||||
};
|
||||
|
||||
/* Initialize the any-thread package. */
|
||||
#define ath_init _ATH_PREFIX(ath_init)
|
||||
void ath_init (void);
|
||||
|
||||
/* Used by ath_pkg_init. */
|
||||
#define ath_pthread_available _ATH_PREFIX(ath_pthread_available)
|
||||
struct ath_ops *ath_pthread_available (void);
|
||||
#define ath_pth_available _ATH_PREFIX(ath_pth_available)
|
||||
struct ath_ops *ath_pth_available (void);
|
||||
#endif
|
||||
|
||||
#endif /* ATH_H */
|
||||
|
@ -40,8 +40,6 @@
|
||||
void
|
||||
_gpgme_sema_subsystem_init ()
|
||||
{
|
||||
/* FIXME: we should check that there is only one thread running */
|
||||
_gpgme_ath_init ();
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user