mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 11:35:19 +00:00
Move virBuffer functions into src/buf.c,h
This commit is contained in:
parent
675ba3170d
commit
2f02d292da
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
Tue Jun 26 18:30:00 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
|
* qemud/buf.c, qemud/buf.h: Remove obsolete files
|
||||||
|
* src/xml.c: remove virBuffer functions
|
||||||
|
* src/buf.c, src/buf.c, src/Makefile.am: Re-add virBuffer functions
|
||||||
|
* proxy/Makefile.am, qemud/Makefile.am, qemud/conf.c,
|
||||||
|
qemud/driver.c, src/conf.c, src/test.c, src/xen_internal.c,
|
||||||
|
src/xend_internal.c, src/xm_internal.c, src/xmlrpc.h,
|
||||||
|
tests/xmlrpc.test: Adapt to deal with new location of headers
|
||||||
|
for virBuffer functions.
|
||||||
|
|
||||||
Tue Jun 26 18:21:00 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
Tue Jun 26 18:21:00 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
* qemud/conf.c, qemud/driver.c, qemud/buf.c, qemud/buf.h:
|
* qemud/conf.c, qemud/driver.c, qemud/buf.c, qemud/buf.h:
|
||||||
|
@ -10,7 +10,7 @@ libexec_PROGRAMS = libvirt_proxy
|
|||||||
libvirt_proxy_SOURCES = libvirt_proxy.c @top_srcdir@/src/xend_internal.c \
|
libvirt_proxy_SOURCES = libvirt_proxy.c @top_srcdir@/src/xend_internal.c \
|
||||||
@top_srcdir@/src/xen_internal.c @top_srcdir@/src/virterror.c \
|
@top_srcdir@/src/xen_internal.c @top_srcdir@/src/virterror.c \
|
||||||
@top_srcdir@/src/sexpr.c @top_srcdir@/src/xml.c \
|
@top_srcdir@/src/sexpr.c @top_srcdir@/src/xml.c \
|
||||||
@top_srcdir@/src/xs_internal.c
|
@top_srcdir@/src/xs_internal.c @top_srcdir@/src/buf.c
|
||||||
libvirt_proxy_LDFLAGS = $(WARN_CFLAGS)
|
libvirt_proxy_LDFLAGS = $(WARN_CFLAGS)
|
||||||
libvirt_proxy_DEPENDENCIES =
|
libvirt_proxy_DEPENDENCIES =
|
||||||
libvirt_proxy_LDADD =
|
libvirt_proxy_LDADD =
|
||||||
|
@ -13,7 +13,7 @@ libvirt_qemud_SOURCES = \
|
|||||||
bridge.c bridge.h \
|
bridge.c bridge.h \
|
||||||
iptables.c iptables.h \
|
iptables.c iptables.h \
|
||||||
uuid.c uuid.h \
|
uuid.c uuid.h \
|
||||||
buf.c buf.h \
|
../src/buf.c \
|
||||||
protocol.h protocol.c \
|
protocol.h protocol.c \
|
||||||
remote_protocol.h remote_protocol.c \
|
remote_protocol.h remote_protocol.c \
|
||||||
remote.c \
|
remote.c \
|
||||||
|
14
qemud/conf.c
14
qemud/conf.c
@ -45,19 +45,7 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "uuid.h"
|
#include "uuid.h"
|
||||||
#include "buf.h"
|
#include "../src/buf.h"
|
||||||
|
|
||||||
extern void __virRaiseError(virConnectPtr conn,
|
|
||||||
virDomainPtr dom,
|
|
||||||
virNetworkPtr net,
|
|
||||||
int domain,
|
|
||||||
int code,
|
|
||||||
virErrorLevel level,
|
|
||||||
const char *str1,
|
|
||||||
const char *str2,
|
|
||||||
const char *str3,
|
|
||||||
int int1, int int2, const char *msg, ...)
|
|
||||||
ATTRIBUTE_FORMAT(printf, 12, 13);
|
|
||||||
|
|
||||||
void qemudReportError(virConnectPtr conn,
|
void qemudReportError(virConnectPtr conn,
|
||||||
virDomainPtr dom,
|
virDomainPtr dom,
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
#include <libvirt/virterror.h>
|
#include <libvirt/virterror.h>
|
||||||
|
|
||||||
#include "event.h"
|
#include "event.h"
|
||||||
#include "buf.h"
|
#include "../src/buf.h"
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
|
|
||||||
static int qemudSetCloseExec(int fd) {
|
static int qemudSetCloseExec(int fd) {
|
||||||
|
@ -29,6 +29,7 @@ CLIENT_SOURCES = \
|
|||||||
libvirt.c internal.h \
|
libvirt.c internal.h \
|
||||||
hash.c hash.h \
|
hash.c hash.h \
|
||||||
test.c test.h \
|
test.c test.h \
|
||||||
|
buf.c buf.h \
|
||||||
xml.c xml.h \
|
xml.c xml.h \
|
||||||
xen_unified.c xen_unified.h \
|
xen_unified.c xen_unified.h \
|
||||||
xen_internal.c xen_internal.h \
|
xen_internal.c xen_internal.h \
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "xml.h"
|
#include "buf.h"
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "test.h"
|
#include "test.h"
|
||||||
#include "xml.h"
|
#include "xml.h"
|
||||||
|
#include "buf.h"
|
||||||
|
|
||||||
int testOpen(virConnectPtr conn,
|
int testOpen(virConnectPtr conn,
|
||||||
const char *name,
|
const char *name,
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
/* required for shutdown flags */
|
/* required for shutdown flags */
|
||||||
#include <xen/sched.h>
|
#include <xen/sched.h>
|
||||||
|
|
||||||
#include "xml.h"
|
#include "buf.h"
|
||||||
|
|
||||||
/* #define DEBUG */
|
/* #define DEBUG */
|
||||||
/*
|
/*
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "sexpr.h"
|
#include "sexpr.h"
|
||||||
#include "xml.h"
|
#include "xml.h"
|
||||||
|
#include "buf.h"
|
||||||
#include "xen_unified.h"
|
#include "xen_unified.h"
|
||||||
#include "xend_internal.h"
|
#include "xend_internal.h"
|
||||||
#include "xen_internal.h" /* for DOM0_INTERFACE_VERSION */
|
#include "xen_internal.h" /* for DOM0_INTERFACE_VERSION */
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "xml.h"
|
#include "xml.h"
|
||||||
|
#include "buf.h"
|
||||||
|
|
||||||
typedef struct xenXMConfCache *xenXMConfCachePtr;
|
typedef struct xenXMConfCache *xenXMConfCachePtr;
|
||||||
typedef struct xenXMConfCache {
|
typedef struct xenXMConfCache {
|
||||||
|
172
src/xml.c
172
src/xml.c
@ -22,6 +22,7 @@
|
|||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "sexpr.h"
|
#include "sexpr.h"
|
||||||
#include "xml.h"
|
#include "xml.h"
|
||||||
|
#include "buf.h"
|
||||||
#include "xs_internal.h" /* for xenStoreDomainGetNetworkID */
|
#include "xs_internal.h" /* for xenStoreDomainGetNetworkID */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -268,177 +269,6 @@ virXPathNodeSet(const char *xpath, xmlXPathContextPtr ctxt, xmlNodePtr **list) {
|
|||||||
}
|
}
|
||||||
#endif /* !PROXY */
|
#endif /* !PROXY */
|
||||||
|
|
||||||
/**
|
|
||||||
* virBufferGrow:
|
|
||||||
* @buf: the buffer
|
|
||||||
* @len: the minimum free size to allocate on top of existing used space
|
|
||||||
*
|
|
||||||
* Grow the available space of an XML buffer to at least @len bytes.
|
|
||||||
*
|
|
||||||
* Returns the new available space or -1 in case of error
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
virBufferGrow(virBufferPtr buf, unsigned int len)
|
|
||||||
{
|
|
||||||
int size;
|
|
||||||
char *newbuf;
|
|
||||||
|
|
||||||
if (buf == NULL)
|
|
||||||
return (-1);
|
|
||||||
if (len + buf->use < buf->size)
|
|
||||||
return (0);
|
|
||||||
|
|
||||||
size = buf->use + len + 1000;
|
|
||||||
|
|
||||||
newbuf = (char *) realloc(buf->content, size);
|
|
||||||
if (newbuf == NULL) {
|
|
||||||
virXMLError(NULL, VIR_ERR_NO_MEMORY, _("growing buffer"), size);
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
buf->content = newbuf;
|
|
||||||
buf->size = size;
|
|
||||||
return (buf->size - buf->use);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virBufferAdd:
|
|
||||||
* @buf: the buffer to dump
|
|
||||||
* @str: the string
|
|
||||||
* @len: the number of bytes to add
|
|
||||||
*
|
|
||||||
* Add a string range to an XML buffer. if len == -1, the length of
|
|
||||||
* str is recomputed to the full string.
|
|
||||||
*
|
|
||||||
* Returns 0 successful, -1 in case of internal or API error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virBufferAdd(virBufferPtr buf, const char *str, int len)
|
|
||||||
{
|
|
||||||
unsigned int needSize;
|
|
||||||
|
|
||||||
if ((str == NULL) || (buf == NULL)) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (len == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (len < 0)
|
|
||||||
len = strlen(str);
|
|
||||||
|
|
||||||
needSize = buf->use + len + 2;
|
|
||||||
if (needSize > buf->size) {
|
|
||||||
if (!virBufferGrow(buf, needSize - buf->use)) {
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* XXX: memmove() is 2x slower than memcpy(), do we really need it? */
|
|
||||||
memmove(&buf->content[buf->use], str, len);
|
|
||||||
buf->use += len;
|
|
||||||
buf->content[buf->use] = 0;
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
virBufferPtr
|
|
||||||
virBufferNew(unsigned int size)
|
|
||||||
{
|
|
||||||
virBufferPtr buf;
|
|
||||||
|
|
||||||
if (!(buf = malloc(sizeof(*buf)))) {
|
|
||||||
virXMLError(NULL, VIR_ERR_NO_MEMORY, _("allocate new buffer"), sizeof(*buf));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (size && (buf->content = malloc(size))==NULL) {
|
|
||||||
virXMLError(NULL, VIR_ERR_NO_MEMORY, _("allocate buffer content"), size);
|
|
||||||
free(buf);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
buf->size = size;
|
|
||||||
buf->use = 0;
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
virBufferFree(virBufferPtr buf)
|
|
||||||
{
|
|
||||||
if (buf) {
|
|
||||||
if (buf->content)
|
|
||||||
free(buf->content);
|
|
||||||
free(buf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virBufferVSprintf:
|
|
||||||
* @buf: the buffer to dump
|
|
||||||
* @format: the format
|
|
||||||
* @argptr: the variable list of arguments
|
|
||||||
*
|
|
||||||
* Do a formatted print to an XML buffer.
|
|
||||||
*
|
|
||||||
* Returns 0 successful, -1 in case of internal or API error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virBufferVSprintf(virBufferPtr buf, const char *format, ...)
|
|
||||||
{
|
|
||||||
int size, count;
|
|
||||||
va_list locarg, argptr;
|
|
||||||
|
|
||||||
if ((format == NULL) || (buf == NULL)) {
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
size = buf->size - buf->use - 1;
|
|
||||||
va_start(argptr, format);
|
|
||||||
va_copy(locarg, argptr);
|
|
||||||
while (((count = vsnprintf(&buf->content[buf->use], size, format,
|
|
||||||
locarg)) < 0) || (count >= size - 1)) {
|
|
||||||
buf->content[buf->use] = 0;
|
|
||||||
va_end(locarg);
|
|
||||||
if (virBufferGrow(buf, 1000) < 0) {
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
size = buf->size - buf->use - 1;
|
|
||||||
va_copy(locarg, argptr);
|
|
||||||
}
|
|
||||||
va_end(locarg);
|
|
||||||
buf->use += count;
|
|
||||||
buf->content[buf->use] = 0;
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* virBufferStrcat:
|
|
||||||
* @buf: the buffer to dump
|
|
||||||
* @argptr: the variable list of strings, the last argument must be NULL
|
|
||||||
*
|
|
||||||
* Concatenate strings to an XML buffer.
|
|
||||||
*
|
|
||||||
* Returns 0 successful, -1 in case of internal or API error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
virBufferStrcat(virBufferPtr buf, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
char *str;
|
|
||||||
|
|
||||||
va_start(ap, buf);
|
|
||||||
|
|
||||||
while ((str = va_arg(ap, char *)) != NULL) {
|
|
||||||
unsigned int len = strlen(str);
|
|
||||||
unsigned int needSize = buf->use + len + 2;
|
|
||||||
|
|
||||||
if (needSize > buf->size) {
|
|
||||||
if (!virBufferGrow(buf, needSize - buf->use))
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
memcpy(&buf->content[buf->use], str, len);
|
|
||||||
buf->use += len;
|
|
||||||
buf->content[buf->use] = 0;
|
|
||||||
}
|
|
||||||
va_end(ap);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef PROXY
|
#ifndef PROXY
|
||||||
/**
|
/**
|
||||||
|
20
src/xml.h
20
src/xml.h
@ -15,26 +15,6 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* virBuffer:
|
|
||||||
*
|
|
||||||
* A buffer structure.
|
|
||||||
*/
|
|
||||||
typedef struct _virBuffer virBuffer;
|
|
||||||
typedef virBuffer *virBufferPtr;
|
|
||||||
struct _virBuffer {
|
|
||||||
char *content; /* The buffer content UTF8 */
|
|
||||||
unsigned int use; /* The buffer size used */
|
|
||||||
unsigned int size; /* The buffer size */
|
|
||||||
};
|
|
||||||
|
|
||||||
virBufferPtr virBufferNew(unsigned int size);
|
|
||||||
void virBufferFree(virBufferPtr buf);
|
|
||||||
int virBufferAdd(virBufferPtr buf, const char *str, int len);
|
|
||||||
int virBufferVSprintf(virBufferPtr buf, const char *format, ...)
|
|
||||||
ATTRIBUTE_FORMAT(printf, 2, 3);
|
|
||||||
int virBufferStrcat(virBufferPtr buf, ...);
|
|
||||||
|
|
||||||
int virXPathBoolean (const char *xpath,
|
int virXPathBoolean (const char *xpath,
|
||||||
xmlXPathContextPtr ctxt);
|
xmlXPathContextPtr ctxt);
|
||||||
char * virXPathString (const char *xpath,
|
char * virXPathString (const char *xpath,
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include "xml.h"
|
#include "buf.h"
|
||||||
|
|
||||||
typedef enum _xmlRpcValueType xmlRpcValueType;
|
typedef enum _xmlRpcValueType xmlRpcValueType;
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <libxml/xpath.h>
|
#include <libxml/xpath.h>
|
||||||
|
|
||||||
#include "libvirt/libvirt.h"
|
#include "libvirt/libvirt.h"
|
||||||
#include "xml.h"
|
#include "buf.h"
|
||||||
#include "xmlrpc.h"
|
#include "xmlrpc.h"
|
||||||
|
|
||||||
#include "testutils.h"
|
#include "testutils.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user