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