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

  1. /* tb_getalias.c: grab an alias */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Lib/table/RCS/tb_getalias.c,v 6.0 1991/12/18 20:24:28 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Lib/table/RCS/tb_getalias.c,v 6.0 1991/12/18 20:24:28 jpo Rel $
  9.  *
  10.  * $Log: tb_getalias.c,v $
  11.  * Revision 6.0  1991/12/18  20:24:28  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16.  
  17.  
  18. #include        "util.h"
  19. #include        <isode/cmd_srch.h>
  20. #include        "table.h"
  21. #include    "adr.h"
  22. #include        "alias.h"
  23.  
  24.  
  25. #define         MAX_ALIAS_ARGS          10
  26.  
  27.  
  28. static CMD_TABLE   aliastbl_type[] = {
  29.     "synonym",              ALIAS_SYNONYM,
  30.     "alias",                ALIAS_PROPER,
  31.     0,                      -1
  32.     };
  33.  
  34. static CMD_TABLE   aliastbl_qual[] = {
  35.     "822",             AD_822_TYPE,
  36.     "x400",            AD_X400_TYPE,
  37.     "external",        ALIAS_EXTERNAL,
  38.     0,             -1
  39.     };
  40.  
  41.  
  42.  
  43. /* ---------------------  Begin  Routines  -------------------------------- */
  44.  
  45.  
  46. /*
  47. This routine returns the values:
  48.     NOTOK   -  Table or routine error.
  49.     OK      -  Alias found in Table
  50.     DONE    -  Alias not found in Table (- alias is a proper user name)
  51. */
  52.  
  53. extern    char    *alias_tbl;
  54.  
  55. int tb_getalias (key, alias, subdom)
  56. char            *key;
  57. ALIAS           *alias;
  58. char        *subdom;
  59. {
  60.  
  61.     char    *argv [MAX_ALIAS_ARGS],
  62.     buf [BUFSIZ], tblname[MAXPATHLENGTH];
  63.     int    argc, i, qual;
  64.     Table    *Alias = NULLTBL;
  65.  
  66.  
  67.     if (subdom == NULLCP || *subdom == '\0')
  68.         (void) sprintf(tblname,"%s", alias_tbl);
  69.     else
  70.         (void) sprintf(tblname,"%s-%s", subdom, alias_tbl);
  71.  
  72.     PP_DBG (("Lib/tb_getalias (%s)", tblname));
  73.  
  74.  
  75.     if ((Alias = tb_nm2struct (tblname)) == NULLTBL) {
  76.         PP_OPER (NULLCP, ("Lib/tb_getalias (no table '%s')",tblname));
  77.         return (NOTOK);
  78.     }
  79.  
  80.     if (tb_k2val (Alias, key, buf, TRUE) == NOTOK)
  81.         return (DONE);
  82.  
  83.  
  84.     /* -- get alias arguments -- */
  85.  
  86.     if ((argc = sstr2arg (buf, MAX_ALIAS_ARGS, argv, "\t ")) == NOTOK)
  87.         return (NOTOK);
  88.  
  89.  
  90.     switch (alias->alias_type = cmd_srch (argv[0], aliastbl_type)) {
  91.         case ALIAS_SYNONYM:
  92.         case ALIAS_PROPER:
  93.         break;
  94.         default:
  95.         PP_LOG (LLOG_EXCEPTIONS,
  96.             ("Lib/tb_getalias (err type=%d)", alias->alias_type));
  97.         return (NOTOK);
  98.     }
  99.  
  100.  
  101.     (void) strcpy (&alias->alias_user[0], argv[1]);
  102.  
  103.     alias->alias_external = 0;
  104.     alias->alias_ad_type = AD_ANY_TYPE;
  105.  
  106.     for (i = 2; i < argc; i++) {
  107.         if (!isstr(argv[i]))
  108.             continue;
  109.         switch ((qual = cmd_srch (argv[i], aliastbl_qual))) {
  110.             case AD_X400_TYPE:
  111.             case AD_822_TYPE:
  112.             alias->alias_ad_type = qual;
  113.             break;
  114.             case ALIAS_EXTERNAL:
  115.             alias->alias_external = qual;
  116.             break;
  117.             default:
  118.             PP_LOG (LLOG_EXCEPTIONS,
  119.                 ("Lib/tb_getalias unknown qualifier '%s'",
  120.                  argv[i]));
  121.             return (NOTOK);
  122.                 
  123.         }
  124.     }
  125.     return (OK);
  126. }
  127.