[Libguestfs] [PATCH nbdkit 05/10] freebsd: Provide alternative for glibc get_current_dir_name function.

Eric Blake eblake at redhat.com
Mon Aug 13 21:11:36 UTC 2018


On 08/12/2018 03:51 AM, Richard W.M. Jones wrote:
> ---
>   configure.ac |  4 ++++
>   src/utils.c  | 13 +++++++++++++
>   2 files changed, 17 insertions(+)

> +#ifndef HAVE_GET_CURRENT_DIR_NAME
> +static char *
> +get_current_dir_name (void)
> +{
> +  char *ret = malloc (PATH_MAX);
> +
> +  ret = getcwd (ret, PATH_MAX);
> +  ret = realloc (ret, strlen (ret) + 1);
> +  return ret;

PATH_MAX need not be defined (think GNU Hurd, for example), or may be 
insanely large where you are wasting time overallocating then shrinking 
in the common case. A more robust implementation starts with a smaller 
size, then repeatedly grows the buffer as long as getcwd() fails with 
ERANGE. Or, you could use realpath(".", NULL), to get an equivalent (but 
not necessarily identical) name, with the malloc() taken care of on your 
behalf.

But I don't think we need to worry about that for BSD, and that your 
implementation works fine for now.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org




More information about the Libguestfs mailing list