drgn/libdrgn/binary_buffer.c

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

44 lines
1012 B
C
Raw Normal View History

// Copyright (c) Facebook, Inc. and its affiliates.
// SPDX-License-Identifier: GPL-3.0+
#include "binary_buffer.h"
#include "drgn.h"
#include <stdarg.h>
static struct drgn_error *binary_buffer_error_vat(struct binary_buffer *bb,
const char *pos,
const char *format,
va_list ap)
{
char *message;
int ret = vasprintf(&message, format, ap);
if (ret == -1)
return &drgn_enomem;
struct drgn_error *err = bb->error_fn(bb, pos, message);
free(message);
return err;
}
struct drgn_error *binary_buffer_error(struct binary_buffer *bb,
const char *format, ...)
{
va_list ap;
va_start(ap, format);
struct drgn_error *err = binary_buffer_error_vat(bb, bb->prev, format,
ap);
va_end(ap);
return err;
}
struct drgn_error *binary_buffer_error_at(struct binary_buffer *bb,
const char *pos, const char *format,
...)
{
va_list ap;
va_start(ap, format);
struct drgn_error *err = binary_buffer_error_vat(bb, pos, format, ap);
va_end(ap);
return err;
}