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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
--- a/glob.h
+++ b/glob.h
@@ -37,48 +37,48 @@
* A bunch of global variable declarations lie herein.
* def.h must be included first.
*/
-int msgCount; /* Count of messages read in */
-int rcvmode; /* True if receiving mail */
-int sawcom; /* Set after first command */
-int senderr; /* An error while checking */
-int edit; /* Indicates editing a file */
-int readonly; /* Will be unable to rewrite file */
-int noreset; /* String resets suspended */
-int sourcing; /* Currently reading variant file */
-int loading; /* Loading user definitions */
-int cond; /* Current state of conditional exc. */
-FILE *itf; /* Input temp file buffer */
-FILE *otf; /* Output temp file buffer */
-int image; /* File descriptor for image of msg */
-FILE *input; /* Current command input file */
-char mailname[PATHSIZE]; /* Name of current file */
-char prevfile[PATHSIZE]; /* Name of previous file */
-char *homedir; /* Path name of home directory */
-char *myname; /* My login name */
-off_t mailsize; /* Size of system mailbox */
-int lexnumber; /* Number of TNUMBER from scan() */
-char lexstring[STRINGLEN]; /* String from TSTRING, scan() */
-int regretp; /* Pointer to TOS of regret tokens */
-int regretstack[REGDEP]; /* Stack of regretted tokens */
-char *string_stack[REGDEP]; /* Stack of regretted strings */
-int numberstack[REGDEP]; /* Stack of regretted numbers */
-struct message *dot; /* Pointer to current message */
-struct message *message; /* The actual message structure */
-struct var *variables[HSHSIZE]; /* Pointer to active var list */
-struct grouphead *groups[HSHSIZE];/* Pointer to active groups */
-struct ignoretab ignore[2]; /* ignored and retained fields
- 0 is ignore, 1 is retain */
-struct ignoretab saveignore[2]; /* ignored and retained fields
- on save to folder */
-struct ignoretab ignoreall[2]; /* special, ignore all headers */
-char **altnames; /* List of alternate names for user */
-int debug; /* Debug flag set */
-int screenwidth; /* Screen width, or best guess */
-int screenheight; /* Screen height, or best guess,
- for "header" command */
-int realscreenheight; /* the real screen height */
-int uflag; /* Are we in -u mode? */
-sigset_t intset; /* Signal set that is just SIGINT */
+extern int msgCount; /* Count of messages read in */
+extern int rcvmode; /* True if receiving mail */
+extern int sawcom; /* Set after first command */
+extern int senderr; /* An error while checking */
+extern int edit; /* Indicates editing a file */
+extern int readonly; /* Will be unable to rewrite file */
+extern int noreset; /* String resets suspended */
+extern int sourcing; /* Currently reading variant file */
+extern int loading; /* Loading user definitions */
+extern int cond; /* Current state of conditional exc. */
+extern FILE *itf; /* Input temp file buffer */
+extern FILE *otf; /* Output temp file buffer */
+extern int image; /* File descriptor for image of msg */
+extern FILE *input; /* Current command input file */
+extern char mailname[PATHSIZE]; /* Name of current file */
+extern char prevfile[PATHSIZE]; /* Name of previous file */
+extern char *homedir; /* Path name of home directory */
+extern char *myname; /* My login name */
+extern off_t mailsize; /* Size of system mailbox */
+extern int lexnumber; /* Number of TNUMBER from scan() */
+extern char lexstring[STRINGLEN]; /* String from TSTRING, scan() */
+extern int regretp; /* Pointer to TOS of regret tokens */
+extern int regretstack[REGDEP]; /* Stack of regretted tokens */
+extern char *string_stack[REGDEP]; /* Stack of regretted strings */
+extern int numberstack[REGDEP]; /* Stack of regretted numbers */
+extern struct message *dot; /* Pointer to current message */
+extern struct message *message; /* The actual message structure */
+extern struct var *variables[HSHSIZE]; /* Pointer to active var list */
+extern struct grouphead *groups[HSHSIZE];/* Pointer to active groups */
+extern struct ignoretab ignore[2]; /* ignored and retained fields
+ 0 is ignore, 1 is retain */
+extern struct ignoretab saveignore[2]; /* ignored and retained fields
+ on save to folder */
+extern struct ignoretab ignoreall[2]; /* special, ignore all headers */
+extern char **altnames; /* List of alternate names for user */
+extern int debug; /* Debug flag set */
+extern int screenwidth; /* Screen width, or best guess */
+extern int screenheight; /* Screen height, or best guess,
+ for "header" command */
+extern int realscreenheight; /* the real screen height */
+extern int uflag; /* Are we in -u mode? */
+extern sigset_t intset; /* Signal set that is just SIGINT */
/*
* The pointers for the string allocation routines,
@@ -87,7 +87,7 @@
* twice as much, and so on.
*/
#define NSPACE 25 /* Total number of string spaces */
-struct strings {
+extern struct strings {
char *s_topFree; /* Beginning of this area */
char *s_nextFree; /* Next alloctable place here */
unsigned s_nleft; /* Number of bytes left here */
--- a/main.c
+++ b/main.c
@@ -36,6 +36,51 @@
#include "extern.h"
#include <locale.h>
+int msgCount; /* Count of messages read in */
+int rcvmode; /* True if receiving mail */
+int sawcom; /* Set after first command */
+int senderr; /* An error while checking */
+int edit; /* Indicates editing a file */
+int readonly; /* Will be unable to rewrite file */
+int noreset; /* String resets suspended */
+int sourcing; /* Currently reading variant file */
+int loading; /* Loading user definitions */
+int cond; /* Current state of conditional exc. */
+FILE *itf; /* Input temp file buffer */
+FILE *otf; /* Output temp file buffer */
+int image; /* File descriptor for image of msg */
+FILE *input; /* Current command input file */
+char mailname[PATHSIZE]; /* Name of current file */
+char prevfile[PATHSIZE]; /* Name of previous file */
+char *homedir; /* Path name of home directory */
+char *myname; /* My login name */
+off_t mailsize; /* Size of system mailbox */
+int lexnumber; /* Number of TNUMBER from scan() */
+char lexstring[STRINGLEN]; /* String from TSTRING, scan() */
+int regretp; /* Pointer to TOS of regret tokens */
+int regretstack[REGDEP]; /* Stack of regretted tokens */
+char *string_stack[REGDEP]; /* Stack of regretted strings */
+int numberstack[REGDEP]; /* Stack of regretted numbers */
+struct message *dot; /* Pointer to current message */
+struct message *message; /* The actual message structure */
+struct var *variables[HSHSIZE]; /* Pointer to active var list */
+struct grouphead *groups[HSHSIZE];/* Pointer to active groups */
+struct ignoretab ignore[2]; /* ignored and retained fields
+ 0 is ignore, 1 is retain */
+struct ignoretab saveignore[2]; /* ignored and retained fields
+ on save to folder */
+struct ignoretab ignoreall[2]; /* special, ignore all headers */
+char **altnames; /* List of alternate names for user */
+int debug; /* Debug flag set */
+int screenwidth; /* Screen width, or best guess */
+int screenheight; /* Screen height, or best guess,
+ for "header" command */
+int realscreenheight; /* the real screen height */
+int uflag; /* Are we in -u mode? */
+sigset_t intset; /* Signal set that is just SIGINT */
+
+struct strings stringdope[NSPACE];
+
static void usage(void);
int main(int, char **);
|