Re: [libvirt] PATCH: 19/25: Remove use of non-threadsafe POSIX apis

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 13, 2009 at 05:46:37PM +0000, Daniel P. Berrange wrote:
> +        char buf[1024];

sysconf (_SC_GETPW_R_SIZE_MAX)?

Looking at glibc's implementation of getpwuid (which uses getpwuid_r),
I see that glibc dynamically reallocates the buffer as necessary to
the correct size for the return value.  The logic of this is fairly
simple so maybe we should do the same?

>From glibc:

  buffer = malloc (/*some_initial_size*/);

  while (buffer != NULL
         && (getpwuid_r (const char *name, &resbuf, buffer,
                         buffer_size, &result)
             == ERANGE))
    {
      char *new_buf;
      buffer_size *= 2;
      new_buf = (char *) realloc (buffer, buffer_size);
      if (new_buf == NULL)
        {
          free (buffer);
          errno = ENOMEM;
        }
      buffer = new_buf;
    }


Anyhow, +1 but I'd be happier if these functions were centralized in
somewhere like src/utils.c.

Rich.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top

--
Libvir-list mailing list
Libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]