|
|
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: 3922 (0xf52)
Types: TextFile
Names: »ut_logs.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Chans/x40084/ut_logs.c«
/* ut_logs.c - X400 logging and error routines */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Chans/x40084/RCS/ut_logs.c,v 5.0 90/09/20 15:56:17 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Chans/x40084/RCS/ut_logs.c,v 5.0 90/09/20 15:56:17 pp Exp Locker: pp $
*
* $Log: ut_logs.c,v $
* Revision 5.0 90/09/20 15:56:17 pp
* rcsforce : 5.0 public release
*
*/
#include "util.h"
#include <isode/rtsap.h>
#include <varargs.h>
#define RC_BASE 0x80
/* -- externals -- */
extern char *sys_errlist[];
extern int sys_nerr;
/* -- globals -- */
char reason[BUFSIZ];
/* -- static -- */
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];
/* -- local routines -- */
char *SReportString();
void adios();
void advise();
void rts_adios();
void rts_advise();
void rts_exceptions();
void do_reason();
/* --------------------- 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 ------------------------------- */
#ifdef lint
/*VARARGS2*/
void do_reason (str)
char *str;
{
do_reason (str);
}
#else
void do_reason (va_alist)
va_dcl
{
va_list ap;
bzero (reason, BUFSIZ);
va_start (ap);
_asprintf (reason, NULLCP, ap);
va_end (ap);
PP_OPER (NULLCP, ("%s", reason));
}
#endif
/*ERRORS*/
void rts_adios (rta, event)
register struct RtSAPabort *rta;
char *event;
{
rts_advise (rta, event);
_exit (1);
}
void rts_advise (rta, event) /* -- updates x40084 logs + OPER log -- */
register struct RtSAPabort *rta;
char *event;
{
char buffer[BUFSIZ];
if (rta->rta_cc > 0)
(void) sprintf (buffer, "[%s] %*.*s",
RtErrString (rta->rta_reason),
rta->rta_cc, rta->rta_cc, rta->rta_data);
else
(void) sprintf (buffer, "[%s]",
RtErrString (rta->rta_reason));
do_reason ("%s: %s", event, buffer);
}
void rts_exceptions (rta, message) /* -- only updates x400 logs -- */
register struct RtSAPabort *rta;
char *message;
{
char buffer[BUFSIZ];
if (rta->rta_cc > 0)
(void) sprintf (buffer, "[%s] %*.*s",
RtErrString (rta->rta_reason),
rta->rta_cc, rta->rta_cc, rta->rta_data);
else
(void) sprintf (buffer, "[%s]",
RtErrString (rta->rta_reason));
PP_LOG (LLOG_EXCEPTIONS, ("%s, %s", message, 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