diff options
| author | Paul Eggert | 2015-11-23 18:48:42 -0800 |
|---|---|---|
| committer | Paul Eggert | 2015-11-23 19:01:51 -0800 |
| commit | da8c7ca2647d2e111a415f59c6b59053a19bdb61 (patch) | |
| tree | 04dd13e37031bbee8b6ff6c0365db28b846c5a5c /src/dynlib.h | |
| parent | ceaca7bec6adf5735d51c1ca7efea5a2e05f470e (diff) | |
| download | emacs-da8c7ca2647d2e111a415f59c6b59053a19bdb61.tar.gz emacs-da8c7ca2647d2e111a415f59c6b59053a19bdb61.zip | |
Port better to FreeBSD’s dlfunc vs dlsym
This avoids warnings when converting between void * and
function pointers, which strict C11 does not allow.
* configure.ac (dlfunc): Check for existence.
* src/dynlib.c (dlfunc) [!HAVE_DLFUNC]: New macro.
(dynlib_func): New function.
* src/dynlib.h (dynlib_function_ptr, dynlib_func): New decls.
* src/emacs-module.c (Fmodule_load): Use dynlib_func, not
dynlib_sym, for function pointers.
Diffstat (limited to 'src/dynlib.h')
| -rw-r--r-- | src/dynlib.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/dynlib.h b/src/dynlib.h index 1282c4fd719..1c19b5db8ac 100644 --- a/src/dynlib.h +++ b/src/dynlib.h | |||
| @@ -25,6 +25,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 25 | typedef void *dynlib_handle_ptr; | 25 | typedef void *dynlib_handle_ptr; |
| 26 | dynlib_handle_ptr dynlib_open (const char *path); | 26 | dynlib_handle_ptr dynlib_open (const char *path); |
| 27 | void *dynlib_sym (dynlib_handle_ptr h, const char *sym); | 27 | void *dynlib_sym (dynlib_handle_ptr h, const char *sym); |
| 28 | typedef struct dynlib_function_ptr_nonce *(*dynlib_function_ptr) (void); | ||
| 29 | dynlib_function_ptr dynlib_func (dynlib_handle_ptr h, const char *sym); | ||
| 28 | bool dynlib_addr (void *ptr, const char **path, const char **sym); | 30 | bool dynlib_addr (void *ptr, const char **path, const char **sym); |
| 29 | const char *dynlib_error (void); | 31 | const char *dynlib_error (void); |
| 30 | int dynlib_close (dynlib_handle_ptr h); | 32 | int dynlib_close (dynlib_handle_ptr h); |