On 6/2/20 7:27 AM, Richard W.M. Jones wrote:
Pure refactoring. Just decouples the complicated reexec code from
the
rest.
---
plugins/vddk/Makefile.am | 2 +
plugins/vddk/vddk.h | 42 +++++++++
plugins/vddk/reexec.c | 196 +++++++++++++++++++++++++++++++++++++++
plugins/vddk/vddk.c | 151 ++----------------------------
4 files changed, 246 insertions(+), 145 deletions(-)
+
+/* If load_library caused a re-execution with an expanded
+ * LD_LIBRARY_PATH, restore it back to its original contents, passed
+ * as the value of "reexeced_". dlopen uses the value of
Comment may need a tweak, since the .config parsing of reexeced_ is now
in a different file, and this file is going solely off the global reexeced.
+ * LD_LIBRARY_PATH cached at program startup; our change is for the
+ * sake of child processes (such as --run) to see the same
+ * environment as the original nbdkit saw before re-exec.
+ */
+int
+restore_ld_library_path (void)
+{
+ if (reexeced) {
+ char *env = getenv ("LD_LIBRARY_PATH");
+
+ nbdkit_debug ("cleaning up after re-exec");
+ if (!env || strstr (env, reexeced) == NULL ||
+ (libdir && strncmp (env, libdir, strlen (libdir)) != 0)) {
+ nbdkit_error ("'reexeced_' set with garbled environment");
Then again, we are outputting an error message based on what .config saw.
At any rate, the split makes sense.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org