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

  1. /* rfc2globalid.c - Converts a RFC string into a GlobalDomId struct */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Lib/format/RCS/rfc2globalid.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/rfc2globalid.c,v 6.0 1991/12/18 20:22:06 jpo Rel $
  9.  *
  10.  * $Log: rfc2globalid.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 "mta.h"
  20.  
  21.  
  22.  
  23.  
  24. /* ---------------------  Begin  Routines  -------------------------------- */
  25.  
  26. #define PRMD    "/PRMD="
  27. #define ADMD    "/ADMD="
  28. #define COUNTRY    "/C="
  29.  
  30. int rfc2x400globalid (gp, str)
  31. GlobalDomId    *gp;
  32. char        *str;
  33. {
  34.     char    *start, *end;
  35.     int len;
  36.  
  37.     len = strlen(PRMD);
  38.     if (lexnequ (str, PRMD, len) == 0) {
  39.         start = str + len;
  40.         if ((end = index(start, '/')) == NULLCP)
  41.             return NOTOK;
  42.         *end = '\0';
  43.         gp -> global_Private = strdup(start);
  44.         *end = '/';
  45.         str = end;
  46.     }
  47.     len = strlen (ADMD);
  48.     if (lexnequ (str, ADMD, len) == 0) {
  49.         start = str + len;
  50.         if ((end = index(start, '/')) == NULLCP) {
  51.             if (gp -> global_Private != NULLCP) {
  52.                 free (gp -> global_Private);
  53.                 gp -> global_Private = NULLCP;
  54.             }
  55.             return NOTOK;
  56.         }
  57.         *end = '\0';
  58.         gp -> global_Admin = strdup(start);
  59.         *end = '/';
  60.         str = end;
  61.     }
  62.     len = strlen(COUNTRY);
  63.     if (lexnequ (str, COUNTRY, strlen(COUNTRY)) == 0) {
  64.         start = str + len;
  65.         if ((end = index(start, '/')) == NULLCP) {
  66.             if (gp -> global_Private != NULLCP) {
  67.                 free (gp -> global_Private);
  68.                 gp -> global_Private = NULLCP;
  69.             }
  70.             if (gp -> global_Admin != NULLCP) {
  71.                 free (gp -> global_Admin);
  72.                 gp -> global_Admin = NULLCP;
  73.             }
  74.             return NOTOK;
  75.         }
  76.         *end = '\0';
  77.         gp -> global_Country = strdup(start);
  78.         *end = '/';
  79.         str = end;
  80.     }
  81.     return OK;
  82. }
  83.     
  84.  
  85. int rfc2globalid (gp, str)
  86. GlobalDomId     *gp;
  87. char            *str;
  88. {
  89.  
  90.     char    *cp = str,
  91.         *bp = str;
  92.  
  93.     PP_DBG (("Lib/rfc2globalid (%s)", str));
  94.  
  95.  
  96.     if (*cp == '*')
  97.         return NOTOK;
  98.  
  99.     /* -- Country -- */
  100.     cp = index (bp, '*');
  101.     if (cp == NULLCP)
  102.         return NOTOK;
  103.     *cp++ = '\0';
  104.     gp->global_Country = strdup (bp);
  105.     bp = cp;
  106.  
  107.     /* -- Admin -- */
  108.     cp = index (bp, '*');
  109.     if (cp != NULLCP)
  110.         *cp++ = '\0';
  111.     gp->global_Admin = strdup (bp);
  112.     bp = cp;
  113.  
  114.     /* -- Prmd -- */
  115.     if (cp == NULLCP)
  116.         return OK;
  117.     gp->global_Private = strdup (bp);
  118.  
  119.     return OK;
  120. }
  121.