#include "cups-private.h"
#include "raster-private.h"
#include "debug-internal.h"
void
_cupsRasterAddError(const char *f,
...)
{
_cups_globals_t *cg = _cupsGlobals();
_cups_raster_error_t *buf = &cg->raster_error;
va_list ap;
char s[2048];
ssize_t bytes;
DEBUG_printf(("_cupsRasterAddError(f=\"%s\", ...)", f));
va_start(ap, f);
bytes = vsnprintf(s, sizeof(s), f, ap);
va_end(ap);
if (bytes <= 0)
return;
DEBUG_printf(("1_cupsRasterAddError: %s", s));
bytes ++;
if ((size_t)bytes >= sizeof(s))
return;
if (bytes > (ssize_t)(buf->end - buf->current))
{
char *temp;
size_t size;
size = (size_t)(buf->end - buf->start + 2 * bytes + 1024);
if (buf->start)
temp = realloc(buf->start, size);
else
temp = malloc(size);
if (!temp)
return;
buf->end = temp + size;
buf->current = temp + (buf->current - buf->start);
buf->start = temp;
}
memcpy(buf->current, s, (size_t)bytes);
buf->current += bytes - 1;
}
void
_cupsRasterClearError(void)
{
_cups_globals_t *cg = _cupsGlobals();
_cups_raster_error_t *buf = &cg->raster_error;
buf->current = buf->start;
if (buf->start)
*(buf->start) = '\0';
}
const char *
_cupsRasterErrorString(void)
{
_cups_globals_t *cg = _cupsGlobals();
_cups_raster_error_t *buf = &cg->raster_error;
if (buf->current == buf->start)
return (NULL);
else
return (buf->start);
}