diff options
author | Werner Koch <wk@gnupg.org> | 2016-11-12 11:06:22 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2016-11-12 11:06:22 +0100 |
commit | b7972767513c8748096ebed78d1e1621bd2bd459 (patch) | |
tree | a9b75c67684e2fa835d79d18776139df37c01409 | |
parent | 25d463c67821901c8fd6736c815f11e85bbae66f (diff) | |
download | libgpg-error-b7972767513c8748096ebed78d1e1621bd2bd459.tar.gz |
Add new interface gpgrt_get_syscall_clamp.
* src/visibility.c (gpgrt_get_syscall_clamp): New.
* src/gpg-error.vers, src/gpg-error.def.in: Add function.
* src/gpg-error.h.in: Ditto.
* src/estream.c (_gpgrt_get_syscall_clamp): New.
--
This function can be used by other libraries to set their own system
clamp functions.
Signed-off-by: Werner Koch <wk@gnupg.org>
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/estream.c | 11 | ||||
-rw-r--r-- | src/gpg-error.def.in | 2 | ||||
-rw-r--r-- | src/gpg-error.h.in | 3 | ||||
-rw-r--r-- | src/gpg-error.vers | 1 | ||||
-rw-r--r-- | src/gpgrt-int.h | 1 | ||||
-rw-r--r-- | src/visibility.c | 6 | ||||
-rw-r--r-- | src/visibility.h | 2 |
8 files changed, 27 insertions, 0 deletions
@@ -12,6 +12,7 @@ Noteworthy changes in version 1.25 (unreleased) [C19/A19/R_) GPG_ERR_DUP_NAME NEW. GPG_ERR_TOO_OLD NEW. GPG_ERR_TOO_YOUNG NEW. + gpgrt_get_syscall_clamp NEW. Noteworthy changes in version 1.24 (2016-07-14) [C19/A19/R1) diff --git a/src/estream.c b/src/estream.c index d0f0ba9..752d22e 100644 --- a/src/estream.c +++ b/src/estream.c @@ -605,6 +605,17 @@ _gpgrt_set_syscall_clamp (void (*pre)(void), void (*post)(void)) _gpgrt_lock_set_lock_clamp (pre, post); } +/* + * Return the current sycall clamp functions. This can be used by + * other libraries which have blocking functions. + */ +void +_gpgrt_get_syscall_clamp (void (**r_pre)(void), void (**r_post)(void)) +{ + *r_pre = pre_syscall_func; + *r_post = post_syscall_func; +} + /* diff --git a/src/gpg-error.def.in b/src/gpg-error.def.in index 1fa8866..19e87fa 100644 --- a/src/gpg-error.def.in +++ b/src/gpg-error.def.in @@ -150,4 +150,6 @@ EXPORTS gpgrt_w32_iconv @111 #endif + gpgrt_get_syscall_clamp @112 + ;; end of file with public symbols for Windows. diff --git a/src/gpg-error.h.in b/src/gpg-error.h.in index a79f6ba..86f3241 100644 --- a/src/gpg-error.h.in +++ b/src/gpg-error.h.in @@ -303,6 +303,9 @@ void gpg_err_deinit (int mode); /* Register blocking system I/O clamping functions. */ void gpgrt_set_syscall_clamp (void (*pre)(void), void (*post)(void)); +/* Get current I/O clamping functions. */ +void gpgrt_get_syscall_clamp (void (**r_pre)(void), void (**r_post)(void)); + /* Register a custom malloc/realloc/free function. */ void gpgrt_set_alloc_func (void *(*f)(void *a, size_t n)); diff --git a/src/gpg-error.vers b/src/gpg-error.vers index cdff0e3..802ff3d 100644 --- a/src/gpg-error.vers +++ b/src/gpg-error.vers @@ -39,6 +39,7 @@ GPG_ERROR_1.0 { gpgrt_lock_trylock; gpgrt_set_syscall_clamp; + gpgrt_get_syscall_clamp; gpgrt_fopen; gpgrt_mopen; diff --git a/src/gpgrt-int.h b/src/gpgrt-int.h index d69fe2c..b2b553b 100644 --- a/src/gpgrt-int.h +++ b/src/gpgrt-int.h @@ -53,6 +53,7 @@ gpg_err_code_t _gpgrt_yield (void); /* Local prototypes for estream. */ int _gpgrt_es_init (void); void _gpgrt_set_syscall_clamp (void (*pre)(void), void (*post)(void)); +void _gpgrt_get_syscall_clamp (void (**r_pre)(void), void (**r_post)(void)); gpgrt_stream_t _gpgrt_fopen (const char *_GPGRT__RESTRICT path, const char *_GPGRT__RESTRICT mode); diff --git a/src/visibility.c b/src/visibility.c index e3ac8a7..89b5623 100644 --- a/src/visibility.c +++ b/src/visibility.c @@ -97,6 +97,12 @@ gpgrt_set_syscall_clamp (void (*pre)(void), void (*post)(void)) } void +gpgrt_get_syscall_clamp (void (**r_pre)(void), void (**r_post)(void)) +{ + _gpgrt_get_syscall_clamp (r_pre, r_post); +} + +void gpgrt_set_alloc_func (void *(*f)(void *a, size_t n)) { _gpgrt_set_alloc_func (f); diff --git a/src/visibility.h b/src/visibility.h index 1de6c62..479186f 100644 --- a/src/visibility.h +++ b/src/visibility.h @@ -142,6 +142,7 @@ MARK_VISIBLE (gpgrt_vbsprintf) MARK_VISIBLE (gpgrt_snprintf) MARK_VISIBLE (gpgrt_vsnprintf) MARK_VISIBLE (gpgrt_set_syscall_clamp) +MARK_VISIBLE (gpgrt_get_syscall_clamp) MARK_VISIBLE (gpgrt_set_alloc_func) #undef MARK_VISIBLE @@ -251,6 +252,7 @@ MARK_VISIBLE (gpgrt_set_alloc_func) #define gpgrt_vsnprintf _gpgrt_USE_UNDERSCORED_FUNCTION #define gpgrt_set_syscall_clamp _gpgrt_USE_UNDERSCORED_FUNCTION +#define gpgrt_get_syscall_clamp _gpgrt_USE_UNDERSCORED_FUNCTION #define gpgrt_set_alloc_func _gpgrt_USE_UNDERSCORED_FUNCTION |