firasuke / cross / slibtool

Forked from cross/slibtool 3 months ago
Clone

Blame src/internal/slibtool_errinfo_impl.h

5bf1b0
/*******************************************************************/
5bf1b0
/*  slibtool: a skinny libtool implementation, written in C        */
49181b
/*  Copyright (C) 2016--2024  SysDeer Technologies, LLC            */
5bf1b0
/*  Released under the Standard MIT License; see COPYING.SLIBTOOL. */
5bf1b0
/*******************************************************************/
5bf1b0
089c8b
#ifndef SLIBTOOL_ERRINFO_IMPL_H
089c8b
#define SLIBTOOL_ERRINFO_IMPL_H
089c8b
5bf1b0
#include <errno.h>
5bf1b0
#include <slibtool/slibtool.h>
5bf1b0
5bf1b0
int slbt_record_error(
5bf1b0
	const struct slbt_driver_ctx *,
cacd3e
	int		esyscode,
cacd3e
	int		elibcode,
cacd3e
	const char *	efunction,
cacd3e
	int		eline,
cacd3e
	unsigned	eflags,
cacd3e
	void *		eany);
5bf1b0
6beda1
#define SLBT_SYSTEM_ERROR(dctx,eany)      \
5bf1b0
	slbt_record_error(                \
5bf1b0
		dctx,                     \
5bf1b0
		errno,                    \
5bf1b0
		0,                        \
5bf1b0
		__func__,                 \
5bf1b0
		__LINE__,                 \
5bf1b0
		SLBT_ERROR_TOP_LEVEL,     \
6beda1
		(void *)eany)
5bf1b0
5bf1b0
#define SLBT_BUFFER_ERROR(dctx)           \
5bf1b0
	slbt_record_error(                \
5bf1b0
		dctx,                     \
5bf1b0
		ENOBUFS,                  \
5bf1b0
		0,                        \
5bf1b0
		__func__,                 \
5bf1b0
		__LINE__,                 \
5bf1b0
		SLBT_ERROR_TOP_LEVEL,     \
5bf1b0
		0)
5bf1b0
5bf1b0
#define SLBT_SPAWN_ERROR(dctx)            \
5bf1b0
	slbt_record_error(                \
5bf1b0
		dctx,                     \
5bf1b0
		errno,                    \
5bf1b0
		0,                        \
5bf1b0
		__func__,                 \
5bf1b0
		__LINE__,                 \
5bf1b0
		SLBT_ERROR_TOP_LEVEL      \
5bf1b0
		| (errno ? 0              \
5bf1b0
		   : SLBT_ERROR_CHILD),   \
5bf1b0
		0)
5bf1b0
5bf1b0
#define SLBT_FILE_ERROR(dctx)             \
5bf1b0
	slbt_record_error(                \
5bf1b0
		dctx,                     \
5bf1b0
		EIO,                      \
5bf1b0
		0,                        \
5bf1b0
		__func__,                 \
5bf1b0
		__LINE__,                 \
5bf1b0
		SLBT_ERROR_TOP_LEVEL,     \
5bf1b0
		0)
5bf1b0
cacd3e
#define SLBT_CUSTOM_ERROR(dctx,elibcode)  \
5bf1b0
	slbt_record_error(                \
5bf1b0
		dctx,                     \
5bf1b0
		0,                        \
cacd3e
		elibcode,                 \
5bf1b0
		__func__,                 \
5bf1b0
		__LINE__,                 \
5bf1b0
		SLBT_ERROR_TOP_LEVEL      \
5bf1b0
		| SLBT_ERROR_CUSTOM,      \
5bf1b0
		0)
5bf1b0
5bf1b0
#define SLBT_NESTED_ERROR(dctx)           \
5bf1b0
	slbt_record_error(                \
5bf1b0
		dctx,                     \
5bf1b0
		0,                        \
5bf1b0
		0,                        \
5bf1b0
		__func__,                 \
5bf1b0
		__LINE__,                 \
5bf1b0
		SLBT_ERROR_NESTED,        \
5bf1b0
		0)
089c8b
089c8b
#endif