home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / h / ap.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  4.3 KB  |  141 lines

  1. /* ap.h: RFC-822 address parser definitions */
  2.  
  3. /*
  4.  * @(#) $Header: /xtel/pp/pp-beta/h/RCS/ap.h,v 6.0 1991/12/18 20:42:44 jpo Rel $
  5.  *
  6.  * $Log: ap.h,v $
  7.  * Revision 6.0  1991/12/18  20:42:44  jpo
  8.  * Release 6.0
  9.  *
  10.  *
  11.  */
  12.  
  13.  
  14.  
  15. #ifndef _H_AP
  16. #define _H_AP
  17.  
  18.  
  19. #include "util.h"
  20.  
  21.  
  22. struct ap_node
  23. {
  24.     char    ap_obtype;                /* parsing type of this object */
  25.  
  26. #define AP_NIL                  0
  27. #define AP_COMMENT              1     /* comment (...) */
  28. #define AP_DATA_TYPE            2     /* "data-type" (e.g., :include:...,) */
  29. #define AP_DOMAIN               3     /* host-part of address */
  30. #define AP_DOMAIN_LITERAL       4     /* domain literal */
  31. #define AP_GENERIC_WORD         5     /* generic word */
  32. #define AP_GROUP_END            6     /* end of group list */
  33. #define AP_GROUP_NAME           7     /* name of group */
  34. #define AP_GROUP_START          8     /* start of group address list x:.. ; */
  35. #define AP_MAILBOX              9     /* mailbox-part of address */
  36. #define AP_PERSON_END           10    /* end of personal address list */
  37. #define AP_PERSON_NAME          11    /* name of perrson */
  38. #define AP_PERSON_START         12    /* start of personal addr list <...> */
  39.  
  40.  
  41.     char    ap_ptrtype;               /* next node is continuation of this */
  42.                       /* address, start of new, or null   */
  43. #define AP_PTR_NIL              0     /* there is no next node */
  44. #define AP_PTR_NXT              1     /* next is start of new address */
  45. #define AP_PTR_MORE             2     /* next is part of this address */
  46.  
  47.     char    *ap_obvalue;              /* ptr to str value of object  */
  48.  
  49. /* new fields added for efficiency during parsing */
  50.     int     ap_normalised;          /* boolean indicate whether domain */
  51.                           /* has been normalised */
  52.     int     ap_recognised;          /* boolean indicate whether domain */
  53.                           /* was recognised by normalisation */
  54.     int     ap_islocal;              /* boolean indicate whether domain */
  55.                           /* is local */
  56.     char    *ap_localhub;          /* name of local hub */
  57.     char    *ap_chankey;          /* key to use in look up of chan table */
  58.     char    *ap_error;              /* error from look up */
  59.     struct ap_node   *ap_next;        /* pointer to next node */
  60. };
  61.  
  62.  
  63.  
  64. typedef struct  ap_node         *AP_ptr;
  65. #define NULLAP                  ((AP_ptr)0)
  66. #define NULLAPP                 ((AP_ptr *)0)
  67. #define BADAP                   ((AP_ptr) -1)
  68.  
  69.  
  70.  
  71. /*
  72. Environment for the address parser
  73. */
  74.  
  75. #define AP_TYPE_MASK        (~0003)
  76.  
  77. #define AP_PARSE_SAME           0000  /* do not transorm the address */
  78. #define AP_PARSE_733            0001  /* follow RFC #733 rules */
  79. #define AP_PARSE_822            0002  /* follow RFC #822 rules */
  80. #define AP_PARSE_BIG            0010  /* Use Big-endian domains, FLAG */
  81.  
  82. /*
  83. For use when getting indirect input
  84. */
  85.  
  86. struct ap_prevstruct
  87. {
  88.     FILE        *ap_curfp;            /* handle on current file input */
  89.     int         (*ap_prvgfunc) ();    /* getchar function for that input */
  90.     int         ap_opeek;             /* with this as peek-ahead char for it*/
  91.     int         ap_ogroup;            /* nesting level of group list */
  92.     int         ap_operson;           /* nesting level of personal list */
  93.     struct ap_prevstruct   *ap_next;
  94. };
  95.  
  96.  
  97.  
  98. extern  AP_ptr  ap_1delete();
  99. extern  AP_ptr  ap_add();
  100. extern  AP_ptr  ap_alloc();
  101. extern  AP_ptr  ap_append();
  102. extern  AP_ptr  ap_move();
  103. extern  AP_ptr  ap_new();
  104. extern  AP_ptr  ap_normalize();
  105. extern  AP_ptr  ap_pcur;
  106. extern  AP_ptr  ap_pinit();
  107. extern  AP_ptr  ap_pstrt;
  108. extern  AP_ptr  ap_s2t();
  109. extern  AP_ptr  ap_sqdelete();
  110. extern  AP_ptr  ap_sqinsert();
  111. extern  AP_ptr  ap_sqmove();
  112. extern  AP_ptr  ap_t2p();
  113. extern  AP_ptr  ap_t2s();
  114. extern  char    ap_llex;
  115. extern  char*   ap_dmflip();
  116. extern  char*   ap_p2s();
  117. extern    char*    ap_p2s_nc();
  118. extern  char*   ap_s2p();
  119. extern  int     ap_1adr();
  120. extern  int     ap_dmnormalize();
  121. extern  int     ap_flget();
  122. extern  int     ap_fpush();
  123. extern  int     ap_lex();
  124. extern  int     ap_ppush();
  125. extern    void    ap_7to8 ();
  126. extern    void    ap_ninit ();
  127. extern    void    ap_palloc ();
  128. extern    void    ap_pfill ();
  129. extern    void    ap_clear ();
  130. extern    void    ap_pappend ();
  131. extern    void    ap_sqtfix ();
  132. extern    void    ap_insert ();
  133. extern    void    ap_fllnode ();
  134. extern    void    ap_free ();
  135. extern    void    ap_iinit ();
  136. extern    void    ap_delete ();
  137. extern    void     ap_pnsrt ();
  138. extern    void    ap_val2str ();
  139. extern  void    ap_use_percent();
  140. #endif
  141.