/*
* error.c -- error handling
*
* PMF -- Padrone's MudFrontend, a frontend for (maybe mostly LP-)mud
* Thomas Padron-McCarthy (Email: padrone@lysator.liu.se), 1990, 1991
* Share and enjoy, but be nice: don't steal my program! Hugo is watching!
* This file latest updated: Sept 21, 1991
*
*/
#include <strings.h>
#include <stdio.h>
#include <setjmp.h>
#include "config.h"
#include "pmf.h"
extern int errno;
/* extern char *sys_errlist[];
extern int sys_nerr; */
/*---------------------------------------------------------------------------*/
/* Just a friendly message, with a nice beep. No jumping. */
message(fmt, a1, a2, a3, a4, a5)
char *fmt, *a1, *a2, *a3, *a4, *a5;
{
ldisplay("\007");
ldisplay("*** ");
ldisplay(fmt, a1, a2, a3, a4, a5);
ldisplay("\n");
} /* message */
/*---------------------------------------------------------------------------*/
static do_error(uflag, fmt, a1, a2, a3, a4, a5)
int uflag;
char *fmt, *a1, *a2, *a3, *a4, *a5;
{
ldisplay("\n");
ldisplay("\007");
ldisplay("ERROR in PMF: ");
ldisplay(fmt, a1, a2, a3, a4, a5);
ldisplay("\n");
if (uflag)
ldisplay(" Current Unix error number: %d (%s).\n",
errno, sys_errlist[errno]);
goto_home_sweet_home(1);
} /* error */
/* Print an error message, and longjmp home.
* Active source/send/receive commands are killed, all lines on the queue
* to be send to mud are removed, and we jump back to command mode.
*/
error(fmt, a1, a2, a3, a4, a5)
char *fmt, *a1, *a2, *a3, *a4, *a5;
{
do_error(0, fmt, a1, a2, a3, a4, a5);
} /* error */
/* As above, but also print the latest Unix error. */
uerror(fmt, a1, a2, a3, a4, a5)
char *fmt, *a1, *a2, *a3, *a4, *a5;
{
do_error(1, fmt, a1, a2, a3, a4, a5);
} /* uerror */
/*---------------------------------------------------------------------------*/
/* Fatal error. Scream and exit. */
fatal(fmt, a1, a2, a3, a4, a5)
char *fmt, *a1, *a2, *a3, *a4, *a5;
{
static int fatal_done = 0;
fflush(stdout);
fflush(stderr);
if (fatal_done)
exit(2);
else
fatal_done = 1;
fprintf(stderr, "\n");
fprintf(stderr, "\007");
fprintf(stderr, "FATAL ERROR in PMF: ");
fprintf(stderr, fmt, a1, a2, a3, a4, a5);
fprintf(stderr, "\n");
fprintf(stderr, " Current Unix error number: %d (%s).\n",
errno, sys_errlist[errno]);
fprintf(stderr, " Goodbye. I am sorry that this happened. Exiting from PMF.\n");
fflush(stderr);
say_goodbye_and_exit(1);
} /* fatal */
syntax highlighted by Code2HTML, v. 0.9.1