#include <stdarg.h>
#include "virbuffer.h"
-#include "virerror.h"
#include "virstring.h"
#include "viralloc.h"
#define VIR_FROM_THIS VIR_FROM_NONE
-/**
- * virBufferFail
- * @buf: the buffer
- * @error: which error occurred (errno value, or -1 for usage)
- *
- * Mark the buffer as failed, free the content and set the error flag.
- */
-static void
-virBufferSetError(virBufferPtr buf, int error)
-{
- virBufferFreeAndReset(buf);
- buf->error = error;
-}
-
/**
* virBufferAdjustIndent:
* @buf: the buffer
void
virBufferAdjustIndent(virBufferPtr buf, int indent)
{
- if (!buf || buf->error)
+ if (!buf)
return;
if (indent > 0) {
void
virBufferSetIndent(virBufferPtr buf, int indent)
{
- if (!buf || buf->error)
+ if (!buf)
return;
buf->indent = indent;
void
virBufferAdd(virBufferPtr buf, const char *str, int len)
{
- if (!str || !buf || buf->error || (len == 0 && buf->indent == 0))
+ if (!str || !buf || (len == 0 && buf->indent == 0))
return;
virBufferInitialize(buf);
if (!buf)
goto cleanup;
- if (buf->error || toadd->error) {
- if (!buf->error)
- virBufferSetError(buf, toadd->error);
- goto cleanup;
- }
-
virBufferInitialize(buf);
g_string_append_len(buf->str, toadd->str->str, toadd->str->len);
const char *
virBufferCurrentContent(virBufferPtr buf)
{
- if (!buf || buf->error)
+ if (!buf)
return NULL;
if (!buf->str ||
* Return positive errno value or -1 on usage error, 0 if normal
*/
int
-virBufferError(const virBuffer *buf)
+virBufferError(const virBuffer *buf G_GNUC_UNUSED)
{
- if (buf == NULL)
- return -1;
-
- return buf->error;
+ return 0;
}
/**
* Return -1 if an error has been reported, 0 otherwise.
*/
int
-virBufferCheckErrorInternal(const virBuffer *buf,
- int domcode,
- const char *filename,
- const char *funcname,
- size_t linenr)
+virBufferCheckErrorInternal(const virBuffer *buf G_GNUC_UNUSED)
{
- if (buf->error == 0)
- return 0;
-
- if (buf->error == ENOMEM) {
- virReportOOMErrorFull(domcode, filename, funcname, linenr);
- errno = ENOMEM;
- } else {
- virReportErrorHelper(domcode, VIR_ERR_INTERNAL_ERROR, filename,
- funcname, linenr, "%s",
- _("Invalid buffer API usage"));
- errno = EINVAL;
- }
- return -1;
+ return 0;
}
/**
if ((format == NULL) || (buf == NULL))
return;
- if (buf->error)
- return;
-
virBufferInitialize(buf);
virBufferApplyIndent(buf);
if ((format == NULL) || (buf == NULL) || (str == NULL))
return;
- if (buf->error)
- return;
-
len = strlen(str);
if (strcspn(str, forbidden_characters) == len) {
virBufferAsprintf(buf, format, str);
if ((format == NULL) || (buf == NULL) || (str == NULL))
return;
- if (buf->error)
- return;
-
len = strlen(str);
if (strcspn(str, toescape) == len) {
virBufferAsprintf(buf, format, str);
if ((buf == NULL) || (str == NULL))
return;
- if (buf->error)
- return;
-
virBufferInitialize(buf);
virBufferApplyIndent(buf);
if ((buf == NULL) || (str == NULL))
return;
- if (buf->error)
- return;
-
/* Only quote if str includes shell metacharacters. */
if (*str && !strpbrk(str, "\r\t\n !\"#$&'()*;<>?[\\]^`{|}~")) {
virBufferAdd(buf, str, -1);
{
char *str;
- if (buf->error)
- return;
-
while ((str = va_arg(ap, char *)) != NULL)
virBufferAdd(buf, str, -1);
}
{
size_t len2 = 0;
- if (!buf || buf->error || !buf->str)
+ if (!buf || !buf->str)
return;
if (!str && len < 0)
{
const char *end;
- if (!buf || !str || buf->error)
+ if (!buf || !str)
return;
while (*str) {
typedef struct _virBuffer virBuffer;
typedef virBuffer *virBufferPtr;
-#define VIR_BUFFER_INITIALIZER { NULL, 0, 0 }
+#define VIR_BUFFER_INITIALIZER { NULL, 0 }
struct _virBuffer {
GString *str;
- int error; /* errno value, or -1 for usage error */
int indent;
};
char *virBufferContentAndReset(virBufferPtr buf);
void virBufferFreeAndReset(virBufferPtr buf);
int virBufferError(const virBuffer *buf);
-int virBufferCheckErrorInternal(const virBuffer *buf,
- int domcode,
- const char *filename,
- const char *funcname,
- size_t linenr)
+int virBufferCheckErrorInternal(const virBuffer *buf)
ATTRIBUTE_NONNULL(1);
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(virBuffer, virBufferFreeAndReset);
* and -1 is returned.
*/
#define virBufferCheckError(buf) \
- virBufferCheckErrorInternal(buf, VIR_FROM_THIS, __FILE__, __FUNCTION__, \
- __LINE__)
+ virBufferCheckErrorInternal(buf)
+
size_t virBufferUse(const virBuffer *buf);
void virBufferAdd(virBufferPtr buf, const char *str, int len);
void virBufferAddBuffer(virBufferPtr buf, virBufferPtr toadd);