init ems server code
This commit is contained in:
114
plat/iptrans/src/error.c
Normal file
114
plat/iptrans/src/error.c
Normal file
@@ -0,0 +1,114 @@
|
||||
#include <stdio.h>
|
||||
#include <errno.h> /* for definition of errno */
|
||||
#include <stdarg.h> /* ANSI C header file */
|
||||
#include <string.h>
|
||||
#include "./include/iptrans.h"
|
||||
|
||||
static void err_doit(int, const char *, va_list);
|
||||
|
||||
char *pname = NULL; /* caller can set this from argv[0] */
|
||||
|
||||
/*
|
||||
** Nonfatal error related to a system call.
|
||||
** Print a message and return.
|
||||
*/
|
||||
|
||||
/*@ignore@*/
|
||||
void
|
||||
err_ret(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
err_doit(1, fmt, ap);
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
** Fatal error related to a system call.
|
||||
** Print a message and terminate.
|
||||
*/
|
||||
|
||||
void
|
||||
err_sys(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
err_doit(1, fmt, ap);
|
||||
va_end(ap);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
** Fatal error related to a system call.
|
||||
** Print a message, dump core, and terminate.
|
||||
*/
|
||||
|
||||
void
|
||||
err_dump(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
err_doit(1, fmt, ap);
|
||||
va_end(ap);
|
||||
abort(); /* dump core and terminate */
|
||||
exit(1); /* shouldn't get here */
|
||||
}
|
||||
|
||||
/*
|
||||
** Nonfatal error unrelated to a system call.
|
||||
** Print a message and return.
|
||||
*/
|
||||
|
||||
void
|
||||
err_msg(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
err_doit(0, fmt, ap);
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
** Fatal error unrelated to a system call.
|
||||
** Print a message and terminate.
|
||||
*/
|
||||
|
||||
void
|
||||
err_quit(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
err_doit(0, fmt, ap);
|
||||
va_end(ap);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
** Print a message and return to caller.
|
||||
** Caller specifies "errnoflag".
|
||||
*/
|
||||
|
||||
static void
|
||||
err_doit(int errnoflag, const char *fmt, va_list ap)
|
||||
{
|
||||
int errno_save;
|
||||
char buf[MAXLINE];
|
||||
|
||||
errno_save = errno; /* value caller might want printed */
|
||||
vsprintf(buf, fmt, ap);
|
||||
if (errnoflag)
|
||||
sprintf(buf+strlen(buf), ": %s", strerror(errno_save));
|
||||
strcat(buf, "\n");
|
||||
fflush(stdout); /* in case stdout and stderr are the same */
|
||||
fputs(buf, stderr);
|
||||
fflush(NULL); /* flushes all stdio output streams */
|
||||
return;
|
||||
}
|
||||
/*@end@*/
|
||||
Reference in New Issue
Block a user