defs.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. /* defs 4.2 85/10/28 */
  2. #define _POSIX_SOURCE
  3. #define _RESEARCH_SOURCE
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <sys/types.h>
  7. #include <unistd.h>
  8. #include <signal.h>
  9. #include <time.h>
  10. #include <dirent.h>
  11. #include <limits.h>
  12. #include <stdio.h>
  13. #include <ctype.h>
  14. #ifndef SHELLCOM
  15. #define SHELLCOM "/bin/sh"
  16. #endif
  17. typedef char flag; /* represent a few bit flag */
  18. #define NO 0
  19. #define YES 1
  20. #define equal(a,b) (! strcmp(a,b))
  21. #define HASHSIZE 1021
  22. #define NLEFTS 512
  23. #define NCHARS 500
  24. #define NINTS 250
  25. #define INMAX 20000
  26. #define OUTMAX 20000
  27. #define QBUFMAX 20000
  28. #define MAXDIR 10
  29. #define MAXPROC 100
  30. #define MAXINCLUDE 17
  31. #define PROCLIMIT 3
  32. #define ALLDEPS 1
  33. #define SOMEDEPS 2
  34. #define META 01
  35. #define TERMINAL 02
  36. extern char funny[128];
  37. #define ALLOC(x) (struct x *) ckalloc(sizeof(struct x))
  38. #define CHNULL (char *) NULL
  39. extern int sigivalue;
  40. extern int sigqvalue;
  41. extern int dbgflag;
  42. extern int prtrflag;
  43. extern int silflag;
  44. extern int noexflag;
  45. extern int keepgoing;
  46. extern int noruleflag;
  47. extern int touchflag;
  48. extern int questflag;
  49. extern int oldflag;
  50. extern int ndocoms;
  51. extern int ignerr;
  52. extern int okdel;
  53. extern int forceshell;
  54. extern int inarglist;
  55. extern char **envpp; /* points to slot in environment vector */
  56. extern char *prompt;
  57. extern int nopdir;
  58. typedef struct nameblock *nameblkp;
  59. typedef struct depblock *depblkp;
  60. typedef struct lineblock *lineblkp;
  61. typedef struct chain *chainp;
  62. struct nameblock
  63. {
  64. nameblkp nxtnameblock;
  65. char *namep;
  66. lineblkp linep;
  67. flag done;
  68. flag septype;
  69. flag isarch;
  70. flag isdir;
  71. time_t modtime;
  72. };
  73. extern nameblkp mainname;
  74. extern nameblkp firstname;
  75. extern nameblkp *hashtab;
  76. extern int nhashed;
  77. extern int hashsize;
  78. extern int hashthresh;
  79. struct lineblock
  80. {
  81. lineblkp nxtlineblock;
  82. struct depblock *depp;
  83. struct shblock *shp;
  84. };
  85. extern lineblkp sufflist;
  86. struct depblock
  87. {
  88. depblkp nxtdepblock;
  89. nameblkp depname;
  90. char nowait;
  91. } ;
  92. struct shblock
  93. {
  94. struct shblock *nxtshblock;
  95. char *shbp;
  96. };
  97. struct varblock
  98. {
  99. struct varblock *nxtvarblock;
  100. char *varname;
  101. char *varval;
  102. char **export;
  103. flag noreset;
  104. flag used;
  105. };
  106. extern struct varblock *firstvar;
  107. struct pattern
  108. {
  109. struct pattern *nxtpattern;
  110. char *patval;
  111. };
  112. extern struct pattern *firstpat;
  113. struct dirhd
  114. {
  115. struct dirhd *nxtdirhd;
  116. time_t dirtime;
  117. int dirok;
  118. DIR * dirfc;
  119. char *dirn;
  120. };
  121. extern struct dirhd *firstod;
  122. struct chain
  123. {
  124. chainp nextp;
  125. char *datap;
  126. };
  127. struct wild
  128. {
  129. struct wild *next;
  130. lineblkp linep;
  131. char *left;
  132. char *right;
  133. int llen;
  134. int rlen;
  135. int totlen;
  136. };
  137. typedef struct wild *wildp;
  138. extern wildp firstwild;
  139. extern wildp lastwild;
  140. /* date for processes */
  141. extern int proclimit; /* maximum spawned processes allowed alive at one time */
  142. extern int proclive; /* number of spawned processes awaited */
  143. extern int nproc; /* next slot in process stack to use */
  144. extern struct process
  145. {
  146. int pid;
  147. flag nohalt;
  148. flag nowait;
  149. flag done;
  150. } procstack[ ];
  151. extern void intrupt(int);
  152. extern void enbint(void (*)(int));
  153. extern int doname(nameblkp, int, time_t *, int);
  154. extern int docom(struct shblock *, int, int);
  155. extern int dosys(char *, int, int, char *);
  156. extern int waitstack(int);
  157. extern void touch(int, char*);
  158. extern time_t exists(char *);
  159. extern time_t prestime(void);
  160. extern depblkp srchdir(char*, int, depblkp);
  161. extern time_t lookarch(char *);
  162. extern void dirsrch(char *);
  163. extern void baddirs(void);
  164. extern nameblkp srchname(char *);
  165. extern nameblkp makename(char *);
  166. extern int hasparen(char *);
  167. extern void newhash(int);
  168. extern nameblkp chkname(char *);
  169. extern char *copys(char *);
  170. extern char *concat(char *, char *, char *);
  171. extern int suffix(char *, char *, char *);
  172. extern int *ckalloc(int);
  173. extern char *subst(char *, char *);
  174. extern void setvar(char *, char *, int);
  175. extern void set3var(char *, char *);
  176. extern int eqsign(char *);
  177. extern struct varblock *varptr(char *);
  178. extern int dynmacro(char *);
  179. extern void fatal1(char *, char *);
  180. extern void fatal(char *);
  181. extern chainp appendq(chainp, char *);
  182. extern char *mkqlist(chainp, char *);
  183. extern wildp iswild(char *);
  184. extern char *wildmatch(wildp, char *, int);
  185. extern char *wildsub(char *, char *);
  186. extern int parse(char *);
  187. extern int yylex(void);