home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Lib / format / domsinfo2rfc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  3.0 KB  |  133 lines

  1. /* domsinfo2rfc.c - Converts a DomSupInfo struct into a RFC string */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Lib/format/RCS/domsinfo2rfc.c,v 6.0 1991/12/18 20:22:06 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Lib/format/RCS/domsinfo2rfc.c,v 6.0 1991/12/18 20:22:06 jpo Rel $
  9.  *
  10.  * $Log: domsinfo2rfc.c,v $
  11.  * Revision 6.0  1991/12/18  20:22:06  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16.  
  17.  
  18. #include        "util.h"
  19. #include        <isode/cmd_srch.h>
  20. #include        "mta.h"
  21. #include        "tb_p1.h"
  22.  
  23.  
  24. extern CMD_TABLE        p1tbl_domsinfo[];
  25.  
  26. extern int     x400eits2rfc ();
  27. extern int    globalid2rfc ();
  28. extern UTC    utclocalise ();
  29.  
  30. static int action2rfc ();
  31. /* -------------------- Begin  Routines  ---------------------------------- */
  32.  
  33.  
  34.  
  35.  
  36. int domsinfo2rfc (dominfo, buffer)  /* DomainSuppliedInfo -> RFC */
  37. DomSupInfo      *dominfo;
  38. char            *buffer;
  39. {
  40.     char    tbuf [LINESIZE];
  41.     UTC    lut;
  42.     char *cp, *p;
  43.  
  44.     cp = buffer;
  45.  
  46.     /* -- arrival -- */
  47.     if (dominfo -> dsi_time != NULLUTC && 
  48.         (lut = utclocalise(dominfo -> dsi_time)) != NULLUTC &&
  49.         UTC2rfc (lut, tbuf) == OK &&
  50.         (p = rcmd_srch (DSI_TIME, p1tbl_domsinfo)) != NULLCP) {
  51.         (void) sprintf (cp, "%s %s", p, tbuf);
  52.         free ((char *) lut);
  53.  
  54.         cp += strlen (cp);
  55.     }
  56.     else
  57.         return NOTOK;
  58.  
  59.  
  60.     /* -- deferred -- */
  61.     if (dominfo -> dsi_deferred != NULLUTC) {
  62.         if ((lut = utclocalise(dominfo -> dsi_deferred)) != NULLUTC &&
  63.             UTC2rfc (lut, tbuf) == OK &&
  64.             (p = rcmd_srch (DSI_DEFERRED, p1tbl_domsinfo)) != NULLCP) {
  65.             (void) sprintf (cp, " %s %s", p, tbuf);
  66.             free ((char *) lut);
  67.  
  68.             cp += strlen(cp);
  69.         }
  70.         else return NOTOK;
  71.     }
  72.  
  73.  
  74.     /* -- action -- */
  75.     if (action2rfc (dominfo -> dsi_action, tbuf) == OK &&
  76.         (p = rcmd_srch (DSI_ACTION, p1tbl_domsinfo)) != NULLCP)
  77.         (void) sprintf (cp, " %s %s", p, tbuf);
  78.     else return NOTOK;
  79.  
  80.     /* -- converted -- */
  81.     if (dominfo -> dsi_converted.eit_types) {
  82.         if (x400eits2rfc (&dominfo -> dsi_converted, tbuf) == NOTOK)
  83.             return NOTOK;
  84.         (void) sprintf (cp, " %s (%s)",
  85.                 rcmd_srch (DSI_CONVERTED, p1tbl_domsinfo),
  86.                 tbuf);
  87.         cp += strlen (cp);
  88.     }
  89.  
  90.  
  91.     /* -- attempted/previous -- */
  92.     if (dominfo -> dsi_attempted_md.global_Country != NULLCP ||
  93.         dominfo -> dsi_attempted_md.global_Admin   != NULLCP ||
  94.         dominfo -> dsi_attempted_md.global_Private != NULLCP) {
  95.         if (globalid2rfc (&dominfo -> dsi_attempted_md, tbuf) == NOTOK)
  96.             return NOTOK;
  97.         (void) sprintf (cp, " %s %s",
  98.                 rcmd_srch (DSI_ATTEMPTED, p1tbl_domsinfo),
  99.                 tbuf);
  100.     }
  101.     PP_DBG (("Lib/domsinfo2rfc returns (%s)", buffer));
  102.  
  103.     return OK;
  104. }
  105.  
  106.  
  107.  
  108.  
  109. /* ---------------------  Static  Routines  ------------------------------- */
  110.  
  111.  
  112.  
  113.  
  114. static int action2rfc (action, buffer)  /* DomainSuppliedInfo(action) -> RFC */
  115. int     action;
  116. char    *buffer;
  117. {
  118.     PP_DBG (("Lib/action2rfc(%d)", action));
  119.  
  120.     switch (action) {
  121.         case ACTION_RELAYED:
  122.         (void) strcpy (buffer, "Relayed");
  123.         break;
  124.         case ACTION_ROUTED:
  125.         (void) strcpy (buffer, "Routed");
  126.         break;
  127.         default:
  128.         *buffer = '\0';
  129.         return NOTOK;
  130.     }
  131.     return OK;
  132. }
  133.