aboutsummaryrefslogtreecommitdiff
path: root/textproc/wordnet
diff options
context:
space:
mode:
authorMikhail Teterin <mi@FreeBSD.org>2006-01-16 03:48:42 +0000
committerMikhail Teterin <mi@FreeBSD.org>2006-01-16 03:48:42 +0000
commit8ebfc55a6eebdea8999a838c47b84ac3aae8f8e4 (patch)
treec34641f77bda875b1082c7958d2dd3241ea893d6 /textproc/wordnet
parent360872c2f7438b258e1e9cbd7473f7abeffb1338 (diff)
Notes
Diffstat (limited to 'textproc/wordnet')
-rw-r--r--textproc/wordnet/Makefile25
-rw-r--r--textproc/wordnet/distinfo5
-rw-r--r--textproc/wordnet/files/Makefile6
-rw-r--r--textproc/wordnet/files/dict.Makefile15
-rw-r--r--textproc/wordnet/files/include.Makefile7
-rw-r--r--textproc/wordnet/files/patch-aa15
-rw-r--r--textproc/wordnet/files/patch-ab287
-rw-r--r--textproc/wordnet/files/patch-ac228
-rw-r--r--textproc/wordnet/files/patch-ad4
-rw-r--r--textproc/wordnet/files/patch-ae1092
-rw-r--r--textproc/wordnet/files/patch-ag7
-rw-r--r--textproc/wordnet/files/patch-ah134
-rw-r--r--textproc/wordnet/files/patch-binsrch268
-rw-r--r--textproc/wordnet/files/patch-wn.h279
-rw-r--r--textproc/wordnet/files/patch-wnb57
-rw-r--r--textproc/wordnet/files/patch-wnglobal37
-rw-r--r--textproc/wordnet/files/patch-wnhelp43
-rw-r--r--textproc/wordnet/files/patch-wnrtl17
-rw-r--r--textproc/wordnet/files/src.Makefile3
-rw-r--r--textproc/wordnet/files/src.lib.Makefile11
-rw-r--r--textproc/wordnet/files/src.wn.Makefile8
-rw-r--r--textproc/wordnet/files/src.wnb.Makefile20
-rw-r--r--textproc/wordnet/pkg-plist61
-rw-r--r--textproc/wordnet/scripts/configure23
24 files changed, 2486 insertions, 166 deletions
diff --git a/textproc/wordnet/Makefile b/textproc/wordnet/Makefile
index 7684e96ebc74..9d87f57b162f 100644
--- a/textproc/wordnet/Makefile
+++ b/textproc/wordnet/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= WordNet
-PORTVERSION= 2.0
+PORTVERSION= 2.1
CATEGORIES= textproc
MASTER_SITES= ftp://ftp.cogsci.princeton.edu/pub/wordnet/${PORTVERSION}/ \
http://www.cogsci.princeton.edu/${PORTVERSION}/ \
@@ -17,14 +17,6 @@ COMMENT= Dictionaries and thesauri with devel. libraries (C, TCL) and browsers
LIB_DEPENDS= tk${TCL_VER}:${PORTSDIR}/x11-toolkits/tk${TCL_VER}
-# The vendor packages up a lot of useless precompiled binaries
-# for a few platforms with the source code. Do not extract them:
-EXTRACT_AFTER_ARGS= | ${TAR} -xf - --exclude '*/bin/*' \
- --exclude '*/lib/solaris/*' \
- --exclude '*/lib/linux/*' \
- --exclude '*/lib/irix/*' \
- --exclude '*/*.[ao]'
-
TCL_DVER?= 8.4
TCL_VER= ${TCL_DVER:C/\.//}
SCRIPTS_ENV+= TCL_DVER=${TCL_DVER} VER=${PORTVERSION}
@@ -35,15 +27,8 @@ REINPLACE_ARGS= -i ""
INSTALLS_SHLIB= yes
post-patch:
- ${REINPLACE_CMD} -e 's,/usr/local,${PREFIX},g' \
- -e 's,_VER_,${PORTVERSION},g' ${WRKSRC}/include/wnconsts.h \
- ${WRKSRC}/src/wnb/wnb
-
-.include <bsd.port.pre.mk>
-
-.for s in 1 3 5 7
-MAN$s!= ${MAKE} -f ${FILESDIR}/man.Makefile -V MAN$s
-.endfor
-MANCOMPRESSED= maybe
+ ${REINPLACE_CMD} -e 's,/usr/local/WordNet-2.1,${DATADIR},g' \
+ ${WRKSRC}/src/wnb ${WRKSRC}/doc/man/*.?
+ ${REINPLACE_CMD} -e 's, *\\n,\\n,' ${WRKSRC}/include/wn.h
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/textproc/wordnet/distinfo b/textproc/wordnet/distinfo
index 77a015288edd..33b77030d9d6 100644
--- a/textproc/wordnet/distinfo
+++ b/textproc/wordnet/distinfo
@@ -1,2 +1,3 @@
-MD5 (WordNet-2.0.tar.gz) = 42faaf63f391bb1e13f59ca83490634d
-SIZE (WordNet-2.0.tar.gz) = 12847598
+MD5 (WordNet-2.1.tar.gz) = 081aa25baaccac602cebb61f6cb949e7
+SHA256 (WordNet-2.1.tar.gz) = 8ed7ec24377d114c6db326a6f114d6e22afb85cc37f7f1386831b6d8f114784d
+SIZE (WordNet-2.1.tar.gz) = 11441476
diff --git a/textproc/wordnet/files/Makefile b/textproc/wordnet/files/Makefile
index 4e13361cffe9..0187599bde68 100644
--- a/textproc/wordnet/files/Makefile
+++ b/textproc/wordnet/files/Makefile
@@ -1,8 +1,10 @@
# $FreeBSD$
SUBDIR= include \
- dict \
+ lib \
+ lib/wnres \
src \
- man
+ dict \
+ doc/man
.include <bsd.subdir.mk>
diff --git a/textproc/wordnet/files/dict.Makefile b/textproc/wordnet/files/dict.Makefile
index e77eaf1e9b9d..39ef1eb1232f 100644
--- a/textproc/wordnet/files/dict.Makefile
+++ b/textproc/wordnet/files/dict.Makefile
@@ -1,8 +1,8 @@
-WN_INSTALLDIR= ${PREFIX}/share/WordNet-${VER}
-WN_FILES= data.noun data.verb data.adj data.adv index.noun \
- index.verb index.adj index.adv noun.exc verb.exc \
- adj.exc adv.exc index.sense cntlist.rev \
- cntlist lexnames sentidx.vrb sents.vrb
+WN_INSTALLDIR= ${PREFIX}/share/WordNet
+WN_FILES= adj.exc adv.exc cntlist cntlist.rev data.adj \
+ data.adv data.noun data.verb frames.vrb index.adj \
+ index.adv index.noun index.sense index.verb \
+ noun.exc sentidx.vrb sents.vrb verb.Framestext verb.exc
all: $(WN_FILES)
@@ -13,11 +13,10 @@ ${WN_INSTALLDIR}:
INSTALLED+= ${WN_INSTALLDIR}/$f
${WN_INSTALLDIR}/$f: $f
- ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} \
- $f ${WN_INSTALLDIR}/$f
+ ${BSD_INSTALL_DATA} $f ${WN_INSTALLDIR}/$f
.endfor
install: ${WN_INSTALLDIR} ${INSTALLED}
-NOOBJ= noobj
+NO_OBJ= noobj
.include <bsd.prog.mk>
diff --git a/textproc/wordnet/files/include.Makefile b/textproc/wordnet/files/include.Makefile
index ed3f8e6aae1d..64139eab30d8 100644
--- a/textproc/wordnet/files/include.Makefile
+++ b/textproc/wordnet/files/include.Makefile
@@ -1,7 +1,6 @@
-WN_INSTALLDIR = ${PREFIX}/include/WordNet-${VER}
+WN_INSTALLDIR = ${PREFIX}/include/WordNet
-WN_FILES= license.h setutil.h wn.h wnconsts.h wnglobal.h \
- wnhelp.h wnrtl.h wntypes.h
+WN_FILES= wn.h wngrind.h
all: $(WN_FILES)
@@ -12,6 +11,6 @@ install: ${WN_INSTALLDIR}
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
${WN_FILES} ${WN_INSTALLDIR}/
-NOOBJ= noobj
+NO_OBJ= noobj
.include <bsd.prog.mk>
diff --git a/textproc/wordnet/files/patch-aa b/textproc/wordnet/files/patch-aa
deleted file mode 100644
index 1111d7e513ff..000000000000
--- a/textproc/wordnet/files/patch-aa
+++ /dev/null
@@ -1,15 +0,0 @@
---- include/wnconsts.h Fri Feb 27 13:54:53 1998
-+++ include/wnconsts.h Sat Feb 26 16:11:51 2000
-@@ -15,6 +15,10 @@
- /* Platform specific path and filename specifications */
-
- #ifdef UNIX
- #define DICTDIR "/dict"
--#define DEFAULTPATH "/usr/local/WordNet-_VER_/dict"
--#define DEFAULTBIN "/usr/local/WordNet-_VER_/bin"
-+#ifndef DEFAULTPATH
-+#define DEFAULTPATH "/usr/local/share/WordNet-_VER_"
-+#endif
-+#ifndef DEFAULTBIN
-+#define DEFAULTBIN "/usr/local/bin"
-+#endif
diff --git a/textproc/wordnet/files/patch-ab b/textproc/wordnet/files/patch-ab
index 441c003f86ac..ad6bea4e8f6e 100644
--- a/textproc/wordnet/files/patch-ab
+++ b/textproc/wordnet/files/patch-ab
@@ -1,7 +1,286 @@
---- src/lib/wnutil.c Thu Feb 19 12:15:09 1998
-+++ src/lib/wnutil.c Sat Feb 26 16:14:08 2000
-@@ -10,3 +10,3 @@
- #ifdef UNIX
+--- lib/wnutil.c Fri May 6 13:17:39 2005
++++ lib/wnutil.c Wed Dec 21 16:04:36 2005
+@@ -15,5 +15,5 @@
+ #ifdef __unix__
+ #ifndef __MACH__
-#include <malloc.h>
+#include <stdlib.h>
#endif
+ #endif
+@@ -25,5 +25,5 @@
+ #include "wn.h"
+
+-static int do_init();
++static int do_init(void);
+
+ static char msgbuf[256]; /* buffer for constructing error messages */
+@@ -37,5 +37,5 @@
+ /* Initialization functions */
+
+-static void closefps();
++static void closefps(void);
+
+ int wninit(void)
+@@ -46,7 +46,6 @@
+
+ if (!done) {
+- if (env = getenv("WNDBVERSION")) {
+- wnrelease = strdup(env); /* set release */
+- assert(wnrelease);
++ if ((env = getenv("WNDBVERSION"))) {
++ wnrelease = env; /* set release */
+ }
+ openerr = do_init();
+@@ -68,7 +67,6 @@
+ closefps();
+
+- if (env = getenv("WNDBVERSION")) {
+- wnrelease = strdup(env); /* set release */
+- assert(wnrelease);
++ if ((env = getenv("WNDBVERSION"))) {
++ wnrelease = env; /* set release */
+ }
+ openerr = do_init();
+@@ -248,4 +246,20 @@
+ }
+
++char *strtolower2(const char *from, char *to)
++{
++
++ char *t = to;
++
++ do {
++ if(*from >= 'A' && *from <= 'Z')
++ *t = *from++ + 32;
++ else if(*from == '(')
++ *t = '\0';
++ else
++ *t = *from++;
++ } while (*t++);
++ return(to);
++}
++
+ /* Convert string passed to lower case */
+
+@@ -276,11 +290,24 @@
+ /* Return pointer code for pointer type characer passed. */
+
+-int getptrtype(char *ptrstr)
++unsigned short
++getptrtype(const char *ptrstr, char **end)
+ {
+- register int i;
++ unsigned short i;
++ const char *ptype, *pstr;
+ for(i = 1; i <= MAXPTR; i++) {
+- if(!strcmp(ptrstr, ptrtyp[i]))
++ ptype = ptrtyp[i];
++ pstr = ptrstr;
++ while (*pstr == *ptype && *ptype) {
++ pstr++;
++ ptype++;
++ }
++ if (*ptype == '\0' &&
++ (*pstr == '\n' || *pstr == ' ' || *pstr == '\0')) {
++ if (end)
++ *(const char **)end = pstr;
+ return(i);
++ }
+ }
++ fprintf(stderr, "Could not find the type of %s\n", ptrstr);
+ return(0);
+ }
+@@ -288,5 +315,6 @@
+ /* Return part of speech code for string passed */
+
+-int getpos(char *s)
++int
++getpos(const char *s)
+ {
+ switch (*s) {
+@@ -310,5 +338,6 @@
+ /* Return synset type code for string passed. */
+
+-int getsstype(char *s)
++int
++getsstype(const char *s)
+ {
+ switch (*s) {
+@@ -332,5 +361,6 @@
+ /* Pass in string for POS, return corresponding integer value */
+
+-int StrToPos(char *str)
++int
++StrToPos(const char *str)
+ {
+ if (!strcmp(str, "noun"))
+@@ -389,5 +419,6 @@
+ /* Return synset for sense key passed. */
+
+-SynsetPtr GetSynsetForSense(char *sensekey)
++SynsetPtr
++GetSynsetForSense(const char *sensekey)
+ {
+ long offset;
+@@ -405,7 +436,8 @@
+ /* Find offset of sense key in data file */
+
+-long GetDataOffset(char *sensekey)
++long
++GetDataOffset(const char *sensekey)
+ {
+- char *line;
++ const char *line;
+
+ /* Pass in encoded sense string, return byte offset of corresponding
+@@ -426,5 +458,6 @@
+ /* Find polysemy count for sense key passed. */
+
+-int GetPolyCount(char *sensekey)
++int
++GetPolyCount(const char *sensekey)
+ {
+ IndexPtr idx;
+@@ -443,5 +476,6 @@
+
+ /* Return word part of sense key */
+-char *GetWORD(char *sensekey)
++const char *
++GetWORD(const char *sensekey)
+ {
+ static char word[100];
+@@ -457,5 +491,6 @@
+ /* Return POS code for sense key passed. */
+
+-int GetPOS(char *sensekey)
++int
++GetPOS(const char *sensekey)
+ {
+ int pos;
+@@ -470,5 +505,6 @@
+ /* Reconstruct synset from synset pointer and return ptr to buffer */
+
+-char *FmtSynset(SynsetPtr synptr, int defn)
++const char *
++FmtSynset(SynsetPtr synptr, int defn)
+ {
+ int i;
+@@ -542,27 +578,8 @@
+ }
+
+-/* Search for string and/or baseform of word in database and return
+- index structure for word if found in database. */
+-
+-IndexPtr GetValidIndexPointer(char *word, int pos)
+-{
+- IndexPtr idx;
+- char *morphword;
+-
+- idx = getindex(word, pos);
+-
+- if (idx == NULL) {
+- if ((morphword = morphstr(word, pos)) != NULL)
+- while (morphword) {
+- if ((idx = getindex(morphword, pos)) != NULL) break;
+- morphword = morphstr(NULL, pos);
+- }
+- }
+- return (idx);
+-}
+-
+ /* Return sense number in database for word and lexsn passed. */
+
+-int GetWNSense(char *word, char *lexsn)
++int
++GetWNSense(const char *word, const char *lexsn)
+ {
+ SnsIndexPtr snsidx;
+@@ -578,7 +595,8 @@
+ /* Return parsed sense index entry for sense key passed. */
+
+-SnsIndexPtr GetSenseIndex(char *sensekey)
++SnsIndexPtr
++GetSenseIndex(const char *sensekey)
+ {
+- char *line;
++ const char *line;
+ char buf[256], loc[9];
+ SnsIndexPtr snsidx = NULL;
+@@ -608,5 +626,6 @@
+ int GetTagcnt(IndexPtr idx, int sense)
+ {
+- char *sensekey, *line;
++ char *sensekey;
++ const char *line;
+ char buf[256];
+ int snum, cnt = 0;
+@@ -632,10 +651,11 @@
+ }
+
+-char *GetOffsetForKey(unsigned int key)
++const char *
++GetOffsetForKey(unsigned int key)
+ {
+ unsigned int rkey;
+ char ckey[7];
+ static char loc[11] = "";
+- char *line;
++ const char *line;
+ char searchdir[256], tmpbuf[256];
+
+@@ -657,10 +677,10 @@
+ }
+
+-
+-unsigned int GetKeyForOffset(char *loc)
++unsigned int
++GetKeyForOffset(const char *loc)
+ {
+ unsigned int key;
+ char rloc[11] = "";
+- char *line;
++ const char *line;
+ char searchdir[256], tmpbuf[256];
+
+@@ -681,8 +701,9 @@
+ }
+
+-char *SetSearchdir()
++const char *
++SetSearchdir()
+ {
+- static char searchdir[256];
+- char *env;
++ char *searchdir;
++ const char *env;
+
+ /* Find base directory for database. If set, use WNSEARCHDIR.
+@@ -690,14 +711,17 @@
+
+ if ((env = getenv("WNSEARCHDIR")) != NULL)
+- strcpy(searchdir, env);
+- else if ((env = getenv("WNHOME")) != NULL)
++ return(env);
++ else if ((env = getenv("WNHOME")) != NULL) {
++ searchdir = malloc(strlen(env) + sizeof(DICTDIR));
+ sprintf(searchdir, "%s%s", env, DICTDIR);
+- else
+- strcpy(searchdir, DEFAULTPATH);
+-
+- return(searchdir);
++ return(searchdir);
++ } else
++ return(DEFAULTPATH);
+ }
+
+-int default_display_message(char *msg)
++#ifndef __GNUC__
++# define __unused
++#endif
++int default_display_message(const char *msg __unused)
+ {
+ return(-1);
+@@ -727,3 +751,2 @@
+ return (loc - strstr_stringstart);
+ }
+-
diff --git a/textproc/wordnet/files/patch-ac b/textproc/wordnet/files/patch-ac
index fe4fdae3516d..7ed5bb4f4dfd 100644
--- a/textproc/wordnet/files/patch-ac
+++ b/textproc/wordnet/files/patch-ac
@@ -1,17 +1,28 @@
---- src/wnb/stubs.c Fri Nov 14 17:01:44 1997
-+++ src/wnb/stubs.c Sat Feb 26 20:09:19 2000
-@@ -24,3 +24,2 @@
+--- src/stubs.c Wed Jul 6 14:49:05 2005
++++ src/stubs.c Sun Jan 15 07:16:57 2006
+@@ -12,8 +12,7 @@
+ #include <string.h>
#include <tcl.h>
-#include <tk.h>
#include <wn.h>
-@@ -37,5 +36,4 @@
- int wn_findvalidsearches (ClientData clientData, Tcl_Interp *interp,
+
+-static Id = "$Id: stubs.c,v 1.7 2005/04/29 19:01:57 wn Exp $";
++__FBSDID("$Id: stubs.c,v 1.7 2005/04/29 19:01:57 wn Exp $");
+
+ static char resultbuf[SEARCHBUF];
+@@ -34,24 +33,24 @@
+ */
+
+-int wn_findvalidsearches (ClientData clientData, Tcl_Interp *interp,
- int argc, char *argv[]) {
-+ int argc, Tcl_Obj *objv[]) {
++static int
++wn_findvalidsearches (ClientData clientData, Tcl_Interp *interp,
++ int argc, Tcl_Obj * const objv[]) {
unsigned int bitfield;
- static char bitfieldstr[32];
- char *morph;
-@@ -43,9 +41,10 @@
+- char *morph;
++ const char *morph;
+ int pos;
if (argc != 3) {
- interp -> result =
- "usage: findvalidsearches searchword partofspeechnum";
@@ -27,18 +38,24 @@
+ bitfield = is_defined (Tcl_GetString(objv[1]), pos);
+ if ((morph = morphstr (Tcl_GetString(objv[1]), pos)) != NULL) {
do {
-@@ -54,4 +53,3 @@
+ bitfield |= is_defined (morph, pos);
+ } while ((morph = morphstr (NULL, pos)) != NULL);
}
- sprintf (bitfieldstr, "%u", bitfield);
- interp -> result = bitfieldstr;
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(bitfield));
return TCL_OK;
-@@ -67,14 +65,11 @@
- int wn_bit (ClientData clientData, Tcl_Interp *interp,
+ }
+@@ -64,17 +63,15 @@
+ */
+
+-int wn_bit (ClientData clientData, Tcl_Interp *interp,
- int argc, char *argv[]) {
- unsigned int bitfield;
- static char bitfieldstr[32];
-+ int argc, Tcl_Obj *objv[]) {
++static int
++wn_bit (ClientData clientData, Tcl_Interp *interp,
++ int argc, Tcl_Obj * const objv[]) {
int whichbit;
if (argc != 2) {
- interp -> result = "usage: bit bitnum";
@@ -53,16 +70,193 @@
+ return TCL_ERROR;
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(bit(whichbit)));
return TCL_OK;
-@@ -275,5 +270,5 @@
+ }
+@@ -85,8 +82,9 @@
+ */
+
+-int wn_search (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_search (ClientData clientData, Tcl_Interp *interp,
++ int argc, const char * argv[]) {
+ int pos, searchtype, sense;
+- char *morph;
++ const char *morph;
+ if (argc != 5) {
+ interp -> result =
+@@ -112,6 +110,7 @@
+ */
+
+-int wn_glosses (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_glosses (ClientData clientData, Tcl_Interp *interp,
++ int argc, const char *argv[]) {
+ if (argc != 2) {
+ interp -> result = "usage: glosses [1 | 0]";
+@@ -127,6 +126,7 @@
+ */
+
+-int wn_fileinfo (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_fileinfo (ClientData clientData, Tcl_Interp *interp,
++ int argc, const char *argv[]) {
+ if (argc != 2) {
+ interp -> result = "usage: fileinfo [1 | 0]";
+@@ -142,6 +142,7 @@
+ */
+
+-int wn_byteoffset (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_byteoffset (ClientData clientData, Tcl_Interp *interp,
++ int argc, const char *argv[]) {
+ if (argc != 2) {
+ interp -> result = "usage: byteoffset [1 | 0]";
+@@ -157,11 +158,15 @@
+ */
+
+-int wn_senseflag (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_senseflag (ClientData clientData, Tcl_Interp *interp,
++ int argc, Tcl_Obj * const objv[]) {
+ if (argc != 2) {
+- interp -> result = "usage: senseflag [1 | 0]";
++ Tcl_WrongNumArgs(interp, 0, objv, "?1|0?");
+ return TCL_ERROR;
+ }
+- wnsnsflag = atoi (argv[1]);
++ if (Tcl_GetBooleanFromObj(interp, objv[1], &argc) != TCL_OK)
++ return TCL_ERROR;
++
++ wnsnsflag = argc; /* argc got recycled here */
+ return TCL_OK;
+ }
+@@ -172,6 +177,7 @@
+ */
+
+-int wn_contextualhelp (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_contextualhelp (ClientData clientData, Tcl_Interp *interp,
++ int argc, Tcl_Obj * const objv[]) {
+ int pos, searchtype;
+ if (argc != 3) {
+@@ -179,7 +185,9 @@
+ return TCL_ERROR;
+ }
+- pos = atoi (argv[1]);
+- searchtype = atoi (argv[2]);
+- interp -> result = helptext[pos][searchtype];
++ if (Tcl_GetIntFromObj(interp, objv[1], &pos) != TCL_OK ||
++ Tcl_GetIntFromObj(interp, objv[2], &searchtype) != TCL_OK)
++ return TCL_ERROR;
++ /* Dropping const-ness below is Ok, because TCL_STATIC tells Tcl to DTRT */
++ Tcl_SetResult(interp, (char *)helptext[pos][searchtype], TCL_STATIC);
+ return TCL_OK;
+ }
+@@ -188,6 +196,7 @@
+ */
+
+-int wn_reopendb (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_reopendb (ClientData clientData, Tcl_Interp *interp,
++ int argc, Tcl_Obj * const objv[]) {
+ if (argc != 1) {
+ interp -> result = "usage: reopendb";
+@@ -202,6 +211,7 @@
+ */
+
+-int wn_abortsearch (ClientData clientData, Tcl_Interp *interp,
+- int argc, char *argv[]) {
++static int
++wn_abortsearch (ClientData clientData, Tcl_Interp *interp,
++ int argc, Tcl_Obj * const objv[]) {
+ if (argc != 1) {
+ interp -> result = "usage: abortsearch";
+@@ -212,4 +222,20 @@
+ }
+
++/* Return text of the license. The license is compiled in anyway, so
++** there is not point in keeping another copy in a separate file.
++*/
++static int
++wn_license(ClientData clientData, Tcl_Interp *interp,
++ int objc, Tcl_Obj * const objv[]) {
++ if (objc != 1) {
++ Tcl_WrongNumArgs(interp, 0, objv, "no arguments");
++ return TCL_ERROR;
++ }
++ /* Dropping the const is Ok, as we supply TCL_STATIC to TCL API */
++ Tcl_SetResult(interp, (char *)license, TCL_STATIC);
++ return TCL_OK;
++}
++
++
+ /* This is a callback function invoked by the WordNet search engine every so
+ ** often, to allow the interface to respond to events (especially the pressing
+@@ -217,5 +242,6 @@
+ */
+
+-void tkwn_doevents (void) {
++static void
++tkwn_doevents (void) {
+ while (Tcl_DoOneEvent (TCL_WINDOW_EVENTS | TCL_DONT_WAIT) != 0) {}
+ }
+@@ -226,5 +252,6 @@
+ */
+
+-int tkwn_displayerror (char *msg) {
++static int
++tkwn_displayerror (const char *msg) {
+ #ifdef _WINDOWS
+ MessageBeep (MB_ICONEXCLAMATION);
+@@ -232,5 +259,5 @@
+ MB_ICONEXCLAMATION | MB_OK | MB_TASKMODAL | MB_SETFOREGROUND);
+ #else
+- fprintf (stderr, "%s", msg);
++ fputs(msg, stderr);
+ #endif
+ return -1;
+@@ -246,25 +273,26 @@
+ display_message = tkwn_displayerror;
wninit ();
- Tcl_CreateCommand (interp, "findvalidsearches", (void *)
-+ Tcl_CreateObjCommand (interp, "findvalidsearches", (void *)
++ Tcl_CreateObjCommand (interp, "findvalidsearches",
wn_findvalidsearches, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
- Tcl_CreateCommand (interp, "bit", (void *) wn_bit, (ClientData) NULL,
-+ Tcl_CreateObjCommand (interp, "bit", (void *) wn_bit, (ClientData) NULL,
++ Tcl_CreateObjCommand (interp, "bit", wn_bit, (ClientData) NULL,
(Tcl_CmdDeleteProc *) NULL);
-@@ -295,3 +290,3 @@
+- Tcl_CreateCommand (interp, "search", (void *) wn_search, (ClientData)
++ Tcl_CreateCommand (interp, "search", wn_search, (ClientData)
+ NULL, (Tcl_CmdDeleteProc *) NULL);
+- Tcl_CreateCommand (interp, "glosses", (void *) wn_glosses, (ClientData)
++ Tcl_CreateCommand (interp, "glosses", wn_glosses, (ClientData)
+ NULL, (Tcl_CmdDeleteProc *) NULL);
+- Tcl_CreateCommand (interp, "fileinfo", (void *) wn_fileinfo, (ClientData)
++ Tcl_CreateCommand (interp, "fileinfo", wn_fileinfo, (ClientData)
+ NULL, (Tcl_CmdDeleteProc *) NULL);
+- Tcl_CreateCommand (interp, "byteoffset", (void *) wn_byteoffset,
++ Tcl_CreateCommand (interp, "byteoffset", wn_byteoffset,
+ (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+- Tcl_CreateCommand (interp, "senseflag", (void *) wn_senseflag,
++ Tcl_CreateObjCommand (interp, "senseflag", wn_senseflag,
+ (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+- Tcl_CreateCommand (interp, "contextualhelp", (void *) wn_contextualhelp,
++ Tcl_CreateObjCommand (interp, "contextualhelp", wn_contextualhelp,
+ (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+- Tcl_CreateCommand (interp, "reopendb", (void *) wn_reopendb, (ClientData)
++ Tcl_CreateObjCommand (interp, "reopendb", wn_reopendb, (ClientData)
+ NULL, (Tcl_CmdDeleteProc *) NULL);
+- Tcl_CreateCommand (interp, "abortsearch", (void *) wn_abortsearch,
++ Tcl_CreateObjCommand (interp, "abortsearch", wn_abortsearch,
(ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
- return TCL_OK;
-+ return Tcl_PkgProvide(interp, "Wordnet", "2.0");
++ Tcl_CreateObjCommand (interp, "wnlicense", wn_license,
++ (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
++ return Tcl_PkgProvide(interp, "Wordnet", "2.1");
}
+-
diff --git a/textproc/wordnet/files/patch-ad b/textproc/wordnet/files/patch-ad
index 1724ec69b8ed..95545fb09f10 100644
--- a/textproc/wordnet/files/patch-ad
+++ b/textproc/wordnet/files/patch-ad
@@ -1,5 +1,5 @@
---- src/wnb/wnb Sun Feb 22 12:49:56 1998
-+++ src/wnb/wnb Sat Feb 26 19:52:42 2000
+--- src/wnb Sun Feb 22 12:49:56 1998
++++ src/wnb Sat Feb 26 19:52:42 2000
@@ -629,2 +626,6 @@
-text "Based upon an earlier X Window version by\nBrian Gustafson."] \
+ [label .aboutbox.top.right.textmi \
diff --git a/textproc/wordnet/files/patch-ae b/textproc/wordnet/files/patch-ae
index 476f357206f8..e09d71117651 100644
--- a/textproc/wordnet/files/patch-ae
+++ b/textproc/wordnet/files/patch-ae
@@ -1,37 +1,1103 @@
---- src/lib/search.c Tue Jul 15 10:41:55 2003
-+++ src/lib/search.c Tue Feb 17 15:59:53 2004
-@@ -331,5 +331,5 @@
+--- lib/search.c Fri May 6 13:17:39 2005
++++ lib/search.c Sat Jan 14 17:43:08 2006
+@@ -17,5 +17,5 @@
+ #include "wn.h"
+
+-static char *Id = "$Id: search.c,v 1.165 2005/02/24 15:36:00 wn Exp $";
++__FBSDID("$Id: search.c,v 1.165 2005/02/24 15:36:00 wn Exp $");
+
+ /* For adjectives, indicates synset type */
+@@ -45,12 +45,12 @@
+ /* Forward function declarations */
+
+-static void WNOverview(char *, int);
++static void WNOverview(const char *, int);
+ static void findverbgroups(IndexPtr);
+-static void add_relatives(int, IndexPtr, int, int);
++static void add_relatives(int, int);
+ static void free_rellist(void);
+-static void printsynset(char *, SynsetPtr, char *, int, int, int, int);
+-static void printantsynset(SynsetPtr, char *, int, int);
+-static char *printant(int, SynsetPtr, int, char *, char *);
+-static void printbuffer(char *);
++static void printsynset(const char *, SynsetPtr, const char *, int, int, int, int);
++static void printantsynset(SynsetPtr, const char *, int);
++static const char *printant(int, SynsetPtr, int, const char *, const char *);
++static void printbuffer(const char *);
+ static void printsns(SynsetPtr, int);
+ static void printsense(SynsetPtr, int);
+@@ -62,6 +62,6 @@
+ static int getsearchsense(SynsetPtr, int);
+ static int depthcheck(int, SynsetPtr);
+-static void interface_doevents();
+-static void getexample(char *, char *);
++static void interface_doevents(void);
++static void getexample(const char *, const char *);
+ static int findexample(SynsetPtr);
+
+@@ -84,9 +84,10 @@
+ Input word must be exact match of string in database. */
+
+-IndexPtr index_lookup(char *word, int dbase)
++IndexPtr
++index_lookup(const char *word, int dbase)
+ {
+ IndexPtr idx = NULL;
+ FILE *fp;
+- char *line;
++ const char *line;
+
+ if ((fp = indexfps[dbase]) == NULL) {
+@@ -111,14 +112,16 @@
+ */
+
+-IndexPtr parse_index(long offset, int dbase, char *line) {
++IndexPtr
++parse_index(long offset, int dbase, const char *line) {
+
+ IndexPtr idx = NULL;
+ char *ptrtok;
+ int j;
++ int len;
+
+ if ( !line )
+ line = read_index( offset, indexfps[dbase] );
+
+- idx = (IndexPtr)malloc(sizeof(Index));
++ idx = malloc(sizeof(Index));
+ assert(idx);
+
+@@ -136,51 +139,52 @@
+
+ /* get the word */
+- ptrtok=strtok(line," \n");
++ ptrtok = strpbrk(line, " \n");
++ len = ptrtok - line;
+
+- idx->wd = malloc(strlen(ptrtok) + 1);
++ idx->wd = malloc(len + 1);
+ assert(idx->wd);
+- strcpy(idx->wd, ptrtok);
++ memcpy(idx->wd, line, len);
++ idx->wd[len] = '\0';
++ line = ptrtok + 1;
+
+ /* get the part of speech */
+- ptrtok=strtok(NULL," \n");
+- idx->pos = malloc(strlen(ptrtok) + 1);
++ ptrtok = strpbrk(line, " \n");
++ len = ptrtok - line;
++
++ idx->pos = malloc(len + 1);
+ assert(idx->pos);
+- strcpy(idx->pos, ptrtok);
++ memcpy(idx->pos, line, len);
++ idx->pos[len] = '\0';
++ line = ptrtok + 1;
+
+ /* get the collins count */
+- ptrtok=strtok(NULL," \n");
+- idx->sense_cnt = atoi(ptrtok);
+-
++ idx->sense_cnt = strtoul(line, &ptrtok, 10);
++
+ /* get the number of pointers types */
+- ptrtok=strtok(NULL," \n");
+- idx->ptruse_cnt = atoi(ptrtok);
+-
++ idx->ptruse_cnt = strtoul(ptrtok + 1, &ptrtok, 10);
++
+ if (idx->ptruse_cnt) {
+- idx->ptruse = (int *) malloc(idx->ptruse_cnt * (sizeof(int)));
++ idx->ptruse = malloc(idx->ptruse_cnt * (sizeof(short)));
+ assert(idx->ptruse);
+
+ /* get the pointers types */
+ for(j=0;j < idx->ptruse_cnt; j++) {
+- ptrtok=strtok(NULL," \n");
+- idx->ptruse[j] = getptrtype(ptrtok);
++ idx->ptruse[j] = getptrtype(ptrtok + 1, &ptrtok);
+ }
+ }
+
+ /* get the number of offsets */
+- ptrtok=strtok(NULL," \n");
+- idx->off_cnt = atoi(ptrtok);
++ idx->off_cnt = strtoul(ptrtok + 1, &ptrtok, 10);
+
+ /* get the number of senses that are tagged */
+- ptrtok=strtok(NULL," \n");
+- idx->tagged_cnt = atoi(ptrtok);
+-
++ idx->tagged_cnt = strtoul(ptrtok + 1, &ptrtok, 10);
++
+ /* make space for the offsets */
+- idx->offset = (long *) malloc(idx->off_cnt * (sizeof(long)));
++ idx->offset = malloc(idx->off_cnt * (sizeof(long)));
+ assert(idx->offset);
+
+ /* get the offsets */
+ for(j=0;j<idx->off_cnt;j++) {
+- ptrtok=strtok(NULL," \n");
+- idx->offset[j] = atol(ptrtok);
++ idx->offset[j] = strtoul(ptrtok + 1, &ptrtok, 10);
+ }
+ return(idx);
+@@ -191,5 +195,6 @@
+ hyphens, strip hyphens and underscores, strip periods. */
+
+-IndexPtr getindex(char *searchstr, int dbase)
++IndexPtr
++getindex(const char *searchstr, int dbase)
+ {
+ int i, j, k;
+@@ -207,6 +212,8 @@
+
+ offset = 0;
+- strtolower(searchstr);
+- for (i = 0; i < MAX_FORMS; i++) {
++ strtolower2(searchstr, strings[0]);
++ searchstr = strings[0];
++ offsets[0] = 0;
++ for (i = 1; i < MAX_FORMS; i++) {
+ strcpy(strings[i], searchstr);
+ offsets[i] = 0;
+@@ -230,9 +237,9 @@
+ and get offsets of unique strings. */
+
+- if (strings[0][0] != NULL)
++ if (strings[0][0] != '\0')
+ offsets[0] = index_lookup(strings[0], dbase);
+
+ for (i = 1; i < MAX_FORMS; i++)
+- if ((strings[i][0]) != NULL && (strcmp(strings[0], strings[i])))
++ if ((strings[i][0]) != '\0' && (strcmp(strings[0], strings[i])))
+ offsets[i] = index_lookup(strings[i], dbase);
+ }
+@@ -251,5 +258,6 @@
+ entry in data structure. */
+
+-SynsetPtr read_synset(int dbase, long boffset, char *word)
++SynsetPtr
++read_synset(int dbase, long boffset, const char *word)
+ {
+ FILE *fp;
+@@ -270,19 +278,18 @@
+ in data structure. */
+
+-SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
++SynsetPtr
++parse_synset(FILE *fp, int dbase, const char *word)
+ {
+- static char line[LINEBUF];
+- char tbuf[SMLINEBUF];
++ char line[LINEBUF];
+ char *ptrtok;
+- char *tmpptr;
+ int foundpert = 0;
+ char wdnum[3];
+- int i;
++ int i, len;
+ SynsetPtr synptr;
+- long loc; /* sanity check on file location */
++ unsigned long loc; /* sanity check on file location */
+
+ loc = ftell(fp);
+
+- if ((tmpptr = fgets(line, LINEBUF, fp)) == NULL)
++ if (fgets(line, LINEBUF, fp) == NULL)
+ return(NULL);
+
+@@ -315,13 +322,10 @@
+ synptr->headsense = 0;
+
+- ptrtok = line;
+-
+ /* looking at offset */
+- ptrtok = strtok(line," \n");
+- synptr->hereiam = atol(ptrtok);
++ synptr->hereiam = strtol(line, &ptrtok, 10);
+
/* sanity check - make sure starting file offset matches first field */
if (synptr->hereiam != loc) {
- sprintf(msgbuf, "WordNet library error: no synset at location %d\n",
-+ sprintf(msgbuf, "WordNet library error: no synset at location %ld\n",
++ sprintf(msgbuf, "WordNet library error: no synset at location %lu\n",
loc);
display_message(msgbuf);
-@@ -464,5 +464,5 @@
- if (ptrtok) {
- ptrtok = strtok(NULL," \n");
+@@ -331,18 +335,20 @@
+
+ /* looking at FNUM */
+- ptrtok = strtok(NULL," \n");
+- synptr->fnum = atoi(ptrtok);
++ synptr->fnum = strtol(ptrtok + 1, &ptrtok, 10);
+
+ /* looking at POS */
+- ptrtok = strtok(NULL, " \n");
+- synptr->pos = malloc(strlen(ptrtok) + 1);
++ ptrtok++;
++ len = strpbrk(ptrtok, " \n") - ptrtok;
++ synptr->pos = malloc(len + 1);
+ assert(synptr->pos);
+- strcpy(synptr->pos, ptrtok);
++ memcpy(synptr->pos, ptrtok, len);
++ synptr->pos[len] = '\0';
++ ptrtok += len;
+ if (getsstype(synptr->pos) == SATELLITE)
+ synptr->sstype = INDIRECT_ANT;
+
+ /* looking at numwords */
+- ptrtok = strtok(NULL, " \n");
+- synptr->wcount = strtol(ptrtok, NULL, 16);
++ synptr->wcount = strtol(ptrtok, &ptrtok, 16);
++ ptrtok++;
+
+ synptr->words = (char **)malloc(synptr->wcount * sizeof(char *));
+@@ -354,40 +360,42 @@
+
+ for (i = 0; i < synptr->wcount; i++) {
+- ptrtok = strtok(NULL, " \n");
+- synptr->words[i] = malloc(strlen(ptrtok) + 1);
++ len = strpbrk(ptrtok, " \n") - ptrtok;
++ synptr->words[i] = malloc(len + 1);
+ assert(synptr->words[i]);
+- strcpy(synptr->words[i], ptrtok);
++ memcpy(synptr->words[i], ptrtok, len);
++ synptr->words[i][len] = '\0';
+
+ /* is this the word we're looking for? */
+
+- if (word && !strcmp(word,strtolower(ptrtok)))
++ if (word && !strcmp(word, synptr->words[i]))
+ synptr->whichword = i+1;
+
+- ptrtok = strtok(NULL, " \n");
+- sscanf(ptrtok, "%x", &synptr->lexid[i]);
++ ptrtok += len;
++ synptr->lexid[i] = strtol(ptrtok, &ptrtok, 16);
++ ptrtok++;
+ }
+
+ /* get the pointer count */
+- ptrtok = strtok(NULL," \n");
+- synptr->ptrcount = atoi(ptrtok);
++ synptr->ptrcount = strtol(ptrtok, &ptrtok, 10);
++ ptrtok++;
+
+ if (synptr->ptrcount) {
+
+ /* alloc storage for the pointers */
+- synptr->ptrtyp = (int *)malloc(synptr->ptrcount * sizeof(int));
++ synptr->ptrtyp = malloc(synptr->ptrcount * sizeof(int));
+ assert(synptr->ptrtyp);
+- synptr->ptroff = (long *)malloc(synptr->ptrcount * sizeof(long));
++ synptr->ptroff = malloc(synptr->ptrcount * sizeof(unsigned long));
+ assert(synptr->ptroff);
+- synptr->ppos = (int *)malloc(synptr->ptrcount * sizeof(int));
++ synptr->ppos = malloc(synptr->ptrcount * sizeof(int));
+ assert(synptr->ppos);
+- synptr->pto = (int *)malloc(synptr->ptrcount * sizeof(int));
++ synptr->pto = malloc(synptr->ptrcount * sizeof(short));
+ assert(synptr->pto);
+- synptr->pfrm = (int *)malloc(synptr->ptrcount * sizeof(int));
++ synptr->pfrm = malloc(synptr->ptrcount * sizeof(short));
+ assert(synptr->pfrm);
+
+ for(i = 0; i < synptr->ptrcount; i++) {
+ /* get the pointer type */
+- ptrtok = strtok(NULL," \n");
+- synptr->ptrtyp[i] = getptrtype(ptrtok);
++ synptr->ptrtyp[i] = getptrtype(ptrtok, &ptrtok);
++ ptrtok++;
+ /* For adjectives, set the synset type if it has a direct
+ antonym */
+@@ -400,23 +408,19 @@
+
+ /* get the pointer offset */
+- ptrtok = strtok(NULL," \n");
+- synptr->ptroff[i] = atol(ptrtok);
++ synptr->ptroff[i] = strtol(ptrtok, &ptrtok, 10);
++ ptrtok++;
+
+ /* get the pointer part of speech */
+- ptrtok = strtok(NULL, " \n");
+ synptr->ppos[i] = getpos(ptrtok);
+
+ /* get the lexp to/from restrictions */
+- ptrtok = strtok(NULL," \n");
+-
+- tmpptr = ptrtok;
+- strncpy(wdnum, tmpptr, 2);
++
++ ptrtok = strpbrk(ptrtok, " \n") + 1;
++ strncpy(wdnum, ptrtok, 2);
+ wdnum[2] = '\0';
+- synptr->pfrm[i] = strtol(wdnum, (char **)NULL, 16);
++ synptr->pfrm[i] = strtoul(wdnum, NULL, 16);
+
+- tmpptr += 2;
+- strncpy(wdnum, tmpptr, 2);
+- wdnum[2] = '\0';
+- synptr->pto[i] = strtol(wdnum, (char **)NULL, 16);
++ synptr->pto[i] = strtoul(ptrtok + 2, &ptrtok, 16);
++ ptrtok++; /* Something like ``0000 '' */
+ }
+ }
+@@ -429,23 +433,22 @@
+ /* retireve optional information from verb synset */
+ if(dbase == VERB) {
+- ptrtok = strtok(NULL," \n");
+- synptr->fcount = atoi(ptrtok);
+-
++ synptr->fcount = strtol(ptrtok, &ptrtok, 10);
++ ptrtok++;
+ /* allocate frame storage */
+
+- synptr->frmid = (int *)malloc(synptr->fcount * sizeof(int));
++ synptr->frmid = malloc(synptr->fcount * sizeof(int));
+ assert(synptr->frmid);
+- synptr->frmto = (int *)malloc(synptr->fcount * sizeof(int));
++ synptr->frmto = malloc(synptr->fcount * sizeof(int));
+ assert(synptr->frmto);
+
+ for(i=0;i<synptr->fcount;i++) {
+ /* skip the frame pointer (+) */
+- ptrtok = strtok(NULL," \n");
++ ptrtok = strpbrk(ptrtok, " \n") + 1;
+
+- ptrtok = strtok(NULL," \n");
+- synptr->frmid[i] = atoi(ptrtok);
++ synptr->frmid[i] = strtol(ptrtok, &ptrtok, 10);
++ ptrtok++;
+
+- ptrtok = strtok(NULL," \n");
+- synptr->frmto[i] = strtol(ptrtok, NULL, 16);
++ synptr->frmto[i] = strtol(ptrtok, &ptrtok, 16);
++ ptrtok++;
+ }
+ }
+@@ -453,22 +456,38 @@
+ /* get the optional definition */
+
+- ptrtok = strtok(NULL," \n");
+- if (ptrtok) {
+- ptrtok = strtok(NULL," \n");
- sprintf(tbuf, "");
-+ tbuf[0] = '\0';
- while (ptrtok != NULL) {
- strcat(tbuf,ptrtok);
-@@ -478,5 +478,5 @@
+- while (ptrtok != NULL) {
+- strcat(tbuf,ptrtok);
+- ptrtok = strtok(NULL, " \n");
+- if(ptrtok)
+- strcat(tbuf," ");
+- }
+- assert((1 + strlen(tbuf)) < sizeof(tbuf));
+- synptr->defn = malloc(strlen(tbuf) + 4);
++ ptrtok = strpbrk(ptrtok, " \n") + 1;
++ if (ptrtok && *ptrtok) {
++ char *defn;
++ len = strlen(ptrtok);
++ synptr->defn = malloc(len + 2);
+ assert(synptr->defn);
+- sprintf(synptr->defn,"(%s)",tbuf);
++ synptr->defn[0] = '(';
++ for (defn = synptr->defn + 1; *ptrtok; ptrtok++) {
++ switch (*ptrtok) {
++ case '\n':
++ case ' ':
++ /* skip adjacent and initial blanks: */
++ if (defn == synptr->defn + 1 || defn[-1] == ' ')
++ continue;
++ do
++ ptrtok++;
++ while (*ptrtok == '\n' || *ptrtok == ' ');
++ if (*ptrtok == '\0')
++ break; /* out of the loop */
++ *defn++ = ' ';
++ /* FALLTHROUGH */;
++ default:
++ *defn++ = *ptrtok;
++ continue;
++ }
++ break;
++ }
++ *defn++ = ')';
++ assert(defn - synptr->defn < len + 2);
++ *defn = '\0';
+ }
if (keyindexfp) { /* we have unique keys */
- sprintf(tmpbuf, "%c:%8.8d", partchars[dbase], synptr->hereiam);
+ sprintf(tmpbuf, "%c:%8.8ld", partchars[dbase], synptr->hereiam);
synptr->key = GetKeyForOffset(tmpbuf);
}
-@@ -2350,5 +2350,5 @@
+@@ -547,5 +565,5 @@
+ /* Recursive search algorithm to trace a pointer tree */
+
+-static void traceptrs(SynsetPtr synptr, int ptrtyp, int dbase, int depth)
++static void traceptrs(SynsetPtr synptr, int ptyp, int dbase, int depth)
+ {
+ int i;
+@@ -559,15 +577,15 @@
+ return;
+
+- if (ptrtyp < 0) {
+- ptrtyp = -ptrtyp;
++ if (ptyp < 0) {
++ ptyp = -ptyp;
+ extraindent = 2;
+ }
+
+ for (i = 0; i < synptr->ptrcount; i++) {
+- if ((ptrtyp == HYPERPTR && (synptr->ptrtyp[i] == HYPERPTR ||
++ if ((ptyp == HYPERPTR && (synptr->ptrtyp[i] == HYPERPTR ||
+ synptr->ptrtyp[i] == INSTANCE)) ||
+- (ptrtyp == HYPOPTR && (synptr->ptrtyp[i] == HYPOPTR ||
++ (ptyp == HYPOPTR && (synptr->ptrtyp[i] == HYPOPTR ||
+ synptr->ptrtyp[i] == INSTANCES)) ||
+- ((synptr->ptrtyp[i] == ptrtyp) &&
++ ((synptr->ptrtyp[i] == ptyp) &&
+ ((synptr->pfrm[i] == 0) ||
+ (synptr->pfrm[i] == synptr->whichword)))) {
+@@ -634,5 +652,5 @@
+ Otherwise, just print the synset pointed to. */
+
+- if ((ptrtyp == PERTPTR || ptrtyp == PPLPTR) &&
++ if ((ptyp == PERTPTR || ptyp == PPLPTR) &&
+ synptr->pto[i] != 0) {
+ sprintf(tbuf, " (Sense %d)\n",
+@@ -640,5 +658,5 @@
+ printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
+ SKIP_ANTS, PRINT_MARKER);
+- if (ptrtyp == PPLPTR) { /* adjective pointing to verb */
++ if (ptyp == PPLPTR) { /* adjective pointing to verb */
+ printsynset(" =>", cursyn, "\n",
+ DEFON, ALLWORDS, PRINT_ANTS, PRINT_MARKER);
+@@ -656,5 +674,5 @@
+ traceptrs(cursyn, HYPERPTR, getpos(cursyn->pos), 0);
+ }
+- } else if (ptrtyp == ANTPTR && dbase != ADJ && synptr->pto[i] != 0) {
++ } else if (ptyp == ANTPTR && dbase != ADJ && synptr->pto[i] != 0) {
+ sprintf(tbuf, " (Sense %d)\n",
+ cursyn->wnsns[synptr->pto[i] - 1]);
+@@ -670,10 +688,10 @@
+ printed in buffer so results can be truncated later. */
+
+- if (ptrtyp >= ISMEMBERPTR && ptrtyp <= HASPARTPTR)
++ if (ptyp >= ISMEMBERPTR && ptyp <= HASPARTPTR)
+ lastholomero = strlen(searchbuffer);
+
+ if(depth) {
+ depth = depthcheck(depth, cursyn);
+- traceptrs(cursyn, ptrtyp, getpos(cursyn->pos), (depth+1));
++ traceptrs(cursyn, ptyp, getpos(cursyn->pos), (depth+1));
+
+ free_synset(cursyn);
+@@ -684,5 +702,6 @@
+ }
+
+-static void tracecoords(SynsetPtr synptr, int ptrtyp, int dbase, int depth)
++static void
++tracecoords(SynsetPtr synptr, int ptyp, int depth)
+ {
+ int i;
+@@ -709,9 +728,9 @@
+ SKIP_ANTS, PRINT_MARKER);
+
+- traceptrs(cursyn, ptrtyp, getpos(cursyn->pos), depth);
++ traceptrs(cursyn, ptyp, getpos(cursyn->pos), depth);
+
+ if(depth) {
+ depth = depthcheck(depth, cursyn);
+- tracecoords(cursyn, ptrtyp, getpos(cursyn->pos), (depth+1));
++ tracecoords(cursyn, ptyp, (depth+1));
+ free_synset(cursyn);
+ } else
+@@ -721,9 +740,10 @@
+ }
+
+-static void traceclassif(SynsetPtr synptr, int dbase, int search)
++static void
++traceclassif(SynsetPtr synptr, int search)
+ {
+ int i, j, idx;
+ SynsetPtr cursyn;
+- long int prlist[1024];
++ unsigned int prlist[1024];
+ char head[60];
+ int svwnsnsflag;
+@@ -789,5 +809,6 @@
+ }
+
+-static void tracenomins(SynsetPtr synptr, int dbase)
++static void
++tracenomins(SynsetPtr synptr)
+ {
+ int i, j, idx;
+@@ -848,5 +869,6 @@
+ and PART info. */
+
+-static void traceinherit(SynsetPtr synptr, int ptrbase, int dbase, int depth)
++static void
++traceinherit(SynsetPtr synptr, int ptrbase, int depth)
+ {
+ int i;
+@@ -879,5 +901,5 @@
+ if(depth) {
+ depth = depthcheck(depth, cursyn);
+- traceinherit(cursyn, ptrbase, getpos(cursyn->pos), (depth+1));
++ traceinherit(cursyn, ptrbase, depth + 1);
+ free_synset(cursyn);
+ } else
+@@ -890,10 +912,10 @@
+ }
+
+-static void partsall(SynsetPtr synptr, int ptrtyp)
++static void partsall(SynsetPtr synptr, int ptyp)
+ {
+ int ptrbase;
+ int i, hasptr = 0;
+
+- ptrbase = (ptrtyp == HMERONYM) ? HASMEMBERPTR : ISMEMBERPTR;
++ ptrbase = (ptyp == HMERONYM) ? HASMEMBERPTR : ISMEMBERPTR;
+
+ /* First, print out the MEMBER, STUFF, PART info for this synset */
+@@ -912,8 +934,8 @@
+ HMERONYM search only */
+
+-/* if (hasptr && ptrtyp == HMERONYM) { */
+- if (ptrtyp == HMERONYM) {
++/* if (hasptr && ptyp == HMERONYM) { */
++ if (ptyp == HMERONYM) {
+ lastholomero = strlen(searchbuffer);
+- traceinherit(synptr, ptrbase, NOUN, 1);
++ traceinherit(synptr, ptrbase, 1);
+ }
+ }
+@@ -971,5 +993,5 @@
+ }
+ } else
+- printantsynset(antptr, "\n", anttype, DEFON);
++ printantsynset(antptr, "\n", DEFON);
+
+ free_synset(antptr);
+@@ -984,11 +1006,13 @@
+ /* Fetch the given example sentence from the example file and print it out */
+
+-void getexample(char *offset, char *wd)
++static void
++getexample(const char *offset, const char *wd)
+ {
+- char *line;
++ const char *line;
+ char sentbuf[512];
+
+ if (vsentfilefp != NULL) {
+- if (line = bin_search(offset, vsentfilefp)) {
++ line = bin_search(offset, vsentfilefp);
++ if (line) {
+ while(*line != ' ')
+ line++;
+@@ -1005,5 +1029,6 @@
+ int findexample(SynsetPtr synptr)
+ {
+- char tbuf[256], *temp, *offset;
++ char tbuf[256];
++ const char *temp, *offset;
+ int wdnum;
+ int found = 0;
+@@ -1097,17 +1122,17 @@
+ }
+
+-static void freq_word(IndexPtr index)
++static void freq_word(IndexPtr idx)
+ {
+ int familiar=0;
+ int cnt;
+- static char *a_an[] = {
++ static const char *a_an[] = {
+ "", "a noun", "a verb", "an adjective", "an adverb" };
+- static char *freqcats[] = {
++ static const char *freqcats[] = {
+ "extremely rare","very rare","rare","uncommon","common",
+ "familiar","very familiar","extremely familiar"
+ };
+
+- if(index) {
+- cnt = index->sense_cnt;
++ if(idx) {
++ cnt = idx->sense_cnt;
+ if (cnt == 0) familiar = 0;
+ if (cnt == 1) familiar = 1;
+@@ -1121,10 +1146,11 @@
+ sprintf(tmpbuf,
+ "\n%s used as %s is %s (polysemy count = %d)\n",
+- index->wd, a_an[getpos(index->pos)], freqcats[familiar], cnt);
++ idx->wd, a_an[getpos(idx->pos)], freqcats[familiar], cnt);
+ printbuffer(tmpbuf);
+ }
+ }
+
+-void wngrep (char *word_passed, int pos) {
++static void
++wngrep(const char *word_passed, int pos) {
+ FILE *inputfile;
+ char word[256];
+@@ -1237,5 +1263,5 @@
+ for (k = 0; k < idx->off_cnt; k++) {
+ if (synset->ptroff[j] == idx->offset[k]) {
+- add_relatives(VERB, idx, i, k);
++ add_relatives(i, k);
+ break;
+ }
+@@ -1247,8 +1273,9 @@
+ }
+
+-static void add_relatives(int pos, IndexPtr idx, int rel1, int rel2)
++static void
++add_relatives(int rel1, int rel2)
+ {
+ int i;
+- struct relgrp *rel, *last, *r;
++ struct relgrp *rel, *last = NULL, *r;
+
+ /* If either of the new relatives are already in a relative group,
+@@ -1350,5 +1377,6 @@
+ */
+
+-char *findtheinfo(char *searchstr, int dbase, int ptrtyp, int whichsense)
++const char *
++findtheinfo(const char *searchstr, int dbase, int ptyp, int whichsense)
+ {
+ SynsetPtr cursyn;
+@@ -1358,5 +1386,5 @@
+ char *bufstart;
+ unsigned long offsets[MAXSENSE];
+- int skipit;
++ int skipit = 0;
+
+ /* Initializations -
+@@ -1373,5 +1401,5 @@
+ offsets[i] = 0;
+
+- switch (ptrtyp) {
++ switch (ptyp) {
+ case OVERVIEW:
+ WNOverview(searchstr, dbase);
+@@ -1402,6 +1430,6 @@
+
+ /* If negative search type, set flag for recursive search */
+- if (ptrtyp < 0) {
+- ptrtyp = -ptrtyp;
++ if (ptyp < 0) {
++ ptyp = -ptyp;
+ depth = 1;
+ }
+@@ -1439,5 +1467,5 @@
+ offsets[offsetcnt++] = idx->offset[sense];
+ cursyn = read_synset(dbase, idx->offset[sense], idx->wd);
+- switch(ptrtyp) {
++ switch(ptyp) {
+ case ANTPTR:
+ if(dbase == ADJ)
+@@ -1448,5 +1476,5 @@
+
+ case COORDS:
+- tracecoords(cursyn, HYPOPTR, dbase, depth);
++ tracecoords(cursyn, HYPOPTR, depth);
+ break;
+
+@@ -1481,5 +1509,5 @@
+ #ifdef FOOP
+ case PPLPTR:
+- traceptrs(cursyn, ptrtyp, dbase, depth);
++ traceptrs(cursyn, ptyp, dbase, depth);
+ traceptrs(cursyn, PPLPTR, dbase, depth);
+ break;
+@@ -1492,5 +1520,5 @@
+ prflag = 1;
+
+- traceptrs(cursyn, ptrtyp, dbase, depth);
++ traceptrs(cursyn, ptyp, dbase, depth);
+
+ if (dbase == ADJ) {
+@@ -1509,14 +1537,14 @@
+
+ case DERIVATION:
+- tracenomins(cursyn, dbase);
++ tracenomins(cursyn);
+ break;
+
+ case CLASSIFICATION:
+ case CLASS:
+- traceclassif(cursyn, dbase, ptrtyp);
++ traceclassif(cursyn, ptyp);
+ break;
+
+ default:
+- traceptrs(cursyn, ptrtyp, dbase, depth);
++ traceptrs(cursyn, ptyp, dbase, depth);
+ break;
+
+@@ -1587,5 +1615,6 @@
+ }
+
+-SynsetPtr findtheinfo_ds(char *searchstr, int dbase, int ptrtyp, int whichsense)
++SynsetPtr
++findtheinfo_ds(char *searchstr, int dbase, int ptyp, int whichsense)
+ {
+ IndexPtr idx;
+@@ -1603,6 +1632,6 @@
+ newsense = 1;
+
+- if(ptrtyp < 0) {
+- ptrtyp = -ptrtyp;
++ if(ptyp < 0) {
++ ptyp = -ptyp;
+ depth = 1;
+ }
+@@ -1629,8 +1658,6 @@
+ newsense = 0;
+
+- cursyn->searchtype = ptrtyp;
+- cursyn->ptrlist = traceptrs_ds(cursyn, ptrtyp,
+- getpos(cursyn->pos),
+- depth);
++ cursyn->searchtype = ptyp;
++ cursyn->ptrlist = traceptrs_ds(cursyn, ptyp, depth);
+
+ lastsyn = cursyn;
+@@ -1643,5 +1670,5 @@
+ wnresults.numforms++;
+
+- if (ptrtyp == COORDS) { /* clean up by removing hypernym */
++ if (ptyp == COORDS) { /* clean up by removing hypernym */
+ lastsyn = synlist->ptrlist;
+ synlist->ptrlist = lastsyn->ptrlist;
+@@ -1656,5 +1683,6 @@
+ in linked list of data structures. */
+
+-SynsetPtr traceptrs_ds(SynsetPtr synptr, int ptrtyp, int dbase, int depth)
++SynsetPtr
++traceptrs_ds(SynsetPtr synptr, int ptyp, int depth)
+ {
+ int i;
+@@ -1680,9 +1708,9 @@
+ }
+
+- if (ptrtyp == COORDS) {
++ if (ptyp == COORDS) {
+ tstptrtyp = HYPERPTR;
+ docoords = 1;
+ } else {
+- tstptrtyp = ptrtyp;
++ tstptrtyp = ptyp;
+ docoords = 0;
+ }
+@@ -1694,5 +1722,5 @@
+
+ cursyn=read_synset(synptr->ppos[i], synptr->ptroff[i], "");
+- cursyn->searchtype = ptrtyp;
++ cursyn->searchtype = ptyp;
+
+ if (lastsyn)
+@@ -1704,9 +1732,7 @@
+ if(depth) {
+ depth = depthcheck(depth, cursyn);
+- cursyn->ptrlist = traceptrs_ds(cursyn, ptrtyp,
+- getpos(cursyn->pos),
+- (depth+1));
++ cursyn->ptrlist = traceptrs_ds(cursyn, ptyp, (depth+1));
+ } else if (docoords) {
+- cursyn->ptrlist = traceptrs_ds(cursyn, HYPOPTR, NOUN, 0);
++ cursyn->ptrlist = traceptrs_ds(cursyn, HYPOPTR, 0);
+ }
+ }
+@@ -1715,10 +1741,12 @@
+ }
+
+-static void WNOverview(char *searchstr, int pos)
++static void
++WNOverview(const char *searchstr, int pos)
+ {
+ SynsetPtr cursyn;
+ IndexPtr idx = NULL;
+- char *cpstring = searchstr, *bufstart;
+- int sense, i, offsetcnt;
++ const char *cpstring;
++ char *bufstart;
++ int sense_, i, offsetcnt;
+ int svdflag, skipit;
+ unsigned long offsets[MAXSENSE];
+@@ -1742,19 +1770,19 @@
+ synset with synset offset and/or lexical file information.*/
+
+- for (sense = 0; sense < idx->off_cnt; sense++) {
++ for (sense_ = 0; sense_ < idx->off_cnt; sense_++) {
+
+ for (i = 0, skipit = 0; i < offsetcnt && !skipit; i++)
+- if (offsets[i] == idx->offset[sense])
++ if (offsets[i] == idx->offset[sense_])
+ skipit = 1;
+
+ if (!skipit) {
+- offsets[offsetcnt++] = idx->offset[sense];
+- cursyn = read_synset(pos, idx->offset[sense], idx->wd);
++ offsets[offsetcnt++] = idx->offset[sense_];
++ cursyn = read_synset(pos, idx->offset[sense_], idx->wd);
+ if (idx->tagged_cnt != -1 &&
+- ((sense + 1) <= idx->tagged_cnt)) {
++ ((sense_ + 1) <= idx->tagged_cnt)) {
+ sprintf(tmpbuf, "%d. (%d) ",
+- sense + 1, GetTagcnt(idx, sense + 1));
++ sense_ + 1, GetTagcnt(idx, sense_ + 1));
+ } else {
+- sprintf(tmpbuf, "%d. ", sense + 1);
++ sprintf(tmpbuf, "%d. ", sense_ + 1);
+ }
+
+@@ -1801,8 +1829,9 @@
+ /* Do requested search on synset passed, returning output in buffer. */
+
+-char *do_trace(SynsetPtr synptr, int ptrtyp, int dbase, int depth)
++const char *
++do_trace(SynsetPtr synptr, int ptyp, int dbase, int depth)
+ {
+ searchbuffer[0] = '\0'; /* clear output buffer */
+- traceptrs(synptr, ptrtyp, dbase, depth);
++ traceptrs(synptr, ptyp, dbase, depth);
+ return(searchbuffer);
+ }
+@@ -1811,7 +1840,8 @@
+ passed and return bit mask. */
+
+-unsigned int is_defined(char *searchstr, int dbase)
++unsigned int
++is_defined(const char *searchstr, int dbase)
+ {
+- IndexPtr index;
++ IndexPtr idx;
+ int i;
+ unsigned long retval = 0;
+@@ -1821,8 +1851,8 @@
+ wnresults.searchds = NULL;
+
+- while ((index = getindex(searchstr, dbase)) != NULL) {
++ while ((idx = getindex(searchstr, dbase)) != NULL) {
+ searchstr = NULL; /* clear out for next getindex() call */
+
+- wnresults.SenseCount[wnresults.numforms] = index->off_cnt;
++ wnresults.SenseCount[wnresults.numforms] = idx->off_cnt;
+
+ /* set bits that must be true for all words */
+@@ -1833,36 +1863,36 @@
+ /* go through list of pointer characters and set appropriate bits */
+
+- for(i = 0; i < index->ptruse_cnt; i++) {
++ for(i = 0; i < idx->ptruse_cnt; i++) {
+
+- if (index->ptruse[i] <= LASTTYPE) {
+- retval |= bit(index->ptruse[i]);
+- } else if (index->ptruse[i] == INSTANCE) {
++ if (idx->ptruse[i] <= LASTTYPE) {
++ retval |= bit(idx->ptruse[i]);
++ } else if (idx->ptruse[i] == INSTANCE) {
+ retval |= bit(HYPERPTR);
+- } else if (index->ptruse[i] == INSTANCES) {
++ } else if (idx->ptruse[i] == INSTANCES) {
+ retval |= bit(HYPOPTR);
+ }
+
+- if (index->ptruse[i] == SIMPTR) {
++ if (idx->ptruse[i] == SIMPTR) {
+ retval |= bit(ANTPTR);
+ }
+ #ifdef FOOP
+
+- if (index->ptruse[i] >= CLASSIF_START &&
+- index->ptruse[i] <= CLASSIF_END) {
++ if (idx->ptruse[i] >= CLASSIF_START &&
++ idx->ptruse[i] <= CLASSIF_END) {
+ retval |= bit(CLASSIFICATION);
+ }
+
+
+- if (index->ptruse[i] >= CLASS_START &&
+- index->ptruse[i] <= CLASS_END) {
++ if (idx->ptruse[i] >= CLASS_START &&
++ idx->ptruse[i] <= CLASS_END) {
+ retval |= bit(CLASS);
+ }
+ #endif
+
+- if (index->ptruse[i] >= ISMEMBERPTR &&
+- index->ptruse[i] <= ISPARTPTR)
++ if (idx->ptruse[i] >= ISMEMBERPTR &&
++ idx->ptruse[i] <= ISPARTPTR)
+ retval |= bit(HOLONYM);
+- else if (index->ptruse[i] >= HASMEMBERPTR &&
+- index->ptruse[i] <= HASPARTPTR)
++ else if (idx->ptruse[i] >= HASMEMBERPTR &&
++ idx->ptruse[i] <= HASPARTPTR)
+ retval |= bit(MERONYM);
+
+@@ -1873,7 +1903,7 @@
+ /* check for inherited holonyms and meronyms */
+
+- if (HasHoloMero(index, HMERONYM))
++ if (HasHoloMero(idx, HMERONYM))
+ retval |= bit(HMERONYM);
+- if (HasHoloMero(index, HHOLONYM))
++ if (HasHoloMero(idx, HHOLONYM))
+ retval |= bit(HHOLONYM);
+
+@@ -1893,5 +1923,5 @@
+ }
+
+- free_index(index);
++ free_index(idx);
+ wnresults.numforms++;
+ }
+@@ -1902,5 +1932,6 @@
+ meronyms or holonyms. */
+
+-static int HasHoloMero(IndexPtr index, int ptrtyp)
++static int
++HasHoloMero(IndexPtr idx, int ptyp)
+ {
+ int i, j;
+@@ -1909,8 +1940,8 @@
+ int ptrbase;
+
+- ptrbase = (ptrtyp == HMERONYM) ? HASMEMBERPTR : ISMEMBERPTR;
++ ptrbase = (ptyp == HMERONYM) ? HASMEMBERPTR : ISMEMBERPTR;
+
+- for(i = 0; i < index->off_cnt; i++) {
+- synset = read_synset(NOUN, index->offset[i], "");
++ for(i = 0; i < idx->off_cnt; i++) {
++ synset = read_synset(NOUN, idx->offset[i], "");
+ for (j = 0; j < synset->ptrcount; j++) {
+ if (synset->ptrtyp[j] == HYPERPTR) {
+@@ -1928,10 +1959,10 @@
+ }
+
+-static int HasPtr(SynsetPtr synptr, int ptrtyp)
++static int HasPtr(SynsetPtr synptr, int ptyp)
+ {
+ int i;
+
+ for(i = 0; i < synptr->ptrcount; i++) {
+- if(synptr->ptrtyp[i] == ptrtyp) {
++ if(synptr->ptrtyp[i] == ptyp) {
+ return(1);
+ }
+@@ -1943,5 +1974,6 @@
+ word is not in WordNet. */
+
+-unsigned int in_wn(char *word, int pos)
++unsigned int
++in_wn(const char *word, int pos)
+ {
+ int i;
+@@ -1971,5 +2003,6 @@
+ /* Strip off () enclosed comments from a word */
+
+-static char *deadjify(char *word)
++static char *
++deadjify(char *word)
+ {
+ char *y;
+@@ -2001,5 +2034,6 @@
+ strtolower(wdbuf);
+
+- if (idx = index_lookup(wdbuf, getpos(synptr->pos))) {
++ idx = index_lookup(wdbuf, getpos(synptr->pos));
++ if (idx) {
+ for (i = 0; i < idx->off_cnt; i++)
+ if (idx->offset[i] == synptr->hereiam) {
+@@ -2012,5 +2046,7 @@
+ }
+
+-static void printsynset(char *head, SynsetPtr synptr, char *tail, int definition, int wdnum, int antflag, int markerflag)
++static void
++printsynset(const char *head, SynsetPtr synptr, const char *tail,
++ int definition, int wdnum, int antflag, int markerflag)
+ {
+ int i, wdcnt;
+@@ -2025,5 +2061,5 @@
if (offsetflag) /* print synset offset */
- sprintf(tbuf + strlen(tbuf),"{%8.8d} ", synptr->hereiam);
+ sprintf(tbuf + strlen(tbuf),"{%8.8ld} ", synptr->hereiam);
if (fileinfoflag) { /* print lexicographer file information */
sprintf(tbuf + strlen(tbuf), "<%s> ", lexfiles[synptr->fnum]);
-@@ -2385,5 +2385,5 @@
+@@ -2050,9 +2086,10 @@
+ }
+
+-static void printantsynset(SynsetPtr synptr, char *tail, int anttype, int definition)
++static void
++printantsynset(SynsetPtr synptr, const char *tail, int definition)
+ {
+ int i, wdcnt;
+ char tbuf[SMLINEBUF];
+- char *str;
++ const char *str;
+ int first = 1;
+
+@@ -2060,5 +2097,5 @@
if (offsetflag)
- sprintf(tbuf,"{%8.8d} ", synptr->hereiam);
+ sprintf(tbuf,"{%8.8ld} ", synptr->hereiam);
if (fileinfoflag) {
sprintf(tbuf + strlen(tbuf),"<%s> ", lexfiles[synptr->fnum]);
+@@ -2100,6 +2137,6 @@
+ static void catword(char *buf, SynsetPtr synptr, int wdnum, int adjmarker, int antflag)
+ {
+- static char vs[] = " (vs. %s)";
+- static char *markers[] = {
++ static const char vs[] = " (vs. %s)";
++ static const char *markers[] = {
+ "", /* UNKNOWN_MARKER */
+ "(predicate)", /* PREDICATIVE */
+@@ -2133,5 +2170,7 @@
+ }
+
+-static char *printant(int dbase, SynsetPtr synptr, int wdnum, char *template, char *tail)
++static const char *
++printant(int dbase, SynsetPtr synptr, int wdnum,
++ const char *template, const char *tail)
+ {
+ int i, j, wdoff;
+@@ -2187,5 +2226,6 @@
+ }
+
+-static void printbuffer(char *string)
++static void
++printbuffer(const char *string)
+ {
+ if (overflag)
+@@ -2197,11 +2237,13 @@
+ }
+
+-static void printsns(SynsetPtr synptr, int sense)
++static void
++printsns(SynsetPtr synptr, int sense_)
+ {
+- printsense(synptr, sense);
++ printsense(synptr, sense_);
+ printsynset("", synptr, "\n", DEFON, ALLWORDS, PRINT_ANTS, PRINT_MARKER);
+ }
+
+-static void printsense(SynsetPtr synptr, int sense)
++static void
++printsense(SynsetPtr synptr, int sense_)
+ {
+ char tbuf[256];
+@@ -2211,7 +2253,7 @@
+ if (fnflag)
+ sprintf(tbuf,"\nSense %d in file \"%s\"\n",
+- sense, lexfiles[synptr->fnum]);
++ sense_, lexfiles[synptr->fnum]);
+ else
+- sprintf(tbuf,"\nSense %d\n", sense);
++ sprintf(tbuf,"\nSense %d\n", sense_);
+
+ printbuffer(tbuf);
diff --git a/textproc/wordnet/files/patch-ag b/textproc/wordnet/files/patch-ag
deleted file mode 100644
index 77495e75904c..000000000000
--- a/textproc/wordnet/files/patch-ag
+++ /dev/null
@@ -1,7 +0,0 @@
---- src/wnb/wnb Tue Aug 20 11:54:54 2002
-+++ src/wnb/wnb Tue Aug 20 11:57:02 2002
-@@ -99,3 +96,3 @@
- if {[lsearch -exact [array names env] WNHOME] == -1} {
-- set resourcedir "/usr/local/WordNet-2.0/lib/wnres"
-+ set resourcedir "/usr/local/share/WordNet-2.0/wnres"
- } else {
diff --git a/textproc/wordnet/files/patch-ah b/textproc/wordnet/files/patch-ah
index 2484129a1df5..49db3aae93f3 100644
--- a/textproc/wordnet/files/patch-ah
+++ b/textproc/wordnet/files/patch-ah
@@ -1,12 +1,30 @@
---- src/lib/morph.c Tue Jul 15 10:41:55 2003
-+++ src/lib/morph.c Tue Feb 17 15:50:51 2004
-@@ -45,27 +45,28 @@
+--- lib/morph.c Fri May 6 13:17:39 2005
++++ lib/morph.c Tue Dec 20 23:21:44 2005
+@@ -19,7 +19,7 @@
+ #endif
+
+-static char *Id = "$Id: morph.c,v 1.66 2005/03/18 18:14:24 wn Exp $";
++__FBSDID("$Id: morph.c,v 1.66 2005/03/18 18:14:24 wn Exp $");
+
+-static char *sufx[] ={
++static const char *sufx[] ={
+ /* Noun suffixes */
+ "s", "ses", "xes", "zes", "ches", "shes", "men", "ies",
+@@ -30,5 +30,5 @@
+ };
+
+-static char *addr[] ={
++static const char *addr[] ={
+ /* Noun endings */
+ "", "s", "x", "z", "ch", "sh", "man", "y",
+@@ -43,35 +43,36 @@
static char msgbuf[256];
-#define NUMPREPS 15
static struct {
- char *str;
+- char *str;
++ const char *str;
int strlen;
-} prepositions[NUMPREPS] = {
- "to", 2,
@@ -46,7 +64,41 @@
+
static FILE *exc_fps[NUMPARTS + 1];
-@@ -207,5 +208,6 @@
+-static int do_init();
+-static int strend(char *, char *);
+-static char *wordbase(char *, int);
+-static int hasprep(char *, int);
+-static char *exc_lookup(char *, int);
+-static char *morphprep(char *);
++static int do_init(void);
++static int strend(const char *, const char *);
++static const char *wordbase(const char *, int);
++static int hasprep(const char *, unsigned int);
++static const char *exc_lookup(const char *, int);
++static const char *morphprep(const char *);
+
+ /* Open exception list files */
+@@ -167,13 +168,15 @@
+ with NULL argument return additional baseforms for original string. */
+
+-char *morphstr(char *origstr, int pos)
++const char *
++morphstr(const char *origstr, int pos)
+ {
+ static char searchstr[WORDBUF], str[WORDBUF];
+ static int svcnt, svprep;
+- char word[WORDBUF], *tmp;
++ char word[WORDBUF];
++ const char *tmp;
+ int cnt, st_idx = 0, end_idx;
+ int prep;
+- char *end_idx1, *end_idx2;
+- char *append;
++ const char *end_idx1, *end_idx2;
++ const char *append;
+
+ if (pos == SATELLITE)
+@@ -230,5 +233,6 @@
strncpy(word, str + st_idx, end_idx - st_idx);
word[end_idx - st_idx] = '\0';
- if(tmp = morphword(word, pos))
@@ -54,7 +106,7 @@
+ if(tmp)
strcat(searchstr,tmp);
else
-@@ -215,5 +217,6 @@
+@@ -238,5 +242,6 @@
}
- if(tmp = morphword(strcpy(word, str + st_idx), pos))
@@ -62,21 +114,81 @@
+ if(tmp)
strcat(searchstr,tmp);
else
-@@ -248,6 +251,5 @@
- char *tmp, tmpbuf[WORDBUF], *end;
+@@ -264,13 +269,14 @@
+
+ /* Try to find baseform (lemma) of individual word in POS */
+-char *morphword(char *word, int pos)
++const char *
++morphword(const char *word, int pos)
+ {
+ int offset, cnt;
+ int i;
+ static char retval[WORDBUF];
+- char *tmp, tmpbuf[WORDBUF], *end;
++ char tmpbuf[WORDBUF];
++ const char *tmp, *end;
- sprintf(retval,"");
- sprintf(tmpbuf, "");
+ retval[0] = tmpbuf[0] = '\0';
end = "";
-@@ -343,5 +345,4 @@
+@@ -315,7 +321,7 @@
+ }
+
+-static int strend(char *str1, char *str2)
++static int strend(const char *str1, const char *str2)
+ {
+- char *pt1;
++ const char *pt1;
+
+ if(strlen(str2) >= strlen(str1))
+@@ -329,5 +335,6 @@
+ }
+
+-static char *wordbase(char *word, int ender)
++static const char *
++wordbase(const char *word, int ender)
+ {
+ char *pt1;
+@@ -344,10 +351,10 @@
+ }
+
+-static int hasprep(char *s, int wdcnt)
++static int hasprep(const char *s, unsigned int wdcnt)
+ {
+ /* Find a preposition in the verb string and return its
+ corresponding word number. */
+
+- int i, wdnum;
++ unsigned int i, wdnum;
+
+ for (wdnum = 2; wdnum <= wdcnt; wdnum++) {
+@@ -362,9 +369,9 @@
+ }
+
+-static char *exc_lookup(char *word, int pos)
++static const char *
++exc_lookup(const char *word, int pos)
+ {
static char line[WORDBUF], *beglp, *endlp;
- char *excline;
+- char *excline;
- int found = 0;
++ const char *excline;
if (exc_fps[pos] == NULL)
-@@ -385,5 +386,6 @@
+@@ -394,7 +401,8 @@
+ }
+
+-static char *morphprep(char *s)
++static const char *
++morphprep(const char *s)
+ {
+- char *rest, *exc_word, *lastwd = NULL, *last;
++ const char *rest, *exc_word, *lastwd = NULL, *last;
+ int i, offset, cnt;
+ char word[WORDBUF], end[WORDBUF];
+@@ -408,5 +416,6 @@
last = strrchr(s, '_');
if (rest != last) { /* more than 2 words */
- if (lastwd = morphword(last + 1, NOUN)) {
diff --git a/textproc/wordnet/files/patch-binsrch b/textproc/wordnet/files/patch-binsrch
new file mode 100644
index 000000000000..f63e294a6cd8
--- /dev/null
+++ b/textproc/wordnet/files/patch-binsrch
@@ -0,0 +1,268 @@
+Clean out the unused functions. Improve and const-ify, what remains.
+--- lib/binsrch.c Fri May 6 13:17:38 2005
++++ lib/binsrch.c Sun Jan 15 11:43:36 2006
+@@ -5,8 +5,9 @@
+ */
+
++#include "wn.h"
+ #include <stdio.h>
+ #include <string.h>
+
+-static char *Id = "$Id: binsrch.c,v 1.15 2005/02/01 16:46:43 wn Rel $";
++__FBSDID("$Id: binsrch.c,v 1.15 2005/02/01 16:46:43 wn Rel $");
+
+ /* Binary search - looks for the key passed at the start of a line
+@@ -14,5 +15,4 @@
+ a buffer containing the line in the file. */
+
+-#define KEY_LEN (1024)
+ #define LINE_LEN (1024*25)
+
+@@ -25,201 +25,61 @@
+ #undef getc
+
+-char *read_index(long offset, FILE *fp) {
+- char *linep;
++const char *
++read_index(long offset, FILE *fp) {
+
+- linep = line;
+ line[0] = '0';
+
+- fseek( fp, offset, SEEK_SET );
+- fgets(linep, LINE_LEN, fp);
++ fseek(fp, offset, SEEK_SET);
++ fgets(line, LINE_LEN, fp);
+ return(line);
+ }
+
+-char *bin_search(char *searchkey, FILE *fp)
++static int
++sign(int number)
+ {
+- int c;
+- long top, mid, bot, diff;
+- char *linep, key[KEY_LEN];
+- int length;
+-
+- diff=666;
+- linep = line;
+- line[0] = '\0';
+-
+- fseek(fp, 0L, 2);
+- top = 0;
+- bot = ftell(fp);
+- mid = (bot - top) / 2;
+-
+- do {
+- fseek(fp, mid - 1, 0);
+- if(mid != 1)
+- while((c = getc(fp)) != '\n' && c != EOF);
+- last_bin_search_offset = ftell( fp );
+- fgets(linep, LINE_LEN, fp);
+- length = (int)(strchr(linep, ' ') - linep);
+- strncpy(key, linep, length);
+- key[length] = '\0';
+- if(strcmp(key, searchkey) < 0) {
+- top = mid;
+- diff = (bot - top) / 2;
+- mid = top + diff;
+- }
+- if(strcmp(key, searchkey) > 0) {
+- bot = mid;
+- diff = (bot - top) / 2;
+- mid = top + diff;
+- }
+- } while((strcmp(key, searchkey)) && (diff != 0));
+-
+- if(!strcmp(key, searchkey))
+- return(line);
+- else
+- return(NULL);
++ if (number > 0)
++ return 1;
++ if (number < 0)
++ return -1;
++ return 0;
+ }
+-
+-static long offset;
+
+-static int bin_search_key(char *searchkey, FILE *fp)
++const char *
++bin_search(const char *searchkey, FILE *fp)
+ {
+- int c;
+- long top, mid, bot, diff;
+- char *linep, key[KEY_LEN];
+- int length, offset1, offset2;
+-
+- /* do binary search to find correct place in file to insert line */
+-
+- diff=666;
+- linep = line;
+- line[0] = '\0';
+-
+- fseek(fp, 0L, 2);
+- top = 0;
+- bot = ftell(fp);
+- if (bot == 0) {
+- offset = 0;
+- return(0); /* empty file */
+- }
+- mid = (bot - top) / 2;
+-
+- /* If only one line in file, don't work through loop */
+-
+- length = 0;
+- rewind(fp);
+- while((c = getc(fp)) != '\n' && c != EOF)
+- line[length++] = c;
+- if (getc(fp) == EOF) { /* only 1 line in file */
+- length = (int)(strchr(linep, ' ') - linep);
+- strncpy(key, linep, length);
+- key[length] = '\0';
+- if(strcmp(key, searchkey) > 0) {
+- offset = 0;
+- return(0); /* line with key is not found */
+- } else if (strcmp(key, searchkey) < 0) {
+- offset = ftell(fp);
+- return(0); /* line with key is not found */
+- } else {
+- offset = 0;
+- return(1); /* line with key is found */
++ int c;
++ long top, mid, bot; /* should be off_t */
++ int length, keylen;
++
++ fseek(fp, 0L, 2);
++ bot = ftell(fp);
++ mid = bot / 2;
++ keylen = strlen(searchkey);
++
++ for (top = 0; bot - top >= 2; mid = (top + bot) / 2) {
++ fseek(fp, mid - 1, 0);
++ if(mid != 1)
++ while((c = getc(fp)) != '\n' && c != EOF);
++ last_bin_search_offset = ftell(fp);
++ if (fgets(line, LINE_LEN, fp) == NULL)
++ return(NULL);
++ length = strchr(line, ' ') - line;
++ switch (sign(strncmp(line, searchkey, length))) {
++ case 0:
++ /* a match up to the length! */
++ if (length == keylen)
++ return(line);
++ if (length > keylen)
++ /* the word read is longer than ours */
++ goto up;
++ /* FALLTHROUGH */
++ case -1:
++ top = mid;
++ continue;
++ case 1:
++ up:
++ bot = mid;
++ }
+ }
+- }
+-
+- do {
+- fseek(fp, mid - 1, 0);
+- if(mid != 1)
+- while((c = getc(fp)) != '\n' && c != EOF);
+- offset1 = ftell(fp); /* offset at start of line */
+- if (fgets(linep, LINE_LEN, fp) != NULL) {
+- offset2 = ftell(fp); /* offset at start of next line */
+- length = (int)(strchr(linep, ' ') - linep);
+- strncpy(key, linep, length);
+- key[length] = '\0';
+- if(strcmp(key, searchkey) < 0) { /* further in file */
+- top = mid;
+- diff = (bot - top) / 2;
+- mid = top + diff;
+- offset = offset2;
+- }
+- if(strcmp(key, searchkey) > 0) { /* earlier in file */
+- bot = mid;
+- diff = (bot - top) / 2;
+- mid = top + diff;
+- offset = offset1;
+- }
+- } else {
+- bot = mid;
+- diff = (bot - top) / 2;
+- mid = top + diff;
+- }
+- } while((strcmp(key, searchkey)) && (diff != 0));
+-
+- if(!strcmp(key, searchkey)) {
+- offset = offset1; /* get to start of current line */
+- return(1); /* line with key is found */
+- } else
+- return(0); /* line with key is not found */
+-}
+-
+-/* Copy contents from one file to another. */
+-
+-void copyfile(FILE *fromfp, FILE *tofp)
+-{
+- int c;
+-
+- while ((c = getc(fromfp)) != EOF)
+- putc(c, tofp);
+-}
+-
+-/* Function to replace a line in a file. Returns the original line,
+- or NULL in case of error. */
+-
+-char *replace_line(char *new_line, char *searchkey, FILE *fp)
+-{
+- FILE *tfp; /* temporary file pointer */
+-
+- if (!bin_search_key(searchkey, fp))
+- return(NULL); /* line with key not found */
+-
+- if ((tfp = tmpfile()) == NULL)
+- return(NULL); /* could not create temp file */
+- fseek(fp, offset, 0);
+- fgets(line, LINE_LEN, fp); /* read original */
+- copyfile(fp, tfp);
+- if (fseek(fp, offset, 0) == -1)
+- return(NULL); /* could not seek to offset */
+- fprintf(fp, new_line); /* write line */
+- rewind(tfp);
+- copyfile(tfp, fp);
+-
+- fclose(tfp);
+- fflush(fp);
+-
+- return(line);
+-}
+-
+-/* Find location to insert line at in file. If line with this
+- key is already in file, return NULL. */
+-
+-char *insert_line(char *new_line, char *searchkey, FILE *fp)
+-{
+- FILE *tfp;
+-
+- if (bin_search_key(searchkey, fp))
+ return(NULL);
+-
+- if ((tfp = tmpfile()) == NULL)
+- return(NULL); /* could not create temp file */
+- if (fseek(fp, offset, 0) == -1)
+- return(NULL); /* could not seek to offset */
+- copyfile(fp, tfp);
+- if (fseek(fp, offset, 0) == -1)
+- return(NULL); /* could not seek to offset */
+- fprintf(fp, new_line); /* write line */
+- rewind(tfp);
+- copyfile(tfp, fp);
+-
+- fclose(tfp);
+- fflush(fp);
+-
+- return(new_line);
+ }
diff --git a/textproc/wordnet/files/patch-wn.h b/textproc/wordnet/files/patch-wn.h
new file mode 100644
index 000000000000..151745fbbedc
--- /dev/null
+++ b/textproc/wordnet/files/patch-wn.h
@@ -0,0 +1,279 @@
+--- include/wn.h Wed Jul 6 14:48:44 2005
++++ include/wn.h Wed Dec 21 17:24:58 2005
+@@ -31,5 +31,7 @@
+ #else
+ #define DICTDIR "/dict"
++#ifndef DEFAULTPATH
+ #define DEFAULTPATH "/usr/local/WordNet-2.1/dict"
++#endif
+ #define DATAFILE "%s/data.%s"
+ #define INDEXFILE "%s/index.%s"
+@@ -152,12 +154,12 @@
+ #define IMMED_POSTNOMINAL IPADJ
+
+-extern char *wnrelease; /* WordNet release/version number */
++extern const char *wnrelease; /* WordNet release/version number */
+
+-extern char *lexfiles[]; /* names of lexicographer files */
+-extern char *ptrtyp[]; /* pointer characters */
+-extern char *partnames[]; /* POS strings */
+-extern char partchars[]; /* single chars for each POS */
+-extern char *adjclass[]; /* adjective class strings */
+-extern char *frametext[]; /* text of verb frames */
++extern const char *lexfiles[]; /* names of lexicographer files */
++extern const char *ptrtyp[]; /* pointer characters */
++extern const char *partnames[]; /* POS strings */
++extern const char partchars[]; /* single chars for each POS */
++extern const char *adjclass[]; /* adjective class strings */
++extern const char *frametext[]; /* text of verb frames */
+
+ /* Data structures used by search code functions. */
+@@ -173,5 +175,5 @@
+ unsigned long *offset; /* offsets of synsets containing word */
+ int ptruse_cnt; /* number of pointers used */
+- int *ptruse; /* pointers used */
++ short *ptruse; /* pointers used */
+ } Index;
+
+@@ -180,5 +182,5 @@
+ /* Structure for data file synset */
+ typedef struct ss {
+- long hereiam; /* current file position */
++ unsigned long hereiam; /* current file position */
+ int sstype; /* type of ADJ synset */
+ int fnum; /* file number that synset comes from */
+@@ -191,8 +193,8 @@
+ int ptrcount; /* number of pointers */
+ int *ptrtyp; /* pointer types */
+- long *ptroff; /* pointer offsets */
++ unsigned long *ptroff; /* pointer offsets */
+ int *ppos; /* pointer part of speech */
+- int *pto; /* pointer 'to' fields */
+- int *pfrm; /* pointer 'from' fields */
++ unsigned short *pto; /* pointer 'to' fields */
++ unsigned short *pfrm; /* pointer 'from' fields */
+ int fcount; /* number of verb frames */
+ int *frmid; /* frame numbers */
+@@ -218,5 +220,5 @@
+ char *sensekey; /* sense key */
+ char *word; /* word string */
+- long loc; /* synset offset */
++ unsigned long loc; /* synset offset */
+ int wnsense; /* WordNet sense number */
+ int tag_cnt; /* number of semantic tags to sense */
+@@ -268,6 +270,6 @@
+ Default function provided in library returns -1 */
+
+-extern int default_display_message(char *);
+-extern int (*display_message)(char *);
++int default_display_message(const char *);
++int (*display_message)(const char *);
+
+
+@@ -282,5 +284,5 @@
+
+ /* Primry search algorithm for use with user interfaces */
+-extern char *findtheinfo(char *, int, int, int);
++const char *findtheinfo(const char *, int, int, int);
+
+ /* Primary search algorithm for use with programs (returns data structure) */
+@@ -289,27 +291,27 @@
+ /* Set bit for each search type that is valid for the search word
+ passed and return bit mask. */
+-extern unsigned int is_defined(char *, int);
++extern unsigned int is_defined(const char *, int);
+
+ /* Set bit for each POS that search word is in. 0 returned if
+ word is not in WordNet. */
+-extern unsigned int in_wn(char *, int);
++unsigned int in_wn(const char *, int);
+
+ /* Find word in index file and return parsed entry in data structure.
+ Input word must be exact match of string in database. */
+-extern IndexPtr index_lookup(char *, int);
++IndexPtr index_lookup(const char *, int);
+
+ /* 'smart' search of index file. Find word in index file, trying different
+ techniques - replace hyphens with underscores, replace underscores with
+ hyphens, strip hyphens and underscores, strip periods. */
+-extern IndexPtr getindex(char *, int);
+-extern IndexPtr parse_index(long, int, char *);
++extern IndexPtr getindex(const char *, int);
++extern IndexPtr parse_index(long, int, const char *);
+
+ /* Read synset from data file at byte offset passed and return parsed
+ entry in data structure. */
+-extern SynsetPtr read_synset(int, long, char *);
++extern SynsetPtr read_synset(int, long, const char *);
+
+ /* Read synset at current byte offset in file and return parsed entry
+ in data structure. */
+-extern SynsetPtr parse_synset(FILE *, int, char *);
++extern SynsetPtr parse_synset(FILE *, int, const char *);
+
+ /* Free a synset linked list allocated by findtheinfo_ds() */
+@@ -324,22 +326,22 @@
+ /* Recursive search algorithm to trace a pointer tree and return results
+ in linked list of data structures. */
+-SynsetPtr traceptrs_ds(SynsetPtr, int, int, int);
++SynsetPtr traceptrs_ds(SynsetPtr, int, int);
+
+ /* Do requested search on synset passed, returning output in buffer. */
+-extern char *do_trace(SynsetPtr, int, int, int);
++const char *do_trace(SynsetPtr, int, int, int);
+
+ /*** Morphology functions (morph.c) ***/
+
+ /* Open exception list files */
+-extern int morphinit();
++int morphinit(void);
+
+ /* Close exception list files and reopen */
+-extern int re_morphinit();
++int re_morphinit(void);
+
+ /* Try to find baseform (lemma) of word or collocation in POS. */
+-extern char *morphstr(char *, int);
++const char *morphstr(const char *, int);
+
+ /* Try to find baseform (lemma) of individual word in POS. */
+-extern char *morphword(char *, int);
++const char *morphword(const char *, int);
+
+ /*** Utility functions (wnutil.c) ***/
+@@ -347,9 +349,9 @@
+ /* Top level function to open database files, initialize wn_filenames,
+ and open exeception lists. */
+-extern int wninit();
++int wninit(void);
+
+ /* Top level function to close and reopen database files, initialize
+ wn_filenames and open exception lists. */
+-extern int re_wninit();
++int re_wninit(void);
+
+ /* Count the number of underscore or space separated words in a string. */
+@@ -358,4 +360,5 @@
+ /* Convert string to lower case remove trailing adjective marker if found */
+ extern char *strtolower(char *);
++char *strtolower2(const char *from, char *to);
+
+ /* Convert string passed to lower case */
+@@ -366,14 +369,14 @@
+
+ /* Return pointer code for pointer type characer passed. */
+-extern int getptrtype(char *);
++unsigned short getptrtype(const char *, char **end);
+
+ /* Return part of speech code for string passed */
+-extern int getpos(char *);
++int getpos(const char *);
+
+ /* Return synset type code for string passed. */
+-extern int getsstype(char *);
++int getsstype(const char *);
+
+ /* Reconstruct synset from synset pointer and return ptr to buffer */
+-extern char *FmtSynset(SynsetPtr, int);
++const char *FmtSynset(SynsetPtr, int);
+
+ /* Find string for 'searchstr' as it is in index file */
+@@ -381,37 +384,34 @@
+
+ /* Pass in string for POS, return corresponding integer value */
+-extern int StrToPos(char *);
++int StrToPos(const char *);
+
+ /* Return synset for sense key passed. */
+-extern SynsetPtr GetSynsetForSense(char *);
++SynsetPtr GetSynsetForSense(const char *);
+
+ /* Find offset of sense key in data file */
+-extern long GetDataOffset(char *);
++long GetDataOffset(const char *);
+
+ /* Find polysemy (collins) count for sense key passed. */
+-extern int GetPolyCount(char *);
++int GetPolyCount(const char *);
+
+ /* Return word part of sense key */
+-extern char *GetWORD(char *);
++const char *GetWORD(const char *);
+
+ /* Return POS code for sense key passed. */
+-extern int GetPOS(char *);
++int GetPOS(const char *);
+
+ /* Convert WordNet sense number passed of IndexPtr entry to sense key. */
+ extern char *WNSnsToStr(IndexPtr, int);
+
+-/* Search for string and/or baseform of word in database and return
+- index structure for word if found in database. */
+-extern IndexPtr GetValidIndexPointer(char *, int);
+-
+ /* Return sense number in database for word and lexsn passed. */
+-int GetWNSense(char *, char *);
++int GetWNSense(const char *, const char *);
+
+-SnsIndexPtr GetSenseIndex(char *);
++SnsIndexPtr GetSenseIndex(const char *);
++void FreeSenseIndex(SnsIndexPtr);
+
+-char *GetOffsetForKey(unsigned int);
+-unsigned int GetKeyForOffset(char *);
++const char *GetOffsetForKey(unsigned int);
++unsigned int GetKeyForOffset(const char *);
+
+-char *SetSearchdir();
++const char *SetSearchdir(void);
+
+ /* Return number of times sense is tagged */
+@@ -435,17 +435,6 @@
+ /* General purpose binary search function to search for key as first
+ item on line in open file. Item is delimited by space. */
+-extern char *bin_search(char *, FILE *);
+-extern char *read_index(long, FILE *);
+-
+-/* Copy contents from one file to another. */
+-extern void copyfile(FILE *, FILE *);
+-
+-/* Function to replace a line in a file. Returns the original line,
+- or NULL in case of error. */
+-extern char *replace_line(char *, char *, FILE *);
+-
+-/* Find location to insert line at in file. If line with this
+- key is already in file, return NULL. */
+-extern char *insert_line(char *, char *, FILE *);
++const char *bin_search(const char *, FILE *);
++const char *read_index(long, FILE *);
+
+ #ifdef __cplusplus
+@@ -453,7 +453,8 @@
+ #endif
+
+-extern char **helptext[NUMPARTS + 1];
++const char * const * helptext[NUMPARTS + 1];
+
+-static char *license = "\
++#ifdef DEFINE_LICENSE /* should live in wn.c */
++const char license[] = "\
+ This software and database is being provided to you, the LICENSEE, by \n\
+ Princeton University under the following license. By obtaining, using \n\
+@@ -486,5 +487,5 @@
+ Princeton University and LICENSEE agrees to preserve same. \n"
+ ;
+-
++#if 0 /* { */
+ static char dblicense[] = "\
+ 1 This software and database is being provided to you, the LICENSEE, by \n\
+@@ -518,6 +519,9 @@
+ 29 Princeton University and LICENSEE agrees to preserve same. \n"
+ ;
+-
+ #define DBLICENSE_SIZE (sizeof(dblicense))
++#endif /* } */
++#else /* } { */
++extern const char license[];
++#endif /* } */
+
+ #endif /*_WN_*/
diff --git a/textproc/wordnet/files/patch-wnb b/textproc/wordnet/files/patch-wnb
new file mode 100644
index 000000000000..d4b4eec965dc
--- /dev/null
+++ b/textproc/wordnet/files/patch-wnb
@@ -0,0 +1,57 @@
+This patch makes wnb use man(1) to access its own man-pages instead
+of relying on textual copies of them being in the $resourcedir.
+
+Similarly, it looks for the compiled-in license instead of opening
+its textual copy.
+
+These leave wn.xbm as the only "resource" file, thus removing the need
+for a separate resource directory. FreeBSD port installs all -- the
+dictionaries and the bitmap into ${PREFIX}/share/WordNet.
+
+ -mi
+
+--- src/wnb Tue Jun 7 15:19:22 2005
++++ src/wnb Sun Jan 15 07:42:38 2006
+@@ -103,9 +100,15 @@
+
+ if {$tcl_platform(platform) == "unix"} {
+- if {[lsearch -exact [array names env] WNHOME] == -1} {
+- set resourcedir "/usr/local/WordNet-2.1/lib/wnres"
+- } else {
+- set resourcedir "$env(WNHOME)/lib/wnres"
++ set resourcedirs {
++ /usr/local/WordNet-2.1
++ /usr/local/WordNet-2.1/lib/wnres
++ }
++ if {[info exists env(WNHOME)]} {
++ lappend resourcedirs $env(WNHOME) $env(WNHOME)/lib/wnres
+ }
++ foreach resourcedir $resourcedirs {
++ if {[file exists $resourcedir/wn.xbm]} break
++ }
++ unset resourcedirs
+ set configfile "$env(HOME)/.wnrc"
+ if [ file exists $configfile ] {
+@@ -575,7 +578,19 @@
+ .$w.top.text configure \
+ -state normal
+- set fileid [open $filename "r"]
+- set filetext [read $fileid]
+- close $fileid
++ switch -glob -- $filename {
++ *.man {
++ set manpage [file tail $filename]
++ set manpage [string range $manpage 0 end-4]
++ set fileid [open "|man $manpage"]
++ } */license.txt {
++ set filetext [wnlicense]
++ } default {
++ set fileid [open $filename]
++ }
++ }
++ if {[info exists fileid]} {
++ set filetext [read $fileid]
++ close $fileid
++ }
+ regsub -all ".\b" $filetext "" filetext
+ .$w.top.text insert end $filetext
diff --git a/textproc/wordnet/files/patch-wnglobal b/textproc/wordnet/files/patch-wnglobal
new file mode 100644
index 000000000000..1047e896a50b
--- /dev/null
+++ b/textproc/wordnet/files/patch-wnglobal
@@ -0,0 +1,37 @@
+--- lib/wnglobal.c Fri May 6 13:17:39 2005
++++ lib/wnglobal.c Tue Dec 20 23:29:54 2005
+@@ -11,9 +11,9 @@
+ #endif
+
+-char *wnrelease = "2.1";
++const char *wnrelease = "2.1";
+
+ /* Lexicographer file names and numbers */
+
+-char *lexfiles[] = {
++const char *lexfiles[] = {
+ "adj.all", /* 0 */
+ "adj.pert", /* 1 */
+@@ -65,5 +65,5 @@
+ /* Pointer characters and searches */
+
+-char *ptrtyp[]={
++const char *ptrtyp[] = {
+ "", /* 0 not used */
+ "!", /* 1 ANTPTR */
+@@ -110,11 +110,11 @@
+ };
+
+-char *partnames[]={ "", "noun", "verb", "adj", "adv", NULL };
+-char partchars[] = " nvara"; /* add char for satellites to end */
+-char *adjclass[] = { "", "(p)", "(a)", "(ip)" };
++const char *partnames[]={ "", "noun", "verb", "adj", "adv", NULL };
++const char partchars[] = " nvara"; /* add char for satellites to end */
++const char *adjclass[] = { "", "(p)", "(a)", "(ip)" };
+
+ /* Text of verb sentence frames */
+
+-char *frametext[] = {
++const char *frametext[] = {
+ "",
+ "Something ----s",
diff --git a/textproc/wordnet/files/patch-wnhelp b/textproc/wordnet/files/patch-wnhelp
new file mode 100644
index 000000000000..f731a48fa6ab
--- /dev/null
+++ b/textproc/wordnet/files/patch-wnhelp
@@ -0,0 +1,43 @@
+--- lib/wnhelp.c Fri May 6 13:17:39 2005
++++ lib/wnhelp.c Wed Dec 21 17:25:27 2005
+@@ -7,4 +7,5 @@
+ /* $Id: wnhelp.c,v 1.14 2005/02/01 17:03:46 wn Rel $ */
+
++#define DEFINE_LICENSE
+ #include "wn.h"
+
+@@ -239,5 +240,5 @@
+ ";
+
+-static char *nounhelps[] = {
++static const char *nounhelps[] = {
+ hyper_help,
+ relatives_help,
+@@ -259,5 +260,5 @@
+ };
+
+-static char *verbhelps[] = {
++static const char *verbhelps[] = {
+ hyper_help,
+ relatives_help,
+@@ -276,5 +277,5 @@
+ };
+
+-static char *adjhelps[] = {
++static const char *adjhelps[] = {
+ /* SIMPTR */
+ "Display synonyms and synsets related to synsets containing \n\
+@@ -351,5 +352,5 @@
+ };
+
+-static char *advhelps[] = {
++static const char *advhelps[] = {
+ /* SIMPTR */
+ "Display synonyms and synsets related to synsets containing \n\
+@@ -370,5 +371,5 @@
+ };
+
+-char **helptext[NUMPARTS + 1] = {
++const char * const *helptext[NUMPARTS + 1] = {
+ NULL, nounhelps, verbhelps, adjhelps, advhelps
+ };
diff --git a/textproc/wordnet/files/patch-wnrtl b/textproc/wordnet/files/patch-wnrtl
new file mode 100644
index 000000000000..285783c16fcd
--- /dev/null
+++ b/textproc/wordnet/files/patch-wnrtl
@@ -0,0 +1,17 @@
+--- lib/wnrtl.c Fri May 6 13:17:39 2005
++++ lib/wnrtl.c Wed Dec 21 00:21:04 2005
+@@ -8,5 +8,5 @@
+ #include "wn.h"
+
+-static char *Id = "$Id: wnrtl.c,v 1.8 2005/01/27 17:33:54 wn Rel $";
++__FBSDID("$Id: wnrtl.c,v 1.8 2005/01/27 17:33:54 wn Rel $");
+
+ /* Search code variables and flags */
+@@ -43,6 +43,5 @@
+ Default function provided in library returns -1 */
+
+-int default_display_message(char *);
+-int (*display_message)(char *) = default_display_message;
++int (*display_message)(const char *) = default_display_message;
+
+ /*
diff --git a/textproc/wordnet/files/src.Makefile b/textproc/wordnet/files/src.Makefile
deleted file mode 100644
index f5df548ec758..000000000000
--- a/textproc/wordnet/files/src.Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-SUBDIR= lib wn wnb
-
-.include <bsd.subdir.mk>
diff --git a/textproc/wordnet/files/src.lib.Makefile b/textproc/wordnet/files/src.lib.Makefile
index e7f80959eb06..0e0eaa1a59c3 100644
--- a/textproc/wordnet/files/src.lib.Makefile
+++ b/textproc/wordnet/files/src.lib.Makefile
@@ -1,13 +1,14 @@
-SRCS= binsrch.c morph.c search.c setutil.c wnglobal.c \
+SRCS= binsrch.c morph.c search.c wnglobal.c \
wnhelp.c wnrtl.c wnutil.c
-CFLAGS+= -DUNIX -DDEFAULTPATH="\"${PREFIX}/share/WordNet-${VER}\"" \
+CFLAGS+= -DUNIX -DDEFAULTPATH="\"${PREFIX}/share/WordNet\""\
-DDEFAULTBIN="\"${PREFIX}/bin\""
-CFLAGS+= -I${.CURDIR}/../../include
+CFLAGS+= -I${.CURDIR:H}/include
-LIB= wn2
-SHLIB_MAJOR= 0
+LIB= WN
+WARNS= 5
+SHLIB_MAJOR= 2
NOPROFILE= True
LIBDIR= ${PREFIX}/lib
diff --git a/textproc/wordnet/files/src.wn.Makefile b/textproc/wordnet/files/src.wn.Makefile
index ce24168a5355..e8764bbbfef2 100644
--- a/textproc/wordnet/files/src.wn.Makefile
+++ b/textproc/wordnet/files/src.wn.Makefile
@@ -1,11 +1,11 @@
PROG= wn
-NOMAN= True # man pages installed separately
+NO_MAN= True # man pages installed separately
-CFLAGS+= -DUNIX -DDEFAULTPATH="\"${PREFIX}/share/WordNet-${VER}\"" \
+CFLAGS+= -DUNIX -DDEFAULTPATH="\"${PREFIX}/share/WordNet\"" \
-DDEFAULTBIN="\"${PREFIX}/bin\""
-CFLAGS+= -I${.CURDIR}/../../include
-LDADD+= -L../lib -lwn2
+CFLAGS+= -I${.CURDIR:H}/include
+LDADD+= -L../lib -lWN
BINDIR= ${PREFIX}/bin
diff --git a/textproc/wordnet/files/src.wnb.Makefile b/textproc/wordnet/files/src.wnb.Makefile
index 38baeeb2696c..1f65b17400f4 100644
--- a/textproc/wordnet/files/src.wnb.Makefile
+++ b/textproc/wordnet/files/src.wnb.Makefile
@@ -3,16 +3,18 @@ TCL_DVER?= 8.4
TCL_VER= ${TCL_DVER:S/.//g}
TCL_INCDIR?= ${PREFIX}/include/tcl${TCL_DVER}
-CFLAGS+= -DUNIX -DDEFAULTPATH="\"${PREFIX}/share/WordNet-${VER}\"" \
- -DDEFAULTBIN="\"${PREFIX}/bin\""
+CFLAGS+= -DUNIX -DDEFAULTPATH="\"${PREFIX}/share/WordNet\"" \
+ -DDEFAULTBIN="\"${PREFIX}/bin\"" -DHAVE_LANGINFO_CODESET
CFLAGS+= -I${.CURDIR}/../../include -I$(TCL_INCDIR)
-LDADD= -L../lib -lwn2 -L${PREFIX}/lib -ltcl${TCL_VER} -ltk${TCL_VER}
+LDADD= -L.. -lWN -L${PREFIX}/lib -ltcl${TCL_VER} # -ltk${TCL_VER}
SHLIB_NAME= libtclwn2.so.0
SRCS= stubs.c
+.PATH: ${.CURDIR:H:H}/src
+
all: pkgIndex.tcl
pkgIndex.tcl:
@@ -21,18 +23,14 @@ pkgIndex.tcl:
> pkgIndex.tcl
LIBDIR= ${PREFIX}/lib
-RESDIR= ${PREFIX}/share/WordNet-${VER}/wnres
+RESDIR= ${PREFIX}/share/WordNet/
${LIBDIR} ${RESDIR} ${LIBDIR}/tcl${TCL_DVER}/Wordnet:
mkdir -p ${.TARGET}
beforeinstall: ${LIBDIR} ${RESDIR} ${LIBDIR}/tcl${TCL_DVER}/Wordnet
- ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
- pkgIndex.tcl ${LIBDIR}/tcl${TCL_DVER}/Wordnet
- ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
- ${.CURDIR}/../lib/wnres/license.txt \
- ${.CURDIR}/../lib/wnres/*.xbm ${RESDIR}
- ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 755 \
- wnb ${PREFIX}/bin
+ ${BSD_INSTALL_DATA} pkgIndex.tcl ${LIBDIR}/tcl${TCL_DVER}/Wordnet
+ ${BSD_INSTALL_DATA} ${.CURDIR}/*.xbm ${RESDIR}
+ ${BSD_INSTALL_SCRIPT} ${.CURDIR:H:H}/src/wnb ${PREFIX}/bin
.include <bsd.lib.mk>
diff --git a/textproc/wordnet/pkg-plist b/textproc/wordnet/pkg-plist
index 814625ed4cab..eaba3e3938f2 100644
--- a/textproc/wordnet/pkg-plist
+++ b/textproc/wordnet/pkg-plist
@@ -1,40 +1,33 @@
bin/wnb
bin/wn
-include/WordNet-%%VER%%/license.h
-include/WordNet-%%VER%%/setutil.h
-include/WordNet-%%VER%%/wn.h
-include/WordNet-%%VER%%/wnconsts.h
-include/WordNet-%%VER%%/wnglobal.h
-include/WordNet-%%VER%%/wnhelp.h
-include/WordNet-%%VER%%/wnrtl.h
-include/WordNet-%%VER%%/wntypes.h
-lib/libwn2.a
-lib/libwn2.so.0
-lib/libwn2.so
+include/WordNet/wn.h
+include/WordNet/wngrind.h
+lib/libWN.a
+lib/libWN.so.2
+lib/libWN.so
lib/libtclwn2.so.0
lib/libtclwn2.so
lib/tcl%%TCL_DVER%%/Wordnet/pkgIndex.tcl
-share/WordNet-%%VER%%/adj.exc
-share/WordNet-%%VER%%/adv.exc
-share/WordNet-%%VER%%/cntlist
-share/WordNet-%%VER%%/cntlist.rev
-share/WordNet-%%VER%%/data.adj
-share/WordNet-%%VER%%/data.adv
-share/WordNet-%%VER%%/data.noun
-share/WordNet-%%VER%%/data.verb
-share/WordNet-%%VER%%/index.adj
-share/WordNet-%%VER%%/index.adv
-share/WordNet-%%VER%%/index.noun
-share/WordNet-%%VER%%/index.sense
-share/WordNet-%%VER%%/index.verb
-share/WordNet-%%VER%%/lexnames
-share/WordNet-%%VER%%/noun.exc
-share/WordNet-%%VER%%/sentidx.vrb
-share/WordNet-%%VER%%/sents.vrb
-share/WordNet-%%VER%%/verb.exc
-share/WordNet-%%VER%%/wnres/license.txt
-share/WordNet-%%VER%%/wnres/wn.xbm
-@dirrm include/WordNet-%%VER%%
+share/WordNet/adj.exc
+share/WordNet/adv.exc
+share/WordNet/cntlist
+share/WordNet/cntlist.rev
+share/WordNet/data.adj
+share/WordNet/data.adv
+share/WordNet/data.noun
+share/WordNet/data.verb
+share/WordNet/frames.vrb
+share/WordNet/index.adj
+share/WordNet/index.adv
+share/WordNet/index.noun
+share/WordNet/index.sense
+share/WordNet/index.verb
+share/WordNet/noun.exc
+share/WordNet/sentidx.vrb
+share/WordNet/sents.vrb
+share/WordNet/verb.exc
+share/WordNet/verb.Framestext
+share/WordNet/wn.xbm
+@dirrm include/WordNet
@dirrm lib/tcl%%TCL_DVER%%/Wordnet
-@dirrm share/WordNet-%%VER%%/wnres
-@dirrm share/WordNet-%%VER%%
+@dirrm share/WordNet
diff --git a/textproc/wordnet/scripts/configure b/textproc/wordnet/scripts/configure
index b02bfa80a898..297a996aa8a7 100644
--- a/textproc/wordnet/scripts/configure
+++ b/textproc/wordnet/scripts/configure
@@ -1,12 +1,27 @@
#!/bin/sh
for mf in ${FILESDIR}/*Makefile ; do \
- dir=${WRKSRC}/`basename $mf | sed -e s%Makefile%% -e 's%\.%/%g'` ; \
+ dir=`basename $mf | sed -e s%Makefile%% -e 's%\.%/%g'`
+ case "$dir" in
+ "man/")
+ dir=doc/man/
+ ;;
+ "src/lib/")
+ dir=lib/
+ ;;
+ "src/wn/")
+ dir=src/
+ ;;
+ "src/wnb/")
+ dir=lib/wnres/
+ ;;
+ esac
+ dir=${WRKSRC}/$dir
test -f ${dir}Makefile.orig && continue
- mv ${dir}Makefile ${dir}Makefile.orig ; \
- cp -p $mf ${dir}Makefile ; \
+ test -f ${dir}Makefile && mv ${dir}Makefile ${dir}Makefile.orig
+ cp -p $mf ${dir}Makefile
done
-patch -d ${WRKSRC}/src/wnb -p << EOPATCH
+patch -d ${WRKSRC}/src -p << EOPATCH
Configuring the wnb script to call the right wish-binary directly
--- wnb Sun Feb 22 12:49:56 1998
+++ wnb Sat Feb 26 17:41:06 2000