|
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