[libvirt] [PATCH 2/2] Introduce safewrite_str
Daniel P. Berrange
berrange at redhat.com
Tue Feb 23 13:22:23 UTC 2016
On Tue, Feb 23, 2016 at 01:19:38PM +0000, Daniel P. Berrange wrote:
> On Thu, Feb 18, 2016 at 07:40:12AM -0500, John Ferlan wrote:
> >
> >
> > On 02/12/2016 08:59 AM, Ján Tomko wrote:
> > > Just like safewrite, but calls strlen first to figure out
> > > the length of the string.
> > > ---
> > > src/conf/virchrdev.c | 2 +-
> > > src/libvirt_private.syms | 1 +
> > > src/lxc/lxc_process.c | 4 ++--
> > > src/network/leaseshelper.c | 2 +-
> > > src/openvz/openvz_conf.c | 15 ++++++---------
> > > src/qemu/qemu_domain.c | 2 +-
> > > src/util/vircommand.c | 4 ++--
> > > src/util/virfile.c | 9 ++++++++-
> > > src/util/virfile.h | 1 +
> > > src/util/virlog.c | 6 +++---
> > > src/util/virpidfile.c | 4 ++--
> > > src/util/virxml.c | 17 ++++++-----------
> > > tools/vsh.c | 4 +---
> > > 13 files changed, 35 insertions(+), 36 deletions(-)
> > >
> >
> > Conflicted about this one - the difference between the two appears to be
> > 'safewrite' will write a some length of a string (e.g. a counted length)
> > while safewrite_str writes the entire string. To make things more
> > interesting some safewrite calls use sizeof instead of strlen, but in
> > reality are just writing everything in the buffer.
> >
> > So, perhaps 'safewrite_all' or 'safewrite_full' better describes the new
> > functionality?
>
> I don't think we need any new function actually.
>
> Just add this to existing safewrite() method:
>
> if (len == -1)
> len = strlen(data)
>
> and then update the callers which pass a NULL terminated string
> to just pass -1. This matches our behaviour with virBuffer APIs
> which acccept a length of -1.
In fact for the case where the caller passes a literal string we could
add
#define safewritelit(fd_, literal_string_) \
safewrite(fd_, "" literal_string_ "", sizeof(literal_string_) - 1)
which moves the performance hit of strlen() to be compile time instead
of runtime.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list