[Libguestfs] [PATCH 3/4] daemon: add sysroot_realpath
Richard W.M. Jones
rjones at redhat.com
Tue May 20 20:41:32 UTC 2014
On Tue, May 20, 2014 at 07:54:47PM +0200, Pino Toscano wrote:
> Similar to sysroot_path, but first resolves (using realpath) the given
> path within sysroot.
> ---
> daemon/daemon.h | 1 +
> daemon/guestfsd.c | 21 +++++++++++++++++++++
> 2 files changed, 22 insertions(+)
>
> diff --git a/daemon/daemon.h b/daemon/daemon.h
> index 6535658..94537b7 100644
> --- a/daemon/daemon.h
> +++ b/daemon/daemon.h
> @@ -51,6 +51,7 @@ extern const char *sysroot;
> extern size_t sysroot_len;
>
> extern char *sysroot_path (const char *path);
> +extern char *sysroot_realpath (const char *path);
>
> extern int is_root_device (const char *device);
>
> diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
> index 6519ea6..622bda1 100644
> --- a/daemon/guestfsd.c
> +++ b/daemon/guestfsd.c
> @@ -455,6 +455,27 @@ sysroot_path (const char *path)
> return r;
> }
>
> +/* Resolve path within sysroot, calling sysroot_path on the resolved path.
> + *
> + * Caller must check for NULL and call reply_with_perror ("malloc/realpath")
> + * if it is. Caller must also free the string.
> + *
> + * See also the custom %R printf formatter which does shell quoting too.
> + */
> +char *
> +sysroot_realpath (const char *path)
> +{
> + CLEANUP_FREE char *rp = NULL;
> +
> + CHROOT_IN;
> + rp = realpath (path, NULL);
> + CHROOT_OUT;
> + if (rp == NULL)
> + return NULL;
> +
> + return sysroot_path (rp);
> +}
> +
> int
> xwrite (int sock, const void *v_buf, size_t len)
> {
> --
> 1.9.0
ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
More information about the Libguestfs
mailing list