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 q

⟦d3398de84⟧ TextFile

    Length: 9493 (0x2515)
    Types: TextFile
    Names: »q2txt.c«

Derivation

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

TextFile

/* q2txt.c: converts qstruct into text encoding */

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

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



#include        "util.h"
#include        <isode/cmd_srch.h>
#include        "q.h"
#include        "tb_com.h"
#include        "tb_q.h"
#include 	"mta.h"

#define crit2txt(n)	rcmd_srch ((n), tbl_crit)
#define txt2int(n)	atoi (n)

extern	void	genreset ();
extern	void	argv2fp ();
extern	void	encodedinfo2txt ();
extern	void	extension2txt ();
extern	void	mpduid2txt ();
extern	void	trace2txt ();

extern CMD_TABLE
		tbl_crit [],
		tbl_bool [],
		qtbl_que [/* message-envelope-parameters */],
		qtbl_mt_type [/* message-type */],
		qtbl_con_type [/* content-type */],
		qtbl_priority [/* message-priority */];



/* -------------------  Memory -> Text File  ------------------------------ */

char	*qb2hex ();

static char *Q_msgtype2txt (), *Q_priority2txt ();
void dlexp2txt ();
void fname2txt ();
extern char     *int2txt ();
extern char     *time2txt ();

int q2txt (fp, qp)
FILE                    *fp;
register Q_struct       *qp;
{
	char    *argv[100];
	int     argc;
	Trace   *trace;
	DLHistory *dlexp;

	genreset ();

	PP_DBG (("Lib/pp/q2txt(type=%d, size=%ld)",
		qp->msgtype, qp->msgsize));

	argv[0] = rcmd_srch (Q_MSGTYPE, qtbl_que);
	argv[1] = Q_msgtype2txt (qp->msgtype);
	argv[2] = NULLCP;
	argv2fp (fp, argv);

	if (qp -> msgsize != 0) {
		argv[0] = rcmd_srch (Q_MSGSIZE, qtbl_que);
		argv[1] = int2txt ((int)qp->msgsize);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp->defertime != 0) {
		argv[0] = rcmd_srch (Q_DEFERREDTIME, qtbl_que);
		argv[1] = time2txt (qp->defertime);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> latest_time) {
		argv[0] = rcmd_srch (Q_LATESTTIME, qtbl_que);
		argv[1] = time2txt (qp -> latest_time);
		argv[2] = crit2txt (qp -> latest_time_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> nwarns != 0) {
		argv[0] = rcmd_srch (Q_NWARNS, qtbl_que);
		argv[1] = int2txt ((int)qp->nwarns);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> warninterval != 0) {
		argv[0] = rcmd_srch (Q_WARNINTERVAL, qtbl_que);
		argv[1] = int2txt (qp->warninterval);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> retinterval != 0) {
		argv[0] = rcmd_srch (Q_RETINTERVAL, qtbl_que);
		argv[1] = int2txt (qp->retinterval);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> cont_type != NULLCP) {
		argv[0] = rcmd_srch (Q_CONTENT_TYPE, qtbl_que);
		argv[1] = qp -> cont_type;
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	argv[0] = rcmd_srch (Q_ENCODED_INFO, qtbl_que);
	argc = 1;
	encodedinfo2txt (&qp->encodedinfo, argv, &argc);
	argv[argc] = NULLCP;
	if (argc != 1)
		argv2fp (fp, argv);

	argv[0] = rcmd_srch (Q_ORIG_ENCODED_INFO, qtbl_que);
	argc = 1;
	encodedinfo2txt (&qp->orig_encodedinfo, argv, &argc);
	argv[argc] = NULLCP;
	if (argc != 1)
		argv2fp (fp, argv);
	
	if (qp -> priority != PRIO_NORMAL) {
		argv[0] = rcmd_srch (Q_PRIORITY, qtbl_que);
		argv[1] = Q_priority2txt (qp->priority);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> disclose_recips) {
		argv[0] = rcmd_srch (Q_DISCLOSE_RECIPS, qtbl_que);
		argv[1] = rcmd_srch (TRUE, tbl_bool);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}
	if (qp -> implicit_conversion) {
		argv[0] = rcmd_srch (Q_IMPLICIT_CONVERSION, qtbl_que);
		argv[1] = rcmd_srch (TRUE, tbl_bool);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}
	if (qp -> alternate_recip_allowed) {
		argv[0] = rcmd_srch (Q_ALTERNATE_RECIP_ALLOWED, qtbl_que);
		argv[1] = rcmd_srch (TRUE, tbl_bool);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}
	if (qp -> content_return_request) {
		argv[0] = rcmd_srch (Q_CONTENT_RETURN_REQUEST, qtbl_que);
		argv[1] = rcmd_srch (TRUE, tbl_bool);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> recip_reassign_prohibited) {
		argv[0] = rcmd_srch (Q_RECIP_REASSIGN_PROHIBITED, qtbl_que);
		argv[1] = rcmd_srch (TRUE, tbl_bool);
		argv[2] = crit2txt (qp -> recip_reassign_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> dl_expansion_prohibited) {
		argv[0] = rcmd_srch (Q_DL_EXP_PROHIBITIED, qtbl_que);
		argv[1] = rcmd_srch (TRUE, tbl_bool);
		argv[2] = crit2txt (qp -> dl_expansion_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> conversion_with_loss_prohibited) {
		argv[0] = rcmd_srch (Q_CONV_WITH_LOSS, qtbl_que);
		argv[1] = rcmd_srch (TRUE, tbl_bool);
		argv[2] = crit2txt (qp -> conversion_with_loss_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp->ua_id != NULLCP) {
		argv[0] = rcmd_srch (Q_UA_ID, qtbl_que);
		argv[1] = qp -> ua_id;
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> pp_content_correlator) {
		argv[0] = rcmd_srch (Q_PP_CONT_CORR, qtbl_que);
		argv[1] = qp -> pp_content_correlator;
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> general_content_correlator) {
		argv[0] = rcmd_srch (Q_GEN_CONT_CORR, qtbl_que);
		argv[1] = qb2hex (qp -> general_content_correlator);
		argv[2] = crit2txt (qp -> content_correlator_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
		free (argv[1]);
	}

	if (qp -> originator_return_address) {
		argv[0] = rcmd_srch (Q_ORIG_RETURN_ADDRESS, qtbl_que);
		argc = 1;
		fname2txt (qp -> originator_return_address,
			   qp -> originator_return_address_crit, argv, &argc);
		argv[argc] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> forwarding_request) {
		argv[0] = rcmd_srch (Q_FORWARDING_REQUEST, qtbl_que);
		argv[1] = int2txt (qp -> forwarding_request);
		argv[2] = crit2txt (qp -> forwarding_request_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> originator_certificate) {
		argv[0] = rcmd_srch (Q_ORIGINATOR_CERT, qtbl_que);
		argv[1] = qb2hex (qp -> originator_certificate);
		argv[2] = crit2txt (qp -> originator_certificate_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
		free (argv[1]);
	}

	if (qp -> algorithm_identifier) {
		argv[0] = rcmd_srch (Q_ALGORITHM_ID, qtbl_que);
		argv[1] = qb2hex (qp -> algorithm_identifier);
		argv[2] = crit2txt (qp -> algorithm_identifier_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
		free (argv[1]);
	}

	if (qp -> message_origin_auth_check) {
		argv[0] = rcmd_srch (Q_MESSAGE_ORIGIN_AUTH_CHECK, qtbl_que);
		argv[1] = qb2hex (qp -> message_origin_auth_check);
		argv[2] = crit2txt (qp -> message_origin_auth_check_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
		free (argv[1]);
	}

	if (qp -> security_label) {
		argv[0] = rcmd_srch (Q_SECURITY_LABEL, qtbl_que);
		argv[1] = qb2hex (qp -> security_label);
		argv[2] = crit2txt (qp -> security_label_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
		free (argv[1]);
	}

	if (qp -> proof_of_submission_request) {
		argv[0] = rcmd_srch (Q_PROOF_OF_SUB, qtbl_que);
		argv[1] = int2txt (qp -> proof_of_submission_request);
		argv[2] = crit2txt (qp -> proof_of_submission_crit);
		argv[3] = NULLCP;
		argv2fp (fp, argv);
	}

	argv[0] = rcmd_srch (Q_MESSAGE_EXTENSIONS, qtbl_que);
	if (qp -> per_message_extensions) {
		Extension *ext;

		for (ext = qp -> per_message_extensions;
		     ext; ext = ext -> ext_next) {
			argc = 1;
			extension2txt (ext, fp, argv, &argc);
		}
	}

	if (qp -> inbound && qp -> inbound -> li_chan) {
		argv[0] = rcmd_srch (Q_INCHANNEL, qtbl_que);
		argv[1] = qp -> inbound -> li_chan -> ch_name;
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if ( qp -> inbound && qp -> inbound -> li_mta) {
		argv[0] = rcmd_srch (Q_INHOST, qtbl_que);
		argv[1] = qp -> inbound -> li_mta;
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	argv[0] = rcmd_srch (Q_MSGID, qtbl_que);
	argc = 1;
	mpduid2txt (&qp->msgid, argv, &argc);
	if (argc > 1) {
		argv[argc] = NULLCP;
		argv2fp (fp, argv);
	}

	argv[0] = rcmd_srch (Q_TRACE, qtbl_que);
	for (trace = qp->trace; trace; trace = trace -> trace_next) {
		argc = 1;
		trace2txt (trace, argv, &argc);
		argv[argc] = NULLCP;
		argv2fp (fp, argv);
	}

	argv[0] = rcmd_srch (Q_DL_EXP_HISTORY, qtbl_que);
	for (dlexp = qp -> dl_expansion_history; dlexp;
	     dlexp = dlexp -> dlh_next) {
		argc = 1;
		dlexp2txt (dlexp, argv, &argc);
		argv[argc] = NULLCP;
		argv2fp (fp, argv);
	}
	if (qp -> dl_expansion_history_crit) {
		argv[0] = rcmd_srch (Q_DL_EXP_HIST_CRIT, qtbl_que);
		argv[1] = crit2txt (qp -> dl_expansion_history_crit);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp -> queuetime != 0) {
		argv[0] = rcmd_srch (Q_QUEUETIME, qtbl_que);
		argv[1] = time2txt (qp->queuetime);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	if (qp->departime != 0) {
		argv[0] = rcmd_srch (Q_DEPARTIME, qtbl_que);
		argv[1] = time2txt (qp->departime);
		argv[2] = NULLCP;
		argv2fp (fp, argv);
	}

	(void) fprintf (fp, "%s\n", rcmd_srch (Q_END, qtbl_que));

	(void) fflush (fp);
	return (ferror (fp) ? NOTOK : OK);
}


static char *Q_msgtype2txt (type)  /* Message-type -> Txt */
int     type;
{
	PP_DBG (("Lib/pp/Q_msgtype2txt (%d)", type));

	switch (type) {
	case MT_UMPDU:
	case MT_PMPDU:
	case MT_DMPDU:
		return rcmd_srch (type, qtbl_mt_type);
	}
	return NULLCP;
}

static char *Q_priority2txt (type)  /* Priority -> Txt */
int     type;
{
	PP_DBG (("Lib/pp/Q_priority2txt('%d')", type));

	switch (type) {
	case PRIO_NORMAL:
	case PRIO_NONURGENT:
	case PRIO_URGENT:
		return rcmd_srch (type, qtbl_priority);
	}
	return NULLCP;
}