|
|
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 a
Length: 4671 (0x123f)
Types: TextFile
Names: »adr2rfc.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Lib/format/adr2rfc.c«
/* adr2rfc.c - Converts an X400 address into an RFC one */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/format/RCS/adr2rfc.c,v 5.0 90/09/20 16:04:44 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Lib/format/RCS/adr2rfc.c,v 5.0 90/09/20 16:04:44 pp Exp Locker: pp $
*
* $Log: adr2rfc.c,v $
* Revision 5.0 90/09/20 16:04:44 pp
* rcsforce : 5.0 public release
*
*/
#include "util.h"
#include "or.h"
#include "adr.h"
#include <isode/cmd_srch.h>
/* -------------------- Begin Routines ----------------------------------- */
extern char *sprintoid();
extern CMD_TABLE atbl_rdm[], atbl_pd_modes[], atbl_reg_mail[];
int adr2rfc (ap, buffer, order_pref)
ADDR *ap;
char *buffer;
int order_pref;
{
OR_ptr or;
char lbuf[LINESIZE];
char *type, *str = NULLCP;
/* -- RFC or X400 address ? -- */
if (ap->ad_r822adr) {
(void) strcpy (buffer, ap->ad_r822adr);
goto adr2rfc_end;
}
if (ap->ad_type == AD_822_TYPE)
return NOTOK;
if (ap->ad_r400adr) {
if ((or = or_std2or (ap->ad_r400adr)) == NULLOR)
return NOTOK;
if (or_or2rfc (or, &lbuf[0]) == NOTOK)
return NOTOK;
or_free (or);
(void) strcpy (buffer, lbuf);
}
else
return NOTOK;
adr2rfc_end: ;
ap_s2s(buffer, &str, order_pref);
if (str != NULLCP) {
(void) strcpy (buffer, str);
free (str);
}
if (ap -> ad_no != 0) {
/* don't do for Originator */
/* do 1138 stuff */
if (ap -> ad_redirection_history != NULL) {
char *reason;
Redirection *ix = ap -> ad_redirection_history;
while (ix != NULL) {
switch (ix->rd_reason) {
case RDR_RECIP_ASSIGNED:
reason = strdup("Recipient Assigned Alternate Recipient");
break;
case RDR_ORIG_ASSIGNED:
reason = strdup("Originator Assigned Alternate Recipient");
break;
case RDR_MD_ASSIGNED:
reason = strdup("Recipient MD Assigned Alternate Recipient");
break;
default:
reason = NULLCP;
break;
}
if (ix -> rd_addr != NULLCP
|| ix -> rd_dn != NULLCP)
(void) sprintf (buffer,
"%s (Redirected from %s",
buffer,
(ix -> rd_addr != NULLCP) ? ix -> rd_addr : ix -> rd_dn);
else
(void) sprintf (buffer,
"%s (Redirection",
buffer);
if (reason != NULLCP) {
(void) sprintf (buffer,
"%s; reason=%s",
buffer,
reason);
free(reason);
}
(void) sprintf(buffer, "%s)", buffer);
}
ix = ix -> rd_next;
}
if (ap -> ad_orig_req_alt != NULLCP)
(void) sprintf (buffer,
"%s (Originally Intended Recipient %s)",
buffer,
ap -> ad_orig_req_alt);
if (ap -> ad_req_del[0] != AD_RDM_NOTUSED
&& ap -> ad_req_del[0] != AD_RDM_ANY) {
int ix = 0, first = OK;
(void) sprintf (buffer,
"%s (Requested Delivery Methods ",
buffer);
while (ix < AD_RDM_MAX
&& ap -> ad_req_del[ix] != AD_RDM_NOTUSED
&& ap -> ad_req_del[ix] != AD_RDM_ANY) {
if ((type = rcmd_srch(ap -> ad_req_del[ix], atbl_rdm)) != NULLCP)
(void) sprintf(buffer,
"%s%s%s",
buffer,
(first == OK) ? "" : ", ",
type);
ix++;
first = NOTOK;
}
(void) sprintf (buffer, "%s)", buffer);
}
if (ap -> ad_phys_forward)
(void) sprintf (buffer,
"%s (Physical Forwarding Prohibited)",
buffer);
if (ap -> ad_phys_fw_ad_req)
(void) sprintf (buffer,
"%s (Physical Forwarding Address Requested)",
buffer);
if (ap -> ad_phys_modes
&& ap -> ad_phys_modes != AD_PM_ORD
&& (type = rcmd_srch (ap -> ad_phys_modes, atbl_pd_modes)) != NULLCP)
(void) sprintf (buffer,
"%s (Physical Delivery Mode %s)",
buffer, type);
if (ap -> ad_reg_mail_type
&& ap -> ad_reg_mail_type != AD_RMT_UNSPECIFIED
&& (type = rcmd_srch (ap -> ad_reg_mail_type, atbl_reg_mail)) != NULLCP)
(void) sprintf (buffer,
"%s (Registered Mail Type %s)",
buffer, type);
if (ap -> ad_recip_number_for_advice != NULLCP)
(void) sprintf (buffer,
"%s (Recipient Number For Advice %s)",
buffer,
ap -> ad_recip_number_for_advice);
if (ap -> ad_phys_rendition_attribs != NULL)
(void) sprintf (buffer,
"%s (Physical Rendition Attributes %s)",
buffer,
sprintoid(ap -> ad_phys_rendition_attribs));
if (ap -> ad_pd_report_request)
(void) sprintf (buffer,
"%s (Physical Delivery Report Requested)",
buffer);
if (ap -> ad_proof_delivery)
(void) sprintf (buffer,
"%s (Proof of Delivery Requested)",
buffer);
}
PP_DBG (("Lib/adr2rfc returns (%s)", buffer));
return OK;
}