defs.h 4.2 KB

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