annotate miscellany/less-177/main.c @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 * Entry point, initialization, miscellaneous routines.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 #include "less.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 #include "position.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 public int ispipe;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 public char * every_first_cmd = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 public int new_file;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 public int is_tty;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 public IFILE curr_ifile = NULL_IFILE;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 public IFILE old_ifile = NULL_IFILE;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 public struct scrpos initial_scrpos;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 public int any_display = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 public int scroll;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 public char * progname;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 public int quitting;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 extern int file;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 extern int quit_at_eof;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 extern int cbufs;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 extern int errmsgs;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 extern int screen_trashed;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 extern int force_open;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 #if LOGFILE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 public int logfile = -1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 public int force_logfile = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 public char * namelogfile = NULL;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 #if EDITOR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 public char * editor;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 public char * editproto;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 #if TAGS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 extern char * tagfile;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 extern char * tagpattern;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 extern int tagoption;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 * Entry point.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 main(argc, argv)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 int argc;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 char *argv[];
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 IFILE h;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 int nofiles;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55 extern char *getenv();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57 progname = *argv++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60 * Process command line arguments and LESS environment arguments.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 * Command line arguments override environment arguments.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 init_prompt();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 init_charset();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65 init_option();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 scan_option(getenv("LESS"));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 #define isoptstring(s) (((s)[0] == '-' || (s)[0] == '+') && (s)[1] != '\0')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 while (--argc > 0 && (isoptstring(argv[0]) || isoptpending()))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 scan_option(*argv++);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 #undef isoptstring
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 if (isoptpending())
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 * Last command line option was a flag requiring a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77 * following string, but there was no following string.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 nopendopt();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80 quit(0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 #if USERFILE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85 * Try to use the lesskey file "$HOME/.less".
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87 add_hometable();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 #if EDITOR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 editor = getenv("EDITOR");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91 if (editor == NULL || *editor == '\0')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 editor = EDIT_PGM;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 editproto = getenv("LESSEDIT");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 if (editproto == NULL || *editproto == '\0')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95 editproto = "%E ?lm+%lm. %f";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 * Set up terminal, etc.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101 is_tty = isatty(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102 if (!is_tty)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 * Output is not a tty.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 * Just copy the input file(s) to output.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108 if (argc <= 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110 if (edit("-", 0) == 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 cat_file();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 } else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114 while (--argc >= 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 if (edit(*argv++, 0) == 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
117 cat_file();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
118 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120 quit(0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 * Call get_ifile with all the command line filenames
bce86c4163a3 Initial revision
kono
parents:
diff changeset
125 * to "register" them with the ifile system.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
126 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 h = NULL_IFILE;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128 while (--argc >= 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129 h = get_ifile(*argv++, h);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131 init_mark();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132 raw_mode(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
133 get_term();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
134 open_getchr();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
135
bce86c4163a3 Initial revision
kono
parents:
diff changeset
136 init_signals(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
137
bce86c4163a3 Initial revision
kono
parents:
diff changeset
138 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
139 * Select the first file to examine.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
140 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
141 #if TAGS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
142 if (tagoption)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
143 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
144 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
145 * A -t option was given.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
146 * Verify that no filenames were also given.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
147 * Edit the file selected by the "tags" search,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
148 * and search for the proper line in the file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
149 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
150 if (nifile() > 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
151 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
152 error("No filenames allowed with -t option", NULL_PARG);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
153 quit(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
154 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
155 if (tagfile == NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
156 quit(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
157 if (edit(tagfile, 0) || tagsearch())
bce86c4163a3 Initial revision
kono
parents:
diff changeset
158 quit(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
159 nofiles = 0;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
160 } else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
161 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
162 if (nifile() == 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
163 nofiles = edit("-", 0); /* Standard input */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
164 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
165 nofiles = edit_first();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
166
bce86c4163a3 Initial revision
kono
parents:
diff changeset
167 if (nofiles)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
168 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
169 quit(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
170 /*NOTREACHED*/
bce86c4163a3 Initial revision
kono
parents:
diff changeset
171 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
172
bce86c4163a3 Initial revision
kono
parents:
diff changeset
173 init();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
174 commands();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
175 quit(0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
176 /*NOTREACHED*/
bce86c4163a3 Initial revision
kono
parents:
diff changeset
177 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
178
bce86c4163a3 Initial revision
kono
parents:
diff changeset
179 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
180 * Copy a string, truncating to the specified length if necessary.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
181 * Unlike strncpy(), the resulting string is guaranteed to be null-terminated.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
182 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
183 public void
bce86c4163a3 Initial revision
kono
parents:
diff changeset
184 strtcpy(to, from, len)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
185 char *to;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
186 char *from;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
187 unsigned int len;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
188 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
189 strncpy(to, from, len);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
190 to[len-1] = '\0';
bce86c4163a3 Initial revision
kono
parents:
diff changeset
191 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
192
bce86c4163a3 Initial revision
kono
parents:
diff changeset
193 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
194 * Copy a string to a "safe" place
bce86c4163a3 Initial revision
kono
parents:
diff changeset
195 * (that is, to a buffer allocated by calloc).
bce86c4163a3 Initial revision
kono
parents:
diff changeset
196 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
197 public char *
bce86c4163a3 Initial revision
kono
parents:
diff changeset
198 save(s)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
199 char *s;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
200 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
201 register char *p;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
202
bce86c4163a3 Initial revision
kono
parents:
diff changeset
203 p = (char *) ecalloc(strlen(s)+1, sizeof(char));
bce86c4163a3 Initial revision
kono
parents:
diff changeset
204 strcpy(p, s);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
205 return (p);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
206 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
207
bce86c4163a3 Initial revision
kono
parents:
diff changeset
208 public VOID_POINTER
bce86c4163a3 Initial revision
kono
parents:
diff changeset
209 ecalloc(count, size)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
210 int count;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
211 unsigned int size;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
212 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
213 register VOID_POINTER p;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
214
bce86c4163a3 Initial revision
kono
parents:
diff changeset
215 p = calloc(count, size);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
216 if (p != NULL)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
217 return (p);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
218 error("Cannot allocate memory", NULL_PARG);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
219 quit(1);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
220 /*NOTREACHED*/
bce86c4163a3 Initial revision
kono
parents:
diff changeset
221 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
222
bce86c4163a3 Initial revision
kono
parents:
diff changeset
223 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
224 * Skip leading spaces in a string.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
225 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
226 public char *
bce86c4163a3 Initial revision
kono
parents:
diff changeset
227 skipsp(s)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
228 register char *s;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
229 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
230 while (*s == ' ' || *s == '\t')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
231 s++;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
232 return (s);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
233 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
234
bce86c4163a3 Initial revision
kono
parents:
diff changeset
235 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
236 * Exit the program.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
237 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
238 public void
bce86c4163a3 Initial revision
kono
parents:
diff changeset
239 quit(status)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
240 int status;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
241 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
242 static int save_status;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
243
bce86c4163a3 Initial revision
kono
parents:
diff changeset
244 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
245 * Put cursor at bottom left corner, clear the line,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
246 * reset the terminal modes, and exit.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
247 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
248 if (status < 0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
249 status = save_status;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
250 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
251 save_status = status;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
252 quitting = 1;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
253 #if LOGFILE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
254 end_logfile();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
255 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
256 if (any_display)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
257 {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
258 lower_left();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
259 clear_eol();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
260 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
261 deinit();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
262 flush();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
263 raw_mode(0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
264 #if __MSDOS__
bce86c4163a3 Initial revision
kono
parents:
diff changeset
265 restore_screen();
bce86c4163a3 Initial revision
kono
parents:
diff changeset
266 /*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
267 * If we don't close 2, we get some garbage from
bce86c4163a3 Initial revision
kono
parents:
diff changeset
268 * 2's buffer when it flushes automatically.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
269 * I cannot track this one down RB
bce86c4163a3 Initial revision
kono
parents:
diff changeset
270 * The same bug shows up if we use ^C^C to abort.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
271 */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
272 close(2);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
273 #endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
274 exit(status);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
275 }