This is ispell version 3.0, an interactive spelling checker. What Is Ispell and Why Do I Want It? Ispell is a fast screen-oriented spelling checker that shows you your errors in the context of the original file, and suggests possible corrections when it can figure them out. Compared to UNIX spell, it is faster and much easier to use. Ispell can also handle languages other than English. What's New in This Version? This version of ispell contains numerous bug fixes and improvements compared to the beta release March 1987. The most important of these is that ispell now handles both prefixes and suffixes, and everything language-dependent (including the character set) is defined in the hash file. This makes ispell truly international. The complete list of bug fixes and improvements is too long to include here (and besides, I'm too overworked to create it). However, current users of ispell should note that the "x" and "q" commands have been interchanged. Who Wrote Ispell? Ispell is a very old program; the original was written in PDP-10 assembly in 1971, by R. E. Gorin. The C version was written by Pace Willisson of MIT. Walt Buehring of Texas Instruments added the emacs interface and posted it to the net. Geoff Kuenning added the international support and created the current posting. Many, many other people contributed to the current version; a complete list (with a more detailed history) can be found in the file "Contributors". OK, How Do I Install It? Ispell is quite portable (thanks to many people). First, you should edit the Makefile, making changes where it says "EDIT HERE". Note that LIBDIR needs up to several thousand blocks of free space to hold the hash files, and that MAKE_SORTTMP needs up to 30,000 blocks (512-byte) free if you choose the "+" versions of the dictionaries. After editing the Makefile, you should examine "config.X" for the other configuration parameters. However, do not make changes to this file. Instead, create a file named "local.h" to hold definitions that will override those in "config.X". (This will make it easier for you when patches are posted). If you forget to create local.h, the Makefile will create one for you from the file "local.h.samp". After all edits, you are ready to compile ispell. For this first time only, type "make BUILD= all". This will compile all the programs, put the dictionaries together, and build the hash file. In the future, you should omit the "BUILD=" from the make line, to keep from wasting time rebuilding the dictionaries when they haven't actually changed. If you chose a "+" version of the dictionary (the DEFDICT macro in the Makefile), expect this first make to run for several hours (or as much as 24 on a very limited machine) because of the munchlist step. If you chose a non-plus version, the make will not take long. The munchlist step will also take a *lot* of disk space (see the table below for more information), so be sure to set TMPDIR to point to someplace with lots of room. If you have lots of disk space and lots of time, you might type "make BUILD= all allhashes" instead, to build all of the various sizes of the dictionary. Very few people will want to do this, but larger installations might want to make "normhashes" or "plushashes" to give their users a choice of dictionary sizes. After your "make all" completes, you are ready to install ispell. (If make complains about missing files, you probably forgot the "BUILD=" when you ran make all, so do that now). The standard "make install" will then install ispell, the auxiliary programs and scripts, the man page, and the dictionary hash file in the directories you have chosen for them. If you have emacs, note that the installation process does not modify the top-level Info menu to include ispell; you must do this by hand if you want ispell to appear in the top-level menu. If you choose to have multiple dictionaries and hash files, or if you support multiple languages, you will probably have to make and install the extra hash files by hand, or modify the Makefile to do this. I'd like to improve this part of the procedure, but I haven't gotten around to it yet. However, you will find that it is not very hard once you have figured out what to do. As well as the standard "make clean" target, the makefile also has two special targets. "Make kitclean" will get rid of the files that were used to build dictionaries from the kit (do it before you run "make clean", as it needs the "unsq" program). If you are *very* short on disk space, skip kitclean and do "make dictclean" instead. These two targets are mutually exclusive; DO NOT run both of them or you may lose your dictionaries entirely. How long does it take to make dictionaries? The following tables give approximate timings and peak disk usage for making each of the three augmented English dictionaries (the so-called "plus" versions). The timings were collected on an unloaded 68040. Your mileage may vary. Using EXTRADICT=/usr/dict/words: Time to build Peak temp space Final size english.sml+ 30 minutes 7.1M 306K english.med+ 35 minutes 8.8M 359K english.lrg+ 60 minutes 10.7M 680K Using EXTRADICT=/usr/dict/words and /usr/dict/web2: Time to build Peak temp space Final size english.sml+ 2-1/2 hours 19.5M 2243K english.med+ 2-1/2 hours 19.6M 2265K english.lrg+ 3 hours 20.7M 2347K The peak disk usage occurs fairly early in the munching process. When creating english.lrg+ with /usr/dict/web2, the peak was reached within 30 minutes. When web2 was omitted, the peak was always reached within 1/4 of the total running time of munchlist. Again, remember that these numbers will vary depending on your load and your machine's power. Special Installation Notes for Certain Machines: If you get lots of warnings when compiling term.c, check to be sure that you have correctly defined SIGNAL_TYPE in your local.h. Some versions of ISC Unix have TIOCGWINSZ defined even though it's not supported and the necessary structures are not present. The solution is to add "#undef TIOCGWINSZ" in your local.h. Sun 4's running SunOS 4.1.1 have a bug in strcmp() which causes all sorts of problems. To work around this, make sure that your local.h defines the symbol "SUN4_IS_STUPID", and does *not* define "NO8BIT".