diff options
author | Werner Koch <wk@gnupg.org> | 2015-06-30 16:03:57 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2015-06-30 16:03:57 +0200 |
commit | 87def94c86d5272c23daf2b5ea446c5553aa1d90 (patch) | |
tree | 9bb02b34259e07857655789304e4c87098e02446 | |
parent | cd8face27cc96cb0092c920e6e5bdee81a61c420 (diff) | |
download | libassuan-87def94c86d5272c23daf2b5ea446c5553aa1d90.tar.gz |
Add assuan_sock_set_flag and assuan_sock_get_flag.
* src/assuan-socket.c (_assuan_sock_set_flag): New.
(assuan_sock_set_flag): New.
(_assuan_sock_get_flag, assuan_sock_get_flag): New.
* src/assuan.h.in (assuan_sock_set_flag): New.
(assuan_sock_get_flag): New.
* src/libassuan.def: Add them.
* src/libassuan.vers: Add them.
--
These new functions are intended for a Cygwin socket emulation. This
commit merely introduces a generic framework.
Signed-off-by: Werner Koch <wk@gnupg.org>
-rw-r--r-- | NEWS | 7 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | doc/assuan.texi | 24 | ||||
-rw-r--r-- | src/assuan-socket.c | 65 | ||||
-rw-r--r-- | src/assuan.h.in | 2 | ||||
-rw-r--r-- | src/libassuan.def | 2 | ||||
-rw-r--r-- | src/libassuan.vers | 2 |
7 files changed, 95 insertions, 11 deletions
@@ -1,6 +1,11 @@ -Noteworthy changes in version 2.2.2 (unreleased) [C5/A5/R_] +Noteworthy changes in version 2.3.0 (unreleased) [C5/A5/R_] ------------------------------------------------ + * Interface changes relative to the 2.2.1 release: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + assuan_sock_set_flag NEW. + assuan_sock_get_flag NEW. + Noteworthy changes in version 2.2.1 (2015-05-12) [C5/A5/R1] ------------------------------------------------ diff --git a/configure.ac b/configure.ac index 9727638..78c25ea 100644 --- a/configure.ac +++ b/configure.ac @@ -31,8 +31,8 @@ min_automake_version="1.14" # for the LT versions. m4_define([mym4_package],[libassuan]) m4_define([mym4_major], [2]) -m4_define([mym4_minor], [2]) -m4_define([mym4_micro], [2]) +m4_define([mym4_minor], [3]) +m4_define([mym4_micro], [0]) # To start a new development series, i.e a new major or minor number # you need to mark an arbitrary commit before the first beta release diff --git a/doc/assuan.texi b/doc/assuan.texi index 10b309c..1c3c2ca 100644 --- a/doc/assuan.texi +++ b/doc/assuan.texi @@ -2046,6 +2046,30 @@ code it may be used on POSIX systems as well, where this function is a nop. @end deftypefun +To control certain properties of the wrapper two additional functions +are provided: + +@deftypefun int assuan_sock_set_flag ( @ + @w{assuan_fd_t @var{fd}}, @ + @w{const char *@var{name}}, @ + @w{int @var{value}}) + +Set the flags @var{name} for socket @var{fd} to @var{value}. See +below for a list of valid names. Returns 0 on success; on failure +sets ERRNO and returns -1. +@end deftypefun + +@deftypefun int assuan_sock_get_flag ( @ + @w{assuan_fd_t @var{fd}}, @ + @w{const char *@var{name}}, @ + @w{int *@var{r_value}}) + +Store the current value of the flag @var{name} for socket @var{fd} at +@var{r_value}. See below for a list of valid names. Returns 0 on +success; on failure sets ERRNO and returns -1. +@end deftypefun + +No flags are defined. @c --------------------------------------------------------------------- diff --git a/src/assuan-socket.c b/src/assuan-socket.c index ed6a488..7bca0ae 100644 --- a/src/assuan-socket.c +++ b/src/assuan-socket.c @@ -1,5 +1,6 @@ -/* assuan-socket.c +/* assuan-socket.c - Socket wrapper Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. + Copyright (C) 2001-2015 g10 Code GmbH This file is part of Assuan. @@ -78,6 +79,13 @@ + strlen ((ptr)->sun_path)) #endif +/* In the future, we can allow access to sock_ctx, if that context's + hook functions need to be overridden. There can only be one global + assuan_sock_* user (one library or one application) with this + convenience interface, if non-standard hook functions are + needed. */ +static assuan_context_t sock_ctx; + #ifdef HAVE_W32_SYSTEM @@ -375,6 +383,42 @@ _assuan_sock_new (assuan_context_t ctx, int domain, int type, int proto) int +_assuan_sock_set_flag (assuan_context_t ctx, assuan_fd_t sockfd, + const char *name, int value) +{ + if (0) + { + } + else + { + gpg_err_set_errno (EINVAL); + return -1; + } + + return 0; +} + + +int +_assuan_sock_get_flag (assuan_context_t ctx, assuan_fd_t sockfd, + const char *name, int *r_value) +{ + (void)ctx; + + if (0) + { + } + else + { + gpg_err_set_errno (EINVAL); + return -1; + } + + return 0; +} + + +int _assuan_sock_connect (assuan_context_t ctx, assuan_fd_t sockfd, struct sockaddr *addr, int addrlen) { @@ -695,13 +739,6 @@ _assuan_sock_check_nonce (assuan_context_t ctx, assuan_fd_t fd, /* Public API. */ -/* In the future, we can allow access to sock_ctx, if that context's - hook functions need to be overridden. There can only be one global - assuan_sock_* user (one library or one application) with this - convenience interface, if non-standard hook functions are - needed. */ -static assuan_context_t sock_ctx; - gpg_error_t assuan_sock_init () { @@ -752,6 +789,18 @@ assuan_sock_new (int domain, int type, int proto) } int +assuan_sock_set_flag (assuan_fd_t sockfd, const char *name, int value) +{ + return _assuan_sock_set_flag (sock_ctx, sockfd, name, value); +} + +int +assuan_sock_get_flag (assuan_fd_t sockfd, const char *name, int *r_value) +{ + return _assuan_sock_get_flag (sock_ctx, sockfd, name, r_value); +} + +int assuan_sock_connect (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen) { return _assuan_sock_connect (sock_ctx, sockfd, addr, addrlen); diff --git a/src/assuan.h.in b/src/assuan.h.in index f53c26e..14255ea 100644 --- a/src/assuan.h.in +++ b/src/assuan.h.in @@ -467,6 +467,8 @@ gpg_error_t assuan_sock_init (void); void assuan_sock_deinit (void); int assuan_sock_close (assuan_fd_t fd); assuan_fd_t assuan_sock_new (int domain, int type, int proto); +int assuan_sock_set_flag (assuan_fd_t sockfd, const char *name, int value); +int assuan_sock_get_flag (assuan_fd_t sockfd, const char *name, int *r_value); int assuan_sock_connect (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen); int assuan_sock_bind (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen); diff --git a/src/libassuan.def b/src/libassuan.def index d9997e3..9f31c31 100644 --- a/src/libassuan.def +++ b/src/libassuan.def @@ -112,6 +112,8 @@ EXPORTS __assuan_waitpid @91 assuan_check_version @92 assuan_sock_set_sockaddr_un @93 + assuan_sock_set_flag @94 + assuan_sock_get_flag @95 ; END diff --git a/src/libassuan.vers b/src/libassuan.vers index e36c322..2b2389d 100644 --- a/src/libassuan.vers +++ b/src/libassuan.vers @@ -102,6 +102,8 @@ LIBASSUAN_1.0 { assuan_socket_connect_fd; assuan_check_version; assuan_sock_set_sockaddr_un; + assuan_sock_set_flag; + assuan_sock_get_flag; __assuan_close; __assuan_pipe; |