| |
eph_err.c
/*
Copyright (c) 1997,1998 Eugene G. Crosser
Copyright (c) 1998 Bruce D. Lightner (DOS/Windows support)
You may do virtually what you wish with this software, as long
as the explicit reference to its original author is retained.
THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE
USE OF THIS SOFTWARE.
*/
#include "eph_io.h"
#include "eph_priv.h"
#include <string.h>
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
static char *eph_errmsg[] = {
/* 10001 */ "Data too long",
/* 10002 */ "Timeout",
/* 10003 */ "Unexpected amount of data read",
/* 10004 */ "Bad packet header received",
/* 10005 */ "Bad CRC on packet",
/* 10006 */ "Bad speed value",
/* 10007 */ "No memory",
/* 10008 */ "Bad arguments",
/* 10009 */ "",
/* 10010 */ "",
/* 10011 */ "",
/* 10012 */ "",
/* 10013 */ "",
/* 10014 */ "",
/* 10015 */ "",
};
/*
We do not do any buffer override checks here because we are sure
that the function is called *only* from within our library.
*/
void eph_error (eph_iob *iob,int err,char *fmt,...) {
va_list ap;
char *msg=NULL;
char msgbuf[512];
va_start(ap,fmt);
if (fmt) {
vsprintf(msgbuf,fmt,ap);
} else {
if ((err >= ERR_BASE) && (err < ERR_MAX)) {
msg=eph_errmsg[err-ERR_BASE];
} else {
msg=strerror(err);
}
strcpy(msgbuf,msg);
}
va_end(ap);
(iob->errorcb)(err,msgbuf);
}
Back
|
|
|