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 r

⟦0ee3975a5⟧ TextFile

    Length: 3678 (0xe5e)
    Types: TextFile
    Names: »reprecip2rfc.c«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« 
        └─⟦e5a54fb17⟧ 
            └─⟦this⟧ »pp-5.0/Lib/format/reprecip2rfc.c« 

TextFile

/* reprecip2rfc.c - Converts a Rrseq struct into a RFC string */

# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/format/RCS/reprecip2rfc.c,v 5.0 90/09/20 16:05:09 pp Exp Locker: pp $";
# endif

/*
 * $Header: /cs/research/pp/hubris/pp-beta/Lib/format/RCS/reprecip2rfc.c,v 5.0 90/09/20 16:05:09 pp Exp Locker: pp $
 *
 * $Log:	reprecip2rfc.c,v $
 * Revision 5.0  90/09/20  16:05:09  pp
 * rcsforce : 5.0 public release
 * 
 */



#include        "util.h"
#include        <isode/cmd_srch.h>
#include	"dr.h"


extern CMD_TABLE
		rr_rcode [/* reason-codes */],
		rr_dcode [/* diagnostic-codes */];

extern UTC	utclocalise();
extern void encinfo2rfc ();
static void lastrace2rfc ();

/* ---------------------  Begin  Routines  -------------------------------- */




void reprecip2rfc (rp, ap, buffer)  /* ReportedRecipientInfo -> RFC */
Rrinfo	*rp;
ADDR	*ap;
char    *buffer;
{
	int     i;
	char    tbuf [LOTS*3],
		obuf [LOTS*3];

	if (rp == NULL)
		return;


	bzero (&obuf[0], sizeof obuf);

	if (rp -> rr_recip)
		(void) strcpy (obuf, ap -> ad_r822adr);
	else {
		(void) strcpy (buffer, "\0");
		return;
	}

	(void) strcat (obuf, "; ");

	lastrace2rfc (rp, tbuf);
	(void) strcat (obuf, tbuf);

	(void) sprintf (tbuf, "ext %d ", ap -> ad_extension);
	(void) strcat (obuf, tbuf);

	i = mem2prf (ap -> ad_resp, ap -> ad_mtarreq, ap -> ad_usrreq);
	(void) sprintf (tbuf, "flags %02d", i);
	(void) strcat (obuf, tbuf);

	if (rp -> rr_originally_intended_recip &&
	    rp -> rr_originally_intended_recip->fn_addr) {
		(void) sprintf (tbuf, " intended %s",
				rp -> rr_originally_intended_recip -> fn_addr);
		(void) strcat (obuf, tbuf);
	}

	if (rp -> rr_supplementary) {
		(void) sprintf (tbuf, " info %s", rp->rr_supplementary);
		(void) strcat (obuf, tbuf);
	}
	else if (rp -> rr_report.rep_type == DR_REP_FAILURE) {
		(void) sprintf (tbuf, " info %s",
			"Extra information on the failure was not supplied");
		(void) strcat (obuf, tbuf);
	}

	(void) strcpy (buffer, obuf);

	PP_DBG (("Lib/rri2rfc returns (%s)", buffer));

	return;
}




static void lastrace2rfc (rp, buffer)   /* LastTraceInformation -> RFC */
Rrinfo	*rp;
char            *buffer;
{
	Delinfo         *dliv;
	NonDelinfo      *ndliv;
	char            obuf [LOTS*3],
			tbuf [LOTS*3];
	UTC		lut;
	bzero (&obuf[0], sizeof obuf);

	switch (rp -> rr_report.rep_type) {
	case DR_REP_SUCCESS:
		dliv = &rp -> rr_report.rep.rep_dinfo;
		if (dliv->del_time == NULLUTC)
			dliv -> del_time  = utcnow ();
		lut = utclocalise(dliv -> del_time);
		(void) UTC2rfc (lut, tbuf);
		free((char *) lut);
		(void) sprintf (obuf, "SUCCESS %s; %d; ",
				tbuf, dliv -> del_type);
		break;
	case DR_REP_FAILURE:
		ndliv = &rp -> rr_report.rep.rep_ndinfo;
		(void) sprintf (obuf, "FAILURE %d (%s); %d (%s); ",
			ndliv -> nd_rcode,
			rcmd_srch (ndliv -> nd_rcode, rr_rcode),
			ndliv -> nd_dcode,
			rcmd_srch (ndliv -> nd_dcode, rr_dcode));
		break;
	default:
		PP_LOG (LLOG_EXCEPTIONS,
			("Lib/lastrace2rfc/Unknown report type %d",
			rp -> rr_report.rep_type));
		(void) strcpy (buffer, "\0");
		return;
	}


	if (rp -> rr_arrival == NULLUTC)
		rp -> rr_arrival = utcnow ();
	lut = utclocalise (rp -> rr_arrival);
	(void) UTC2rfc (lut, tbuf);
	free ((char *) lut);
	(void) strcat (obuf, tbuf);
	(void) strcat (obuf, ";");

	if (rp -> rr_converted) {
		tbuf[0] = NULL;
		encinfo2rfc (rp -> rr_converted, tbuf);
		if (tbuf[0]) {
			(void) strcat (obuf, " converted");
			(void) strcat (obuf, "(");
			(void) strcat (obuf, tbuf);
			(void) strcat (obuf, ")");
			(void) strcat (obuf, "; ");
		}
	}

	(void) strcpy (buffer, obuf);

	PP_DBG (("Lib/lastrace2rfc returns (%s)", buffer));

	return;
}