Blame src/internal/perk_errinfo_impl.c

db655e
/***************************************************************/
db655e
/*  perk: PE Resource Kit                                      */
db655e
/*  Copyright (C) 2015--2016  Z. Gilboa                        */
db655e
/*  Released under GPLv2 and GPLv3; see COPYING.PERK.          */
db655e
/***************************************************************/
db655e
db655e
#include <perk/perk.h>
db655e
#include "perk_driver_impl.h"
db655e
#include "perk_errinfo_impl.h"
db655e
db655e
int pe_record_error(
db655e
	const struct pe_driver_ctx *	dctx,
db655e
	int				syserror,
db655e
	int				liberror,
db655e
	const char *			function,
db655e
	int				line,
db655e
	unsigned			flags,
db655e
	void *				ctx)
db655e
{
db655e
	struct pe_driver_ctx_impl *	ictx;
db655e
	struct pe_error_info *		erri;
db655e
db655e
	ictx = pe_get_driver_ictx(dctx);
db655e
db655e
	if (ictx->errinfp == ictx->erricap)
db655e
		return -1;
db655e
db655e
	*ictx->errinfp = &ictx->erribuf[ictx->errinfp - ictx->erriptr];
db655e
	erri = *ictx->errinfp;
db655e
db655e
	erri->syserror = syserror;
db655e
	erri->liberror = liberror;
db655e
	erri->function = function;
db655e
	erri->line     = line;
db655e
	erri->flags    = flags;
db655e
	erri->ctx      = ctx;
db655e
db655e
	ictx->errinfp++;
db655e
db655e
	return -1;
db655e
}