home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume17 / e2 / part02 / e.h < prev    next >
C/C++ Source or Header  |  1989-02-08  |  5KB  |  238 lines

  1. /*
  2.  * e.h 
  3.  * version 1.3
  4.  *
  5.  * Terry Jones, Department of Computer Science, University of Waterloo
  6.  *              Waterloo Ontario Canada N2L 3G1
  7.  * {ihnp4,allegra,decvax,utzoo,utcsri,clyde}!watmath!watdragon!tcjones
  8.  * tcjones@dragon.waterloo.{cdn,edu} tcjones@WATER.bitnet
  9.  * tcjones%watdragon@waterloo.csnet 
  10.  *
  11.  */
  12.  
  13.  
  14. #ifdef Bsd
  15. #   include <stdio.h>
  16. #   include <sys/types.h>
  17. #   include <sys/stat.h>
  18. #   include <signal.h>
  19. #   include <sys/param.h>
  20. #   include <pwd.h>
  21. #   include <ctype.h>
  22. #   include <sysexits.h>
  23. #   include <sys/file.h>
  24. #   include <sys/dir.h>
  25. #   include <strings.h>
  26. #   include <sys/ioctl.h>
  27. #   define VI "/usr/ucb/vi"
  28.     uid_t getuid();
  29.     uid_t getgid();
  30. #endif /* Bsd */
  31.  
  32.  
  33. #ifdef Sun
  34. #   include <stdio.h>
  35. #   include <sys/types.h>
  36. #   include <sys/stat.h>
  37. #   include <signal.h>
  38. #   include <sys/param.h>
  39. #   include <pwd.h>
  40. #   include <ctype.h>
  41. #   include <sysexits.h>
  42. #   include <sys/file.h>
  43. #   include <sys/dir.h>
  44. #   include <strings.h>
  45. #   include <sys/time.h>
  46. #   include <sys/vnode.h>
  47. #   include <ufs/inode.h>
  48. #   include <sgtty.h>
  49. #   define VI "/usr/ucb/vi"
  50.     extern char *sprintf();
  51. #endif /* Sun */
  52.  
  53.  
  54. #ifdef Sysv
  55. #   include <stdio.h>
  56. #   include <sys/types.h>
  57. #   include <sys/stat.h>
  58. #   include <signal.h>
  59. #   include <sys/param.h>
  60. #   include <pwd.h>
  61. #   include <ctype.h>
  62. #   include <sys/file.h>
  63. #   include <termio.h>
  64. #   include <string.h>
  65. #   include <fcntl.h>
  66. #   include <dirent.h>
  67. #   include <sys/dir.h>
  68. #   define index strchr
  69. #   define rindex strrchr
  70. #   define direct dirent
  71. #   define MAXPATHLEN MAXNAMLEN
  72. #   define ok_sprintf sprintf
  73. #   define VI "/usr/bin/vi"
  74.     extern struct passwd *getpwuid();
  75. #endif /* Sysv */
  76.  
  77.  
  78. #ifdef Ultrix
  79. #   include <stdio.h>
  80. #   include <sys/types.h>
  81. #   include <sys/stat.h>
  82. #   include <signal.h>
  83. #   include <sys/param.h>
  84. #   include <pwd.h>
  85. #   include <ctype.h>
  86. #   include <sysexits.h>
  87. #   include <sys/file.h>
  88. #   include <sys/dir.h>
  89. #   include <strings.h>
  90. #   include <sys/ioctl.h>
  91. #   define VI "/usr/ucb/vi"
  92. #endif /* Ultrix */
  93.  
  94.  
  95. #ifdef Dynix
  96. #   include <stdio.h>
  97. #   include <sys/types.h>
  98. #   include <sys/stat.h>
  99. #   include <signal.h>
  100. #   include <sys/param.h>
  101. #   include <pwd.h>
  102. #   include <ctype.h>
  103. #   include <sys/dir.h>
  104. #   include <sys/ioctl.h>
  105. #   include <strings.h>
  106. #   define VI "/usr/ucb/vi"
  107. #endif /* Dynix */
  108.  
  109. #ifdef waterloo
  110. #   include <stdlib.h>
  111. #endif
  112.  
  113. /*
  114.  * Other checks...
  115.  *
  116.  */
  117.  
  118. #ifndef IREAD
  119. #   define IREAD    0400
  120. #endif
  121.  
  122. #ifndef EX_IOERR
  123. #   define EX_IOERR 1
  124. #endif
  125.  
  126.  
  127. /*
  128.  * Things that aren't portability concerns.
  129.  *
  130.  */
  131.  
  132. #define DEFAULT_HIST    ".e"
  133. #define HIST_LINES      9
  134. #define HIST_CHARS      1024
  135. #define E_PATH          "VIPATH"
  136. #define E_HIST          "VIHIST"
  137. #define E_INHERIT       "VIINHERIT"
  138. #define E_SAFE_INHERIT  "VISAFEINHERIT"
  139. #define E_PATH_LEN      2048
  140. #define ARG_CHARS       4096
  141. #define MAX_ARGS        100
  142. #define O_READ          00004
  143. #define G_READ          0004
  144. #define TERM_RECORD     0
  145. #define TERM_SET        1
  146. #define TERM_RESET      2
  147. #define VERSION         "1.3"
  148.  
  149. /*
  150.  * STRUCT_ASST should be defined if your cc can handle structural assignments. 
  151.  *
  152.  * This is only used in the function terminal(). Leave STRUCT_ASST
  153.  * defined and if it doesn't break you're ok. If it does, undefine it and
  154.  * you'll definitely be ok (but things will run slower - even though you
  155.  * wont notice it.) Words words words. Ho hum.
  156.  *
  157.  */
  158.  
  159. #define STRUCT_ASST
  160.  
  161.  
  162. int char_in();
  163. int check();
  164. int clean_up();
  165. int dir_check();
  166. int match();
  167. int read_hist();
  168. int safety_first();
  169. int sp_dist();
  170. int spell_help();
  171. void abandon();
  172. void ask_hist();
  173. void catch_signals();
  174. void check_hist();
  175. void dir_find();
  176. void do_vi();
  177. void e();
  178. void e_error();
  179. void find();
  180. void find_hist();
  181. void find_match();
  182. void get_temp();
  183. void inheritance();
  184. void insert_cmd();
  185. void multiple();
  186. void new_vi();
  187. void normal();
  188. void nth_hist();
  189. void ok_fprintf();
  190. void ok_sprintf();
  191. void reconstruct();
  192. void terminal();
  193.  
  194.  
  195. extern char *getenv();
  196. extern char *mktemp();
  197. extern char *sbrk();
  198. #ifndef Sysv
  199.     extern char *getwd();
  200.     void ok_sprintf();
  201. #endif
  202.  
  203. extern FILE *hist_fp;
  204. extern FILE *tmp_fp;
  205. extern char *hist[];
  206. extern char *home;
  207. extern char *myname;
  208. extern char *saved_line;
  209. extern char arg[];
  210. extern char cwd[];
  211. extern char ehist[];
  212. extern char erase;
  213. extern char tmp_file[];
  214. extern int emode;
  215. extern int hist_count;
  216. extern int inherit;
  217. extern int safe_inherit;
  218. extern int uid;
  219.  
  220.  
  221. /* 
  222.  * Walk over white space. 
  223.  *
  224.  */
  225. #define skip_white(c) while (*(c) == ' ' || *(c) == '\t') (c)++;
  226.  
  227. /* 
  228.  * Walk over non-white characters. 
  229.  *
  230.  */
  231. #define skip_to_white(c) while (*(c) && *(c) != ' ' && *(c) != '\t') (c)++;
  232.  
  233. /* 
  234.  * Run down a string and zap the newline if we find one. 
  235.  *
  236.  */
  237. #define zap_nl(c) while (*(c) && *(c) != '\n') (c)++; *(c) = '\0';
  238.