/* * $Id: proto.h,v 1.24 2001/07/25 21:51:47 geoff Exp $ * * Copyright 1992, 1993, 1999, 2001, Geoff Kuenning, Claremont, CA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All modifications to the source code must be clearly marked as * such. Binary redistributions based on modified source code * must be clearly marked as modified versions in the documentation * and/or other materials provided with the distribution. * 4. Any web site or other electronic service that offers ispell for * download or other electronic transfer as a separate entity, in * either source or binary form, must also include a prominent statement * indicating that information about ispell can be obtained from the * following Web site URL: * http://fmg-www.cs.ucla.edu/geoff/ispell.html * If the offering service supports hyperlinks, the aforementioned * Web site must also be offered as a hyperlink. Condition #4 does * not apply if ispell is offered only as part of a larger, aggregated * product such as a word processor or packaged operating system. * 5. The name of Geoff Kuenning may not be used to endorse or promote * products derived from this software without specific prior * written permission. * * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ /* * $Log: proto.h,v $ * Revision 1.24 2001/07/25 21:51:47 geoff * Minor license update. * * Revision 1.23 2001/07/23 20:24:04 geoff * Update the copyright and the license. * * Revision 1.22 2001/04/04 06:50:00 geoff * Add unistd.h to work around a problem in Mac OSX * * Revision 1.21 1999/01/18 02:14:11 geoff * Change most char declarations to unsigned char, to avoid * sign-extension problems with 8-bit characters. * * Revision 1.20 1999/01/07 01:58:12 geoff * Update the copyright. * * Revision 1.19 1999/01/03 01:46:44 geoff * Add a declaration for "dup". * * Revision 1.18 1998/07/06 06:55:21 geoff * Rename sethtmltags to init_keyword_table, and simplify the argument * list. * * Revision 1.17 1997/12/02 06:25:07 geoff * Get rid of some compile options that really shouldn't be optional. * * Revision 1.16 1997/12/01 00:53:54 geoff * Add HTML declarations. * * Revision 1.15 1994/10/25 05:46:38 geoff * Protoize bzero the way 4.1.1 does it (which I hope is the standard). * * Revision 1.14 1994/05/24 06:23:10 geoff * Make cap_ok a global routine. * * Revision 1.13 1994/05/17 06:44:20 geoff * Add the new arguments to chk_aff, good, and compoundgood. * * Revision 1.12 1994/03/16 03:49:15 geoff * Add an ifdef so that there won't be a conflict with the definition of * free() on braindamaged Sun systems. * * Revision 1.11 1994/02/14 00:34:55 geoff * Add new arguments to the prototype for correct(). * * Revision 1.10 1994/02/08 05:45:34 geoff * Don't undef P unless we're going to redefine it * * Revision 1.9 1994/02/07 08:10:47 geoff * Add the GENERATE_LIBRARY_PROTOS option. Put the definitions of * index/rindex back the way they were, because that's what's needed on * my system (sigh). * * Revision 1.8 1994/02/07 05:45:25 geoff * Change the second parameter of index/rindex to be a char * * Revision 1.7 1994/01/25 07:12:05 geoff * Get rid of all old RCS log lines in preparation for the 3.1 release. * */ extern int addvheader P ((struct dent * ent)); extern void askmode P ((void)); extern void backup P ((void)); extern int cap_ok P ((ichar_t * word, struct success * hit, int len)); extern int casecmp P ((unsigned char * a, unsigned char * b, int canonical)); extern void chupcase P ((unsigned char * s)); extern void checkfile P ((void)); extern void checkline P ((FILE * ofile)); extern void chk_aff P ((ichar_t * word, ichar_t * ucword, int len, int ignoreflagbits, int allhits, int pfxopts, int sfxopts)); extern int combinecaps P ((struct dent * hdr, struct dent * newent)); extern int compoundgood P ((ichar_t * word, int pfxopts)); extern void copyout P ((unsigned char ** cc, int cnt)); extern void correct P ((unsigned char * ctok, int ctokl, ichar_t * itok, int itokl, unsigned char ** curchar)); extern char * do_regex_lookup P ((char * expr, int whence)); extern SIGNAL_TYPE done P ((int)); extern void dumpmode P ((void)); extern void erase P ((void)); extern int expand_pre P ((unsigned char * croot, ichar_t * rootword, MASKTYPE mask[], int option, unsigned char *extra)); extern int expand_suf P ((unsigned char * croot, ichar_t * rootword, MASKTYPE mask[], int crossonly, int option, unsigned char * extra)); extern int findfiletype P ((char * name, int searchnames, int * deformatter)); extern void flagpr P ((ichar_t * word, int preflag, int prestrip, int preadd, int sufflag, int sufadd)); extern void givehelp P ((int interactive)); extern int good P ((ichar_t * word, int ignoreflagbits, int allhits, int pfxopts, int sfxopts)); extern int hash P ((ichar_t * word, int hashtablesize)); #ifndef ICHAR_IS_CHAR extern int icharcmp P ((ichar_t * s1, ichar_t * s2)); extern ichar_t * icharcpy P ((ichar_t * out, ichar_t * in)); extern int icharlen P ((ichar_t * str)); extern int icharncmp P ((ichar_t * s1, ichar_t * s2, int n)); #endif /* ICHAR_IS_CHAR */ extern int ichartostr P ((unsigned char * out, ichar_t * in, int outlen, int canonical)); extern unsigned char * ichartosstr P ((ichar_t * in, int canonical)); extern int ins_root_cap P ((ichar_t * word, ichar_t * pattern, int prestrip, int preadd, int sufstrip, int sufadd, struct dent * firstdent, struct flagent * pfxent, struct flagent * sufent)); extern void inverse P ((void)); extern int linit P ((void)); extern struct dent * lookup P ((ichar_t * word, int dotree)); extern void lowcase P ((ichar_t * string)); extern int makedent P ((unsigned char * lbuf, int lbuflen, struct dent * d)); extern void makepossibilities P ((ichar_t * word)); extern void move P ((int row, int col)); extern void normal P ((void)); extern char * printichar P ((int in)); extern int init_keyword_table P ((char * rawtags, char * envvar, char * deftags, int ignorecase, struct kwtable * keywords)); #ifdef USESH extern int shellescape P ((char * buf)); extern void shescape P ((char * buf)); #else /* USESH */ #ifndef REGEX_LOOKUP extern int shellescape P ((char * buf)); #endif /* REGEX_LOOKUP */ #endif /* USESH */ extern unsigned char * skipoverword P ((unsigned char * bufp)); extern void stop P ((void)); extern int stringcharlen P ((unsigned char * bufp, int canonical)); extern int strtoichar P ((ichar_t * out, unsigned char * in, int outlen, int canonical)); extern ichar_t * strtosichar P ((unsigned char * in, int canonical)); extern void terminit P ((void)); extern void toutent P ((FILE * outfile, struct dent * hent, int onlykeep)); extern void treeinit P ((char * persdict, char * LibDict)); extern void treeinsert P ((unsigned char * word, int wordlen, int keep)); extern struct dent * treelookup P ((ichar_t * word)); extern void treeoutput P ((void)); extern void upcase P ((ichar_t * string)); extern long whatcap P ((ichar_t * word)); extern char * xgets P ((char * string, int size, FILE * stream)); extern void yyinit P ((void)); extern int yyopen P ((char * file)); extern int yyparse P ((void)); extern void myfree P ((VOID * area)); extern VOID * mymalloc P ((unsigned int)); extern VOID * myrealloc P ((VOID * area, unsigned int size, unsigned int oldsize)); /* * C library functions. If possible, we get these from stdlib.h. * * Even if stdlib.h doesn't exist, we don't generate proper prototypes * on most systems. This protects us against minor differences in * declarations that break the compilation unnecessarily. * GENERATE_LIBRARY_PROTOS is mostly for the benefit of the ispell * developer. */ #ifndef GENERATE_LIBRARY_PROTOS #undef P #define P(x) () #endif /* GENERATE_LIBRARY_PROTOS */ #ifdef NO_STDLIB_H extern int access P ((const char * file, int mode)); extern int atoi P ((const char * string)); #ifndef USG extern VOID * bcopy P ((const VOID * src, VOID * dest, unsigned int size)); extern void bzero P ((VOID * dest, int size)); #endif /* USG */ extern VOID * calloc P ((unsigned int nelems, unsigned int elemsize)); #ifdef _POSIX_SOURCE extern int chmod P ((const char * file, unsigned int mode)); #else /* _POSIX_SOURCE */ extern int chmod P ((const char * file, unsigned long mode)); #endif /* POSIX_SOURCE */ extern int close P ((int fd)); extern int creat P ((const char * file, int mode)); extern int dup P ((int fd)); extern int execvp P ((const char * name, const char * argv[])); extern void _exit P ((int status)); extern void exit P ((int status)); extern char * fgets P ((char * string, int size, FILE * stream)); extern int fork P ((void)); #ifdef __STDC__ /* * Some flaming cretin at Sun decided that free() should be declared * as returning an int in /usr/include/malloc.h, so the following * declaration causes a conflict. Fortunately, it doesn't really do a * lot of harm to leave it undeclared, since (a) we always properly * ignore the return value and (b) any machine that really needs * special code to handle ignoring the return value is likely to also * provide a correct declaration. * * (Why is this ifdef'ed on __STDC__? Because I want it to be correct * on my development machine, so I can catch lint problems.) * * A pox on those who violate long-established standards! */ extern void free P ((VOID * area)); #endif /* __STDC__ */ extern char * getenv P ((const char * varname)); extern int ioctl P ((int fd, int func, char * arg)); extern int kill P ((int pid, int sig)); extern int link P ((const char * existing, const char * new)); extern long lseek P ((int fd, long offset, int whence)); extern VOID * malloc P ((unsigned int size)); #ifdef USG extern VOID * memcpy P ((VOID * dest, const VOID * src)); extern VOID * memset P ((VOID * dest, int val, unsigned int len)); #endif /* USG */ extern char * mktemp P ((char * prototype)); extern int open P ((const char * file, int mode)); extern void perror P ((const char * msg)); extern void qsort P ((VOID * array, unsigned int nelems, unsigned int elemsize, int (*cmp) (const VOID * a, const VOID * b))); extern int read P ((int fd, VOID * buf, unsigned int n)); extern VOID * realloc P ((VOID * area, unsigned int size)); extern unsigned int sleep P ((unsigned int)); extern char * strcat P ((char * dest, const char * src)); #ifdef USG extern char * strchr P ((const char * string, int ch)); #endif /* USG */ extern int strcmp P ((const char * s1, const char * s2)); extern char * strcpy P ((char * dest, const char * src)); extern unsigned int strlen P ((const char * str)); extern int strncmp P ((const char * s1, const char * s2, unsigned int len)); extern char * strncpy P ((char * dest, const char * src, unsigned int len)); #ifdef USG extern char * strrchr P ((const char * string, int ch)); #endif /* USG */ extern int system P ((const char * command)); extern int unlink P ((const char * file)); extern int wait P ((int * statusp)); #else /* NO_STDLIB_H */ #include #include #include #endif /* NO_STDLIB_H */ #ifndef USG extern char * index P ((const char * string, int ch)); extern char * rindex P ((const char * string, int ch)); #endif /* USG */ #ifdef REGEX_LOOKUP #ifdef USG extern char * regcmp P ((const char * expr, const char * terminator, ...)); extern char * regex P ((const char * pat, const char * subject, ...)); #else /* USG */ extern char * re_comp P ((const char * expr)); extern int * re_exec P ((const char * pat)); #endif /* USG */ #endif /* REGEX_LOOKUP */ extern int tgetent P ((char * buf, const char * termname)); extern int tgetnum P ((const char * id)); extern char * tgetstr P ((const char * id, char ** area)); extern char * tgoto P ((const char * cm, int col, int row)); extern char * tputs P ((const char * str, int pad, int (*func) (int ch))); #ifndef GENERATE_LIBRARY_PROTOS #ifdef __STDC__ #undef P #define P(x) x #endif /* __STDC__ */ #endif /* GENERATE_LIBRARY_PROTOS */