|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T u
Length: 3063 (0xbf7)
Types: TextFile
Names: »util.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Chans/x40088/util.c«
/* util.c - x400 utilities */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Chans/x40088/RCS/util.c,v 5.0 90/09/20 15:58:34 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Chans/x40088/RCS/util.c,v 5.0 90/09/20 15:58:34 pp Exp Locker: pp $
*
* $Log: util.c,v $
* Revision 5.0 90/09/20 15:58:34 pp
* rcsforce : 5.0 public release
*
*/
#include "util.h"
#include <isode/rtsap.h>
#include <varargs.h>
extern char *sys_errlist[];
extern int sys_nerr;
void adios(),
advise(),
rts_adios(),
rts_advise();
#define NBBY 8
#define RC_BASE 0x80
static void tvsub ();
static char *reason_err0[] = {
"no specific reason stated",
"user receiving ability jeopardized",
"reserved(1)",
"user sequence error",
"reserved(2)",
"local SS-user error",
"unreceoverable procedural error"
};
static int reason_err0_cnt = sizeof reason_err0 / sizeof reason_err0[0];
static char *reason_err8[] = {
"demand data token"
};
static int reason_err8_cnt = sizeof reason_err8 / sizeof reason_err8[0];
/* --------------------- Begin Routines -------------------------------- */
char *SReportString (code)
int code;
{
register int fcode;
static char buffer[BUFSIZ];
if (code == SP_PROTOCOL)
return "SS-provider protocol error";
code &= 0xff;
if (code & RC_BASE)
if ((fcode = code & ~RC_BASE) < reason_err8_cnt)
return reason_err8[fcode];
else
if (code < reason_err0_cnt)
return reason_err0[code];
(void) sprintf (buffer, "unknown reason code 0x%x", code);
return buffer;
}
/* --------------------- Logging Routines ------------------------------- */
/*ERRORS*/
void rts_adios (rta, event)
register struct RtSAPabort *rta;
char *event;
{
rts_advise (rta, event);
_exit (1);
}
void rts_advise (rta, event)
register struct RtSAPabort *rta;
char *event;
{
char buffer[BUFSIZ];
extern int rts_sd;
if (rta->rta_cc > 0)
(void) sprintf (buffer, "%s[%s] %*.*s",
event,
RtErrString (rta->rta_reason),
rta->rta_cc, rta->rta_cc, rta->rta_data);
else
(void) sprintf (buffer, "%s [%s]", event,
RtErrString (rta->rta_reason));
if (RTS_FATAL (rta -> rta_reason))
rts_sd = NOTOK;
PP_LOG (LLOG_EXCEPTIONS, ("%s", buffer));
}
#ifndef lint
void adios (va_alist)
va_dcl
{
va_list ap;
va_start (ap);
_ll_log (pp_log_oper, LLOG_FATAL, ap);
_ll_log (pp_log_norm, LLOG_FATAL, ap);
va_end (ap);
_exit (1);
}
#else
/* VARARGS2 */
void adios (what, fmt)
char *what,
*fmt;
{
adios (what, fmt);
}
#endif
#ifndef lint
void advise (va_alist)
va_dcl
{
int code;
va_list ap;
va_start (ap);
code = va_arg (ap, int);
_ll_log (pp_log_norm, code, ap);
va_end (ap);
}
#else
/* VARARGS3 */
void advise (code, what, fmt)
char *what,
*fmt;
int code;
{
advise (code, what, fmt);
}
#endif