home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mm / mm-0.90 / parse.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-18  |  3.3 KB  |  123 lines

  1. /*
  2.  * Copyright (c) 1986, 1990 by The Trustees of Columbia University in
  3.  * the City of New York.  Permission is granted to any individual or
  4.  * institution to use, copy, or redistribute this software so long as it
  5.  * is not sold for profit, provided this copyright notice is retained.
  6.  */
  7.  
  8. #ifdef RCSID
  9. #ifndef lint
  10. static char *parse_rcsid = "$Header: /f/src2/encore.bin/cucca/mm/tarring-it-up/RCS/parse.h,v 2.1 90/10/04 18:25:26 melissa Exp $";
  11. #endif
  12. #endif /* RCSID */
  13.  
  14. /*
  15.  * parse.h - various definitions needed by modules which do command parsing
  16.  */
  17.  
  18. #include "ccmd.h"
  19.  
  20. /*
  21.  * cmseter() and cmsetrp() are redefined to return non-zero whenever the
  22.  * associated longjmps have been taken, making them a little more useful.
  23.  * also, a the error handler for hard errors is redefined so we can catch
  24.  * EOF specially -- cmseteof() must be called at a higher-level than the
  25.  * first call to cmseter!
  26.  */
  27.  
  28. extern int ccmd_error();
  29.  
  30. #undef cmseter
  31. #define cmseter() \
  32.   ((cmcsb._cmerh = ccmd_error), setjmp(cmerjb))
  33.  
  34. #undef cmsetrp
  35. #define cmsetrp() \
  36.   ((cmcsb._cmrph = cmrpjmp), setjmp(cmrpjb))
  37.  
  38. /*
  39.  * cmseteof() must be called before cmseter(), since we replace ccmd's
  40.  * default error handler with our own, and ours does a longjmp through
  41.  * eofjmpb when EOF is encountered.
  42.  */
  43. extern jmp_buf eofjmpb;
  44. #define cmseteof() \
  45.   setjmp(eofjmpb)
  46.  
  47. /* global variables declared in mm.c */
  48. extern pval pv;
  49. extern fdb *used;
  50. extern buffer atmbuf;
  51.  
  52. /* function descriptor blocks declared in cmds.c */
  53. extern fdb mm_top_fdb_abbr, mm_top_fdb_inv, mm_top_fdb_1, mm_top_fdb_2, 
  54.   mm_top_fdb_3, mm_top_fdb_4, mm_top_fdb_5, mm_top_fdb_6, mm_top_fdb_7, 
  55.   mm_send_fdb_abbr, mm_send_fdb_inv, mm_send_fdb_1, mm_send_fdb_2, 
  56.   mm_send_fdb_3, mm_send_fdb_4, mm_send_fdb_5, 
  57.   mm_read_fdb_abbr, mm_read_fdb_inv, mm_read_fdb_1, mm_read_fdb_2, 
  58.   mm_read_fdb_3, mm_read_fdb_4, mm_read_fdb_5, mm_read_fdb_6, mm_read_fdb_7, 
  59.   hdr_cmd_fdb, disp_cmd_fdb, erase_cmd_fdb, reply_to_fdb, include_fdb;
  60.  
  61. /* fdbs declared in set.c */
  62. extern fdb set_cmd_fdb;
  63.  
  64. /* fdbs declared in parse.c */
  65. extern fdb shell_fdb, cfm_fdb;
  66.  
  67. /* fdbs declared in seq.c */
  68. extern fdb seq_fdb;
  69.  
  70. /* fdbs declared in parsemsg.c */
  71. extern fdb header_fbd;
  72.  
  73. /*
  74.  * routines declared in parse.c
  75.  */
  76.  
  77. time_t p_date(), key2time();
  78. int try_parse (), cmargs (), yesno (), p_num (), pop_input ();
  79. void noise (), confirm (), confirmit (), cmerr (), stack_input ();
  80. void brkch (), unbrk ();
  81. char *parse_text (), *parse_quoted (), *parse_directory (),
  82.     *parse_input_file (), *parse_output_file (), *parse_username (),
  83.     *parse_keyword (), **parse_keylist ();
  84.  
  85. /*
  86.  * other external declarations
  87.  */
  88.  
  89. extern int (*mm_cmds[])();
  90.  
  91. /*
  92.  * some useful macros
  93.  */
  94.  
  95. #define interactive    (cmcsb._cmflg | CM_TTY)
  96.  
  97. /* save_parse_context
  98.  *
  99.  * this macro must be invoked as the last storage declaration in the
  100.  * enclosing procedure; it declares and initializes jmp_bufs used to save
  101.  * the caller's parsing context, so restore_parse_context() can restore
  102.  * them before returning
  103.  */
  104.  
  105. #define save_parse_context() \
  106.     jmp_buf erhjmp, rphjmp; \
  107.     bcopy(cmerjb,erhjmp,sizeof(erhjmp)), bcopy(cmrpjb,rphjmp,sizeof(rphjmp))
  108.  
  109. #define restore_parse_context() \
  110.     bcopy(erhjmp,cmerjb,sizeof(erhjmp)), bcopy(rphjmp,cmrpjb,sizeof(rphjmp))
  111.  
  112. extern keytab formattab;
  113.  
  114. typedef struct setkey {
  115.     keytab *keytab;
  116.     string current;
  117. } setkey;
  118.  
  119. extern setkey default_mail_type;
  120.  
  121. #define NOVICE 0
  122. #define EXPERT 1
  123.