util: add dlfcn-util.h
This just adds a _cleanup_ helper call encapsulating dlclose(). This also means libsystemd-shared is linked against libdl now. I don't think this is much of an issue, since libdl is part of glibc anyway, and anything from exotic. It's not an optional part of the OS (think: NSS requires dynamic linking), hence this pulls in no deps and is almost certainly loaded into all process' memory anyway. [zj: use DEFINE_TRIVIAL_CLEANUP_FUNC().]
This commit is contained in:
parent
69876f94ab
commit
88d775b734
8
src/basic/dlfcn-util.h
Normal file
8
src/basic/dlfcn-util.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
#pragma once
|
||||
|
||||
#include <dlfcn.h>
|
||||
|
||||
#include "macro.h"
|
||||
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(void*, dlclose);
|
|
@ -39,6 +39,7 @@ basic_sources = files('''
|
|||
device-nodes.h
|
||||
dirent-util.c
|
||||
dirent-util.h
|
||||
dlfcn-util.h
|
||||
efivars.c
|
||||
efivars.h
|
||||
env-file.c
|
||||
|
@ -328,7 +329,8 @@ libbasic = static_library(
|
|||
threads,
|
||||
libcap,
|
||||
libselinux,
|
||||
libm],
|
||||
libm,
|
||||
libdl],
|
||||
c_args : ['-fvisibility=default'],
|
||||
install : false)
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "bus-message.h"
|
||||
#include "bus-polkit.h"
|
||||
#include "def.h"
|
||||
#include "dlfcn-util.h"
|
||||
#include "keymap-util.h"
|
||||
#include "locale-util.h"
|
||||
#include "macro.h"
|
||||
|
@ -530,7 +531,7 @@ static int verify_xkb_rmlvo(const char *model, const char *layout, const char *v
|
|||
};
|
||||
struct xkb_context *ctx = NULL;
|
||||
struct xkb_keymap *km = NULL;
|
||||
void *dl;
|
||||
_cleanup_(dlclosep) void *dl = NULL;
|
||||
int r;
|
||||
|
||||
/* Compile keymap from RMLVO information to check out its validity */
|
||||
|
@ -582,7 +583,6 @@ finish:
|
|||
if (symbol_xkb_context_unref && ctx)
|
||||
symbol_xkb_context_unref(ctx);
|
||||
|
||||
(void) dlclose(dl);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,5 +34,5 @@ tests += [
|
|||
'src/locale/keymap-util.c',
|
||||
'src/locale/keymap-util.h'],
|
||||
[libshared],
|
||||
[libdl]],
|
||||
[]],
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue