--- include/wn.h	Wed Jul  6 14:48:44 2005
+++ include/wn.h	Wed Dec 21 17:24:58 2005
@@ -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,33 @@
 
 /* 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();
 
 /* 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_*/
