diff options
author | Marcus Brinkmann <[email protected]> | 2003-08-20 20:20:46 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2003-08-20 20:20:46 +0000 |
commit | 0217495902bbb33d3c429599885192c3aec295e6 (patch) | |
tree | 4dc536749c85c1fa9c72a1464f2730d5a2dfc502 /gpgme/ath.c | |
parent | 2003-08-18 Marcus Brinkmann <[email protected]> (diff) | |
download | gpgme-0217495902bbb33d3c429599885192c3aec295e6.tar.gz gpgme-0217495902bbb33d3c429599885192c3aec295e6.zip |
2003-08-18 Marcus Brinkmann <[email protected]>
*configure.ac (AM_PATH_GPG_ERROR): Require 0.3.
assuan/
See README.1st.
gpgme/
2003-08-19 Marcus Brinkmann <[email protected]>
The ath files (ath.h, ath.c, ath-pth.c, ath-pthread.c,
ath-compat.c, ath-pth-compat.c and ath-pthread-compat.c) have been
updated to have better thread support, and the Makefile.am was
changed to reflect that.
* util.h [!HAVE_FOPENCOOKIE]: Remove fopencookie declaration.
* engine-gpgsm.c (gpgsm_assuan_simple_command): Set ERR to return
value of status_fnc.
* rungpg.c (start): Return SAVED_ERRNO, not errno.
Diffstat (limited to '')
-rw-r--r-- | gpgme/ath.c | 155 |
1 files changed, 76 insertions, 79 deletions
diff --git a/gpgme/ath.c b/gpgme/ath.c index 1d8d94be..cdef2b82 100644 --- a/gpgme/ath.c +++ b/gpgme/ath.c @@ -1,27 +1,27 @@ -/* ath.c - self-adapting thread-safeness library - * Copyright (C) 2002 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 General Public License as published by - * the Free Software Foundation; either version 2 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 General Public License for more details. - * - * You should have received a copy of the GNU 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 - */ +/* ath.c - Thread-safeness library. + Copyright (C) 2002, 2003 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 General Public License as published by + the Free Software Foundation; either version 2 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GPGME; 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 <assert.h> #include <unistd.h> #ifdef HAVE_SYS_SELECT_H # include <sys/select.h> @@ -33,94 +33,69 @@ #include "ath.h" -static struct ath_ops *ath_ops; -void -ath_init (void) -{ -#ifdef HAVE_PTHREAD - if (!ath_ops) - ath_ops = ath_pthread_available (); -#endif -#ifdef HAVE_PTH - if (!ath_ops) - ath_ops = ath_pth_available (); -#endif -#ifdef HAVE_ATH_DUMMY - if (!ath_ops) - ath_ops = ath_dummy_available (); -#endif -} +#define MUTEX_UNLOCKED ((ath_mutex_t) 0) +#define MUTEX_LOCKED ((ath_mutex_t) 1) +#define MUTEX_DESTROYED ((ath_mutex_t) 2) int ath_mutex_init (ath_mutex_t *lock) { - if (!ath_ops) - return 0; - - return ath_ops->mutex_init (lock, 0); +#ifndef NDEBUG + *lock = MUTEX_UNLOCKED; +#endif + return 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; +#ifndef NDEBUG + assert (*lock == MUTEX_UNLOCKED); + + *lock = MUTEX_DESTROYED; +#endif + return 0; } 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; +#ifndef NDEBUG + assert (*lock == MUTEX_UNLOCKED); + + *lock = MUTEX_LOCKED; +#endif + return 0; } 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; +#ifndef NDEBUG + assert (*lock == MUTEX_LOCKED); + + *lock = MUTEX_UNLOCKED; +#endif + return 0; } 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); + 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); + return write (fd, buf, nbytes); } @@ -128,18 +103,40 @@ 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 - return select (nfd, rset, wset, eset, timeout); + return select (nfd, rset, wset, eset, timeout); } 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 - return waitpid (pid, status, options); + return waitpid (pid, status, options); +} + + +int +ath_accept (int s, struct sockaddr *addr, socklen_t *length_ptr) +{ + return accept (s, addr, length_ptr); +} + + +int +ath_connect (int s, struct sockaddr *addr, socklen_t length) +{ + return connect (s, addr, length); +} + + +int +ath_sendmsg (int s, const struct msghdr *msg, int flags) +{ + return sendmsg (s, msg, flags); +} + + +int +ath_recvmsg (int s, struct msghdr *msg, int flags) +{ + return recvmsg (s, msg, flags); } |