mirror of
https://github.com/JakeHillion/drgn.git
synced 2024-12-22 17:23:06 +00:00
44 lines
1012 B
C
44 lines
1012 B
C
|
// 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;
|
||
|
}
|