xref: /minix3/usr.bin/mail/extern.h (revision 5ae330e220636de2b9caa5a69c059adc48b46444)
1*5ae330e2SDavid van Moolenbroek /*	$NetBSD: extern.h,v 1.33 2014/12/16 19:30:24 christos Exp $	*/
2*5ae330e2SDavid van Moolenbroek 
3*5ae330e2SDavid van Moolenbroek /*-
4*5ae330e2SDavid van Moolenbroek  * Copyright (c) 1992, 1993
5*5ae330e2SDavid van Moolenbroek  *	The Regents of the University of California.  All rights reserved.
6*5ae330e2SDavid van Moolenbroek  *
7*5ae330e2SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
8*5ae330e2SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
9*5ae330e2SDavid van Moolenbroek  * are met:
10*5ae330e2SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
11*5ae330e2SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer.
12*5ae330e2SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce the above copyright
13*5ae330e2SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer in the
14*5ae330e2SDavid van Moolenbroek  *    documentation and/or other materials provided with the distribution.
15*5ae330e2SDavid van Moolenbroek  * 3. Neither the name of the University nor the names of its contributors
16*5ae330e2SDavid van Moolenbroek  *    may be used to endorse or promote products derived from this software
17*5ae330e2SDavid van Moolenbroek  *    without specific prior written permission.
18*5ae330e2SDavid van Moolenbroek  *
19*5ae330e2SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20*5ae330e2SDavid van Moolenbroek  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*5ae330e2SDavid van Moolenbroek  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*5ae330e2SDavid van Moolenbroek  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23*5ae330e2SDavid van Moolenbroek  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24*5ae330e2SDavid van Moolenbroek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25*5ae330e2SDavid van Moolenbroek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26*5ae330e2SDavid van Moolenbroek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27*5ae330e2SDavid van Moolenbroek  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28*5ae330e2SDavid van Moolenbroek  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29*5ae330e2SDavid van Moolenbroek  * SUCH DAMAGE.
30*5ae330e2SDavid van Moolenbroek  *
31*5ae330e2SDavid van Moolenbroek  *	@(#)extern.h	8.2 (Berkeley) 4/20/95
32*5ae330e2SDavid van Moolenbroek  *	$NetBSD: extern.h,v 1.33 2014/12/16 19:30:24 christos Exp $
33*5ae330e2SDavid van Moolenbroek  */
34*5ae330e2SDavid van Moolenbroek 
35*5ae330e2SDavid van Moolenbroek #ifndef __EXTERN_H__
36*5ae330e2SDavid van Moolenbroek #define __EXTERN_H__
37*5ae330e2SDavid van Moolenbroek 
38*5ae330e2SDavid van Moolenbroek /*
39*5ae330e2SDavid van Moolenbroek  * from cmd1.c
40*5ae330e2SDavid van Moolenbroek  */
41*5ae330e2SDavid van Moolenbroek int	More(void *);
42*5ae330e2SDavid van Moolenbroek int	Type(void *);
43*5ae330e2SDavid van Moolenbroek int	folders(void *);
44*5ae330e2SDavid van Moolenbroek int	from(void *);
45*5ae330e2SDavid van Moolenbroek int	headers(void *);
46*5ae330e2SDavid van Moolenbroek int	inc(void *);
47*5ae330e2SDavid van Moolenbroek int	mboxit(void *);
48*5ae330e2SDavid van Moolenbroek int	more(void *);
49*5ae330e2SDavid van Moolenbroek int	pcmdlist(void *);
50*5ae330e2SDavid van Moolenbroek int	pdot(void *);
51*5ae330e2SDavid van Moolenbroek int	pipecmd(void *);
52*5ae330e2SDavid van Moolenbroek int	scroll(void *);
53*5ae330e2SDavid van Moolenbroek int	stouch(void *);
54*5ae330e2SDavid van Moolenbroek int	top(void *);
55*5ae330e2SDavid van Moolenbroek int	type(void *);
56*5ae330e2SDavid van Moolenbroek #ifdef MIME_SUPPORT
57*5ae330e2SDavid van Moolenbroek int	page(void *);
58*5ae330e2SDavid van Moolenbroek int	Page(void *);
59*5ae330e2SDavid van Moolenbroek int	print(void *);
60*5ae330e2SDavid van Moolenbroek int	Print(void *);
61*5ae330e2SDavid van Moolenbroek int	view(void *);
62*5ae330e2SDavid van Moolenbroek int	View(void *);
63*5ae330e2SDavid van Moolenbroek #endif
64*5ae330e2SDavid van Moolenbroek /* XXX - should these be elsewhere? */
65*5ae330e2SDavid van Moolenbroek void	printhead(int);
66*5ae330e2SDavid van Moolenbroek char *	sget_msgnum(struct message *, struct message *);
67*5ae330e2SDavid van Moolenbroek void	show_msgnum(FILE *, struct message *, struct message *);
68*5ae330e2SDavid van Moolenbroek 
69*5ae330e2SDavid van Moolenbroek /*
70*5ae330e2SDavid van Moolenbroek  * from cmd2.c
71*5ae330e2SDavid van Moolenbroek  */
72*5ae330e2SDavid van Moolenbroek int	Detach(void *);
73*5ae330e2SDavid van Moolenbroek int	Save(void *);
74*5ae330e2SDavid van Moolenbroek int	clobber(void *);
75*5ae330e2SDavid van Moolenbroek int	copycmd(void *);
76*5ae330e2SDavid van Moolenbroek int	core(void *);
77*5ae330e2SDavid van Moolenbroek int	delete(void *);
78*5ae330e2SDavid van Moolenbroek int	deltype(void *);
79*5ae330e2SDavid van Moolenbroek int	detach(void *);
80*5ae330e2SDavid van Moolenbroek int	igfield(void *);
81*5ae330e2SDavid van Moolenbroek int	next(void *);
82*5ae330e2SDavid van Moolenbroek int	retfield(void *);
83*5ae330e2SDavid van Moolenbroek int	save(void *);
84*5ae330e2SDavid van Moolenbroek int	saveigfield(void *);
85*5ae330e2SDavid van Moolenbroek int	saveretfield(void *);
86*5ae330e2SDavid van Moolenbroek int	swrite(void *);
87*5ae330e2SDavid van Moolenbroek int	undeletecmd(void *);
88*5ae330e2SDavid van Moolenbroek 
89*5ae330e2SDavid van Moolenbroek /*
90*5ae330e2SDavid van Moolenbroek  * from cmd3.c
91*5ae330e2SDavid van Moolenbroek  */
92*5ae330e2SDavid van Moolenbroek int	Respond(void *);
93*5ae330e2SDavid van Moolenbroek int	alternates(void *);
94*5ae330e2SDavid van Moolenbroek int	bounce(void *);
95*5ae330e2SDavid van Moolenbroek int	dosh(void *);
96*5ae330e2SDavid van Moolenbroek int	echo(void *);
97*5ae330e2SDavid van Moolenbroek int	elsecmd(void *);
98*5ae330e2SDavid van Moolenbroek int	endifcmd(void *);
99*5ae330e2SDavid van Moolenbroek int	file(void *);
100*5ae330e2SDavid van Moolenbroek int	bounce(void *);
101*5ae330e2SDavid van Moolenbroek int	forward(void *);
102*5ae330e2SDavid van Moolenbroek int	group(void *);
103*5ae330e2SDavid van Moolenbroek int	help(void *);
104*5ae330e2SDavid van Moolenbroek int	ifcmd(void *);
105*5ae330e2SDavid van Moolenbroek int	ifdefcmd(void *v);
106*5ae330e2SDavid van Moolenbroek int	ifndefcmd(void *v);
107*5ae330e2SDavid van Moolenbroek int	markread(void *);
108*5ae330e2SDavid van Moolenbroek int	messize(void *);
109*5ae330e2SDavid van Moolenbroek int	null(void *);
110*5ae330e2SDavid van Moolenbroek int	preserve(void *);
111*5ae330e2SDavid van Moolenbroek int	respond(void *);
112*5ae330e2SDavid van Moolenbroek int	rexit(void *);
113*5ae330e2SDavid van Moolenbroek int	schdir(void *);
114*5ae330e2SDavid van Moolenbroek int	set(void *);
115*5ae330e2SDavid van Moolenbroek int	shell(void *);
116*5ae330e2SDavid van Moolenbroek int	show(void *);
117*5ae330e2SDavid van Moolenbroek int	unalias(void *);
118*5ae330e2SDavid van Moolenbroek int	unread(void *);
119*5ae330e2SDavid van Moolenbroek int	unset(void *);
120*5ae330e2SDavid van Moolenbroek /* XXX - Should this be elsewhere? */
121*5ae330e2SDavid van Moolenbroek void	sort(const char **);
122*5ae330e2SDavid van Moolenbroek 
123*5ae330e2SDavid van Moolenbroek /*
124*5ae330e2SDavid van Moolenbroek  * from cmd4.c
125*5ae330e2SDavid van Moolenbroek  */
126*5ae330e2SDavid van Moolenbroek struct smopts_s *findsmopts(const char *, int);
127*5ae330e2SDavid van Moolenbroek int	smoptscmd(void *);
128*5ae330e2SDavid van Moolenbroek int	unsmoptscmd(void *);
129*5ae330e2SDavid van Moolenbroek int	Header(void *);
130*5ae330e2SDavid van Moolenbroek 
131*5ae330e2SDavid van Moolenbroek /*
132*5ae330e2SDavid van Moolenbroek  * from cmdtab.c
133*5ae330e2SDavid van Moolenbroek  */
134*5ae330e2SDavid van Moolenbroek extern const struct cmd cmdtab[];
135*5ae330e2SDavid van Moolenbroek 
136*5ae330e2SDavid van Moolenbroek /*
137*5ae330e2SDavid van Moolenbroek  * from collect.c
138*5ae330e2SDavid van Moolenbroek  */
139*5ae330e2SDavid van Moolenbroek FILE *	collect(struct header *, int);
140*5ae330e2SDavid van Moolenbroek void	savedeadletter(FILE *);
141*5ae330e2SDavid van Moolenbroek 
142*5ae330e2SDavid van Moolenbroek /*
143*5ae330e2SDavid van Moolenbroek  * from dotlock.c
144*5ae330e2SDavid van Moolenbroek  */
145*5ae330e2SDavid van Moolenbroek int	dot_lock(const char *, int, FILE *, const char *);
146*5ae330e2SDavid van Moolenbroek void	dot_unlock(const char *);
147*5ae330e2SDavid van Moolenbroek 
148*5ae330e2SDavid van Moolenbroek /*
149*5ae330e2SDavid van Moolenbroek  * from edit.c
150*5ae330e2SDavid van Moolenbroek  */
151*5ae330e2SDavid van Moolenbroek int	editor(void *);
152*5ae330e2SDavid van Moolenbroek int	visual(void *);
153*5ae330e2SDavid van Moolenbroek FILE *	run_editor(FILE *, off_t, int, int);
154*5ae330e2SDavid van Moolenbroek 
155*5ae330e2SDavid van Moolenbroek /*
156*5ae330e2SDavid van Moolenbroek  * from fio.c
157*5ae330e2SDavid van Moolenbroek  */
158*5ae330e2SDavid van Moolenbroek const char *expand(const char *);
159*5ae330e2SDavid van Moolenbroek off_t	fsize(FILE *);
160*5ae330e2SDavid van Moolenbroek const char *getdeadletter(void);
161*5ae330e2SDavid van Moolenbroek int	getfold(char *, size_t);
162*5ae330e2SDavid van Moolenbroek #ifdef USE_EDITLINE
163*5ae330e2SDavid van Moolenbroek #define readline xreadline	/* readline() is defined in libedit */
164*5ae330e2SDavid van Moolenbroek #endif
165*5ae330e2SDavid van Moolenbroek int	readline(FILE *, char *, int, int);
166*5ae330e2SDavid van Moolenbroek int	putline(FILE *, const char *, int);
167*5ae330e2SDavid van Moolenbroek int	rm(char *);
168*5ae330e2SDavid van Moolenbroek FILE *	setinput(const struct message *);
169*5ae330e2SDavid van Moolenbroek void	setptr(FILE *, off_t);
170*5ae330e2SDavid van Moolenbroek 
171*5ae330e2SDavid van Moolenbroek /*
172*5ae330e2SDavid van Moolenbroek  * from getname.c
173*5ae330e2SDavid van Moolenbroek  */
174*5ae330e2SDavid van Moolenbroek const char *getname(uid_t);
175*5ae330e2SDavid van Moolenbroek int	getuserid(char []);
176*5ae330e2SDavid van Moolenbroek 
177*5ae330e2SDavid van Moolenbroek /*
178*5ae330e2SDavid van Moolenbroek  * from head.c
179*5ae330e2SDavid van Moolenbroek  */
180*5ae330e2SDavid van Moolenbroek int	ishead(const char []);
181*5ae330e2SDavid van Moolenbroek void	parse(const char [], struct headline *, char []);
182*5ae330e2SDavid van Moolenbroek 
183*5ae330e2SDavid van Moolenbroek /*
184*5ae330e2SDavid van Moolenbroek  * from lex.c
185*5ae330e2SDavid van Moolenbroek  */
186*5ae330e2SDavid van Moolenbroek void	announce(void);
187*5ae330e2SDavid van Moolenbroek void	commands(void);
188*5ae330e2SDavid van Moolenbroek enum execute_contxt_e { ec_normal, ec_composing, ec_autoprint };
189*5ae330e2SDavid van Moolenbroek int	execute(char [], enum execute_contxt_e);
190*5ae330e2SDavid van Moolenbroek int	incfile(void);
191*5ae330e2SDavid van Moolenbroek const struct cmd *lex(char []);
192*5ae330e2SDavid van Moolenbroek void	load(const char *);
193*5ae330e2SDavid van Moolenbroek int	newfileinfo(int);
194*5ae330e2SDavid van Moolenbroek int	pversion(void *);
195*5ae330e2SDavid van Moolenbroek int	setfile(const char *);
196*5ae330e2SDavid van Moolenbroek char *	shellpr(char *);
197*5ae330e2SDavid van Moolenbroek char *	get_cmdname(char *);
198*5ae330e2SDavid van Moolenbroek 
199*5ae330e2SDavid van Moolenbroek /*
200*5ae330e2SDavid van Moolenbroek  * from list.c
201*5ae330e2SDavid van Moolenbroek  */
202*5ae330e2SDavid van Moolenbroek int	first(int, int);
203*5ae330e2SDavid van Moolenbroek int	get_Hflag(char **);
204*5ae330e2SDavid van Moolenbroek int	getmsglist(char *, int *, int);
205*5ae330e2SDavid van Moolenbroek int	getrawlist(const char [], char **, int);
206*5ae330e2SDavid van Moolenbroek int	show_headers_and_exit(int) __dead;
207*5ae330e2SDavid van Moolenbroek 
208*5ae330e2SDavid van Moolenbroek /*
209*5ae330e2SDavid van Moolenbroek  * from main.c
210*5ae330e2SDavid van Moolenbroek  */
211*5ae330e2SDavid van Moolenbroek struct name *lexpand(char *, int);
212*5ae330e2SDavid van Moolenbroek void	setscreensize(void);
213*5ae330e2SDavid van Moolenbroek int	main(int, char **);
214*5ae330e2SDavid van Moolenbroek 
215*5ae330e2SDavid van Moolenbroek /*
216*5ae330e2SDavid van Moolenbroek  * from names.c
217*5ae330e2SDavid van Moolenbroek  */
218*5ae330e2SDavid van Moolenbroek struct name *cat(struct name *, struct name *);
219*5ae330e2SDavid van Moolenbroek int	count(struct name *);
220*5ae330e2SDavid van Moolenbroek struct name *delname(struct name *, char []);
221*5ae330e2SDavid van Moolenbroek char *	detract(struct name *, int);
222*5ae330e2SDavid van Moolenbroek struct name * elide(struct name *);
223*5ae330e2SDavid van Moolenbroek struct name * extract(char [], int);
224*5ae330e2SDavid van Moolenbroek struct name * gexpand(struct name *, struct grouphead *, int, int);
225*5ae330e2SDavid van Moolenbroek struct name * nalloc(char [], int);
226*5ae330e2SDavid van Moolenbroek struct name * outof(struct name *, FILE *, struct header *);
227*5ae330e2SDavid van Moolenbroek const char ** unpack(struct name *, struct name *);
228*5ae330e2SDavid van Moolenbroek struct name * usermap(struct name *);
229*5ae330e2SDavid van Moolenbroek #if 0
230*5ae330e2SDavid van Moolenbroek void	prettyprint(struct name *);	/* commented out? */
231*5ae330e2SDavid van Moolenbroek #endif
232*5ae330e2SDavid van Moolenbroek 
233*5ae330e2SDavid van Moolenbroek /*
234*5ae330e2SDavid van Moolenbroek  * from popen.c
235*5ae330e2SDavid van Moolenbroek  */
236*5ae330e2SDavid van Moolenbroek int	Fclose(FILE *);
237*5ae330e2SDavid van Moolenbroek FILE *	Fdopen(int, const char *);
238*5ae330e2SDavid van Moolenbroek FILE *	Fopen(const char *, const char *);
239*5ae330e2SDavid van Moolenbroek int	Pclose(FILE *);
240*5ae330e2SDavid van Moolenbroek FILE *	Popen(const char *, const char *);
241*5ae330e2SDavid van Moolenbroek void	close_all_files(void);
242*5ae330e2SDavid van Moolenbroek void	close_top_files(FILE *);
243*5ae330e2SDavid van Moolenbroek void	free_child(int);
244*5ae330e2SDavid van Moolenbroek void	prepare_child(sigset_t *, int, int);
245*5ae330e2SDavid van Moolenbroek FILE *	last_registered_file(int);
246*5ae330e2SDavid van Moolenbroek void	register_file(FILE *, int, int);
247*5ae330e2SDavid van Moolenbroek int	run_command(const char *, sigset_t *, int, int, ...);
248*5ae330e2SDavid van Moolenbroek void	sigchild(int);
249*5ae330e2SDavid van Moolenbroek int	start_command(const char *, sigset_t *, int, int, ...);
250*5ae330e2SDavid van Moolenbroek int	wait_child(int);
251*5ae330e2SDavid van Moolenbroek #ifdef MIME_SUPPORT
252*5ae330e2SDavid van Moolenbroek void	flush_files(FILE *, int);
253*5ae330e2SDavid van Moolenbroek #endif
254*5ae330e2SDavid van Moolenbroek 
255*5ae330e2SDavid van Moolenbroek /*
256*5ae330e2SDavid van Moolenbroek  * from quit.c
257*5ae330e2SDavid van Moolenbroek  */
258*5ae330e2SDavid van Moolenbroek void	quit(jmp_buf);
259*5ae330e2SDavid van Moolenbroek int	quitcmd(void *);
260*5ae330e2SDavid van Moolenbroek 
261*5ae330e2SDavid van Moolenbroek /*
262*5ae330e2SDavid van Moolenbroek  * from send.c
263*5ae330e2SDavid van Moolenbroek  */
264*5ae330e2SDavid van Moolenbroek #ifndef MIME_SUPPORT
265*5ae330e2SDavid van Moolenbroek # define sendmessage(a,b,c,d,e)	legacy_sendmessage(a,b,c,d)
266*5ae330e2SDavid van Moolenbroek # define mail(a,b,c,d,e,f)	legacy_mail(a,b,c,d,e)
267*5ae330e2SDavid van Moolenbroek #endif
268*5ae330e2SDavid van Moolenbroek int	sendmessage(struct message *, FILE *, struct ignoretab *, const char *, struct mime_info *);
269*5ae330e2SDavid van Moolenbroek int	mail(struct name *, struct name *, struct name *, struct name *, char *, struct attachment *);
270*5ae330e2SDavid van Moolenbroek void	mail1(struct header *, int);
271*5ae330e2SDavid van Moolenbroek void	mail2(FILE *, const char **);
272*5ae330e2SDavid van Moolenbroek int	puthead(struct header *, FILE *, int);
273*5ae330e2SDavid van Moolenbroek int	sendmail(void *);
274*5ae330e2SDavid van Moolenbroek 
275*5ae330e2SDavid van Moolenbroek /*
276*5ae330e2SDavid van Moolenbroek  * from strings.c
277*5ae330e2SDavid van Moolenbroek  */
278*5ae330e2SDavid van Moolenbroek void *	csalloc(size_t, size_t);
279*5ae330e2SDavid van Moolenbroek void *	salloc(size_t);
280*5ae330e2SDavid van Moolenbroek void	sreset(void);
281*5ae330e2SDavid van Moolenbroek void	spreserve(void);
282*5ae330e2SDavid van Moolenbroek 
283*5ae330e2SDavid van Moolenbroek /*
284*5ae330e2SDavid van Moolenbroek  * from support.c
285*5ae330e2SDavid van Moolenbroek  */
286*5ae330e2SDavid van Moolenbroek void	add_ignore(const char *, struct ignoretab *);
287*5ae330e2SDavid van Moolenbroek void	alter(char *);
288*5ae330e2SDavid van Moolenbroek int	argcount(char **);
289*5ae330e2SDavid van Moolenbroek int	blankline(char []);
290*5ae330e2SDavid van Moolenbroek char *	copy(char *, char *);
291*5ae330e2SDavid van Moolenbroek char *	hfield(const char [], const struct message *);
292*5ae330e2SDavid van Moolenbroek int	isdir(const char []);
293*5ae330e2SDavid van Moolenbroek int	isign(const char *, struct ignoretab []);
294*5ae330e2SDavid van Moolenbroek void	istrcpy(char *, const char *);
295*5ae330e2SDavid van Moolenbroek int	member(char *, struct ignoretab *);
296*5ae330e2SDavid van Moolenbroek char *	nameof(struct message *, int);
297*5ae330e2SDavid van Moolenbroek int	sasprintf(char **ret, const char *format, ...) __printflike(2, 3);
298*5ae330e2SDavid van Moolenbroek char *	savestr(const char *);
299*5ae330e2SDavid van Moolenbroek struct message *set_m_flag(int, int, int);
300*5ae330e2SDavid van Moolenbroek char *	skin(char *);
301*5ae330e2SDavid van Moolenbroek int	source(void *);
302*5ae330e2SDavid van Moolenbroek void	touch(struct message *);
303*5ae330e2SDavid van Moolenbroek int	unstack(void);
304*5ae330e2SDavid van Moolenbroek int	upcase(int);
305*5ae330e2SDavid van Moolenbroek void	cathelp(const char *);
306*5ae330e2SDavid van Moolenbroek 
307*5ae330e2SDavid van Moolenbroek /*
308*5ae330e2SDavid van Moolenbroek  * from temp.c
309*5ae330e2SDavid van Moolenbroek  */
310*5ae330e2SDavid van Moolenbroek void	tinit(void);
311*5ae330e2SDavid van Moolenbroek 
312*5ae330e2SDavid van Moolenbroek /*
313*5ae330e2SDavid van Moolenbroek  * from tty.c
314*5ae330e2SDavid van Moolenbroek  */
315*5ae330e2SDavid van Moolenbroek int	grabh(struct header *, int);
316*5ae330e2SDavid van Moolenbroek 
317*5ae330e2SDavid van Moolenbroek /*
318*5ae330e2SDavid van Moolenbroek  * from vars.c
319*5ae330e2SDavid van Moolenbroek  */
320*5ae330e2SDavid van Moolenbroek void	assign(const char [], const char []);
321*5ae330e2SDavid van Moolenbroek struct grouphead * findgroup(const char []);
322*5ae330e2SDavid van Moolenbroek int	hash(const char *);
323*5ae330e2SDavid van Moolenbroek struct var * lookup(const char []);
324*5ae330e2SDavid van Moolenbroek void	printgroup(const char []);
325*5ae330e2SDavid van Moolenbroek void	v_free(char *);
326*5ae330e2SDavid van Moolenbroek char *	value(const char []);
327*5ae330e2SDavid van Moolenbroek char *	vcopy(const char []);
328*5ae330e2SDavid van Moolenbroek 
329*5ae330e2SDavid van Moolenbroek /*
330*5ae330e2SDavid van Moolenbroek  * from v7.local.c
331*5ae330e2SDavid van Moolenbroek  */
332*5ae330e2SDavid van Moolenbroek void	demail(void);
333*5ae330e2SDavid van Moolenbroek void	findmail(const char *, char *, size_t);
334*5ae330e2SDavid van Moolenbroek const char *username(void);
335*5ae330e2SDavid van Moolenbroek 
336*5ae330e2SDavid van Moolenbroek /*
337*5ae330e2SDavid van Moolenbroek  * from version.c
338*5ae330e2SDavid van Moolenbroek  */
339*5ae330e2SDavid van Moolenbroek extern const char *version;
340*5ae330e2SDavid van Moolenbroek 
341*5ae330e2SDavid van Moolenbroek 
342*5ae330e2SDavid van Moolenbroek #ifndef	THREAD_SUPPORT
343*5ae330e2SDavid van Moolenbroek /*
344*5ae330e2SDavid van Moolenbroek  * Specials from fio.c (if THREAD_SUPPORT is not defined).
345*5ae330e2SDavid van Moolenbroek  * With THREAD_SUPPORT, they live in thread.c.
346*5ae330e2SDavid van Moolenbroek  */
347*5ae330e2SDavid van Moolenbroek struct message *next_message(struct message *);
348*5ae330e2SDavid van Moolenbroek struct message *prev_message(struct message *);
349*5ae330e2SDavid van Moolenbroek struct message *get_message(int);
350*5ae330e2SDavid van Moolenbroek int	get_msgnum(struct message *);
351*5ae330e2SDavid van Moolenbroek int	get_msgCount(void);
352*5ae330e2SDavid van Moolenbroek 
353*5ae330e2SDavid van Moolenbroek /* we remap these commands */
354*5ae330e2SDavid van Moolenbroek # define get_abs_msgCount	get_msgCount
355*5ae330e2SDavid van Moolenbroek # define get_abs_message(a)	get_message(a)
356*5ae330e2SDavid van Moolenbroek # define next_abs_message(a)	next_message(a)
357*5ae330e2SDavid van Moolenbroek 
358*5ae330e2SDavid van Moolenbroek /* we trash these commands */
359*5ae330e2SDavid van Moolenbroek # define do_recursion()			0
360*5ae330e2SDavid van Moolenbroek # define thread_recursion(mp,fn,args)	fn(mp,args)
361*5ae330e2SDavid van Moolenbroek # define thread_fix_old_links(nmessage,message,omsgCount)
362*5ae330e2SDavid van Moolenbroek # define thread_fix_new_links(message,omsgCount,msgCount)
363*5ae330e2SDavid van Moolenbroek #endif /* THREAD_SUPPORT */
364*5ae330e2SDavid van Moolenbroek 
365*5ae330e2SDavid van Moolenbroek #endif /* __EXTERN_H__ */
366