Re: [Libguestfs] [PATCH nbdkit 2/5] vddk: Move reexec code to a new file.

Eric Blake
2020-06-02T14:16:15Z

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