#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include "xassert.h"

void _xassert (char *file, int line, char *function, char *expr, char *fmt, ...)
{
	va_list args;
	char buf[1024];

	va_start (args, fmt);
	vsnprintf (buf, sizeof(buf), fmt, args);
	va_end (args);

	fprintf (stderr, "Warunek niespełniony.\n\n");
	fprintf (stderr, "Plik:      %s\n", file);
	fprintf (stderr, "Linia:     %d\n", line);
	fprintf (stderr, "Funkcja:   %s()\n", function);
	fprintf (stderr, "Wyrażenie: %s\n", expr);
	fprintf (stderr, "Komunikat: %s\n\n", buf);
	fprintf (stderr, "Awaryjne zakończenie działania programu.\n");
	abort();
}
