DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T u

⟦bf6afb880⟧ TextFile

    Length: 3063 (0xbf7)
    Types: TextFile
    Names: »util.c«

Derivation

└─⟦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« 

TextFile

/* 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