1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#include <stdio.h>
#if (__STDC__ || __cplusplus || c_plusplus)
#include <stdlib.h>
#endif /* (__STDC__ || __cplusplus || c_plusplus) */
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#if !__NeXT__
#include <unistd.h>
#include <malloc.h>
#endif /* !__NeXT__ */
#if (__STDC__ || __cplusplus || c_plusplus)
#define VOID void
#else /* NOT (__STDC__ || __cplusplus || c_plusplus) */
#define VOID
#endif /* (__STDC__ || __cplusplus || c_plusplus) */
#undef bcopy
#define bcopy(source,target,length) \
memcpy((char*)(target),(const char*)(source),length)
#if sun
#if __cplusplus
extern "C" int _filbuf(FILE *); /* missing from stdio.h */
#if !__GNUC__
int _flsbuf(unsigned char,FILE *); /* missing from stdio.h */
#endif /* !__GNUC__ */
extern "C" int _flsbuf(unsigned int, FILE *); /* missing from stdio.h */
extern "C" char *tempnam(const char *, const char *);
/* not defined by acc's stdio.h */
extern "C" int waitpid(int, int *, int); /* not defined by any Sun .h file */
#else /* NOT __cplusplus */
int _filbuf(FILE *); /* missing from stdio.h */
#if !__GNUC__
int _flsbuf(unsigned char,FILE *); /* missing from stdio.h */
#endif /* !__GNUC__ */
char *tempnam(const char *, const char *); /* not defined by acc's stdio.h */
int waitpid(int, int *, int); /* not defined by any Sun .h file */
#endif /* __cplusplus */
#endif /* sun */
#if DEBUG_MALLOC
/* For dynamic memory debugging. */
/* Note that the parens around free and malloc */
/* are essential to prevent macro expansion in */
/* ANSI/ISO Standard C and C++. Erroneous */
/* preprocessors will go into an infinite loop */
/* (e.g. SunOS /usr/CC/sun4/cpp) */
#if sun
int malloc_debug(int level);
int malloc_verify(void);
#else /* NOT sun */
#define malloc_debug(level) level
#define malloc_verify() 1
#endif /* sun */
#undef free
#undef malloc
#define free(ptr) (malloc_verify(), \
fprintf(stderr,"line %d: free(%p)\n",(int)__LINE__,(ptr)), \
(free)(ptr))
static void *p__; /* for malloc() debugging */
#define malloc(s) (malloc_verify(),\
p__ = (malloc)(s),\
fprintf(stderr,"line %d: malloc(%ld) -> %p\n",\
(int)__LINE__,(s),(p__)),\
p__)
#endif /* DEBUG_MALLOC */
#if __NeXT__
static char* p__;
static char* q__;
/* NB: This is not a general definition of tempnam(), but works for
this program! */
#define tempnam(dir,pfx) (p__ = tmpnam((char*)NULL), \
q__ = malloc(strlen(p__)+1), \
strcpy(q__,p__))
#include <libc.h> /* for struct rusage definition */
#define waitpid(pid, statusp, options) wait4((pid), (statusp), (options),\
(struct rusage*)0)
#endif /* __NeXT__ */
#if ardent
/* Stardent has only simple wait-for-all-children function, sigh... */
#define waitpid(pid, statusp, options) wait((int*)0)
char *getenv(const char *name); /* missing from system header files */
#endif
#if __hppa
#include <sys/wait.h>
#endif /* __hppa */
#if __sgi
#include <sys/wait.h>
#endif /* __sgi */
#define FILE_VERSION 2 /* file format version */
#define MAJOR_VERSION 2 /* program version */
#define MINOR_VERSION 4
#define MAXWORD 31 /* maximum length of word indexed */
typedef char Word[MAXWORD+1];
typedef unsigned short Index_t;
#define INDEX_NAN 65535 /* maximum value representable as Index_t */
#define BADWORDS { /* words not to index */ \
"an", "and", "for", "in", "of", "on", "the", "to", "with", 0 \
}
#define NONABBREV ",\n\t \"#%'()={}" /* See LaTeX book, p.143 */
|