ee(1): Switch over to ee 1.5.2
authorSascha Wildner <saw@online.de>
Sun, 9 Feb 2014 05:27:41 +0000 (06:27 +0100)
committerSascha Wildner <saw@online.de>
Sun, 9 Feb 2014 05:27:41 +0000 (06:27 +0100)
Taken-from: FreeBSD

17 files changed:
contrib/ee/ee.1
contrib/ee/ee.c
usr.bin/ee/Artistic [deleted file]
usr.bin/ee/FREEBSD-upgrade [deleted file]
usr.bin/ee/Makefile
usr.bin/ee/README [deleted file]
usr.bin/ee/ee.1 [deleted file]
usr.bin/ee/ee.c [deleted file]
usr.bin/ee/ee.i18n.guide [deleted file]
usr.bin/ee/nls/de_DE.ISO8859-1/ee.msg
usr.bin/ee/nls/en_US.US-ASCII/ee.msg [deleted file]
usr.bin/ee/nls/fr_FR.ISO8859-1/ee.msg
usr.bin/ee/nls/hu_HU.ISO8859-2/ee.msg [new file with mode: 0644]
usr.bin/ee/nls/pl_PL.ISO8859-2/ee.msg
usr.bin/ee/nls/pt_BR.ISO8859-1/ee.msg [new file with mode: 0644]
usr.bin/ee/nls/ru_RU.KOI8-R/ee.msg
usr.bin/ee/nls/uk_UA.KOI8-U/ee.msg

index 18de1bb..7d482a8 100644 (file)
@@ -406,7 +406,7 @@ cursor location.  The old information would have to be deleted by the user.
 .PP
 Since different users have different preferences, \fIee\fR allows some 
 slight configurability.  There are three possible locations for an 
-initialization file for ee:  the file \fI/usr/local/lib/init.ee\fR, the 
+initialization file for ee:  the file \fI/usr/share/misc/init.ee\fR, the 
 file \fI.init.ee\fR in the user's home directory, or the file \fI.init.ee\fR 
 in the current directory (if different from the home 
 directory).  This allows system administrators to set some preferences for 
@@ -414,7 +414,7 @@ the users on a system-wide basis (for example, the \fBprint\fR command),
 and the user to customize settings for particular directories (like one 
 for correspondence, and a different directory for programming).
 .PP
-The file \fI\/usr/local/lib/init.ee\fR is read first, then 
+The file \fI\/usr/share/misc/init.ee\fR is read first, then 
 \fI$HOME/.init.ee\fR, then \fI.init.ee\fR, with the settings specified by the 
 most recent file read taking precedence.
 .PP
@@ -521,7 +521,7 @@ The automatic paragraph formatting operation
 may be too slow for slower systems.
 .SH FILES
 .PP
-.I /usr/local/lib/init.ee
+.I /usr/share/misc/init.ee
 .br
 .I $HOME/.init.ee
 .br
index 8deb569..ec52b07 100644 (file)
@@ -69,10 +69,7 @@ char *version = "@(#) ee, version "  EE_VERSION  " $Revision: 1.104 $";
 #include <curses.h>
 #endif
 
-#ifdef HAS_CTYPE
 #include <ctype.h>
-#endif
-
 #include <signal.h>
 #include <fcntl.h>
 #include <sys/types.h>
@@ -80,6 +77,7 @@ char *version = "@(#) ee, version "  EE_VERSION  " $Revision: 1.104 $";
 #include <errno.h>
 #include <string.h>
 #include <pwd.h>
+#include <locale.h>
 
 #ifdef HAS_SYS_WAIT
 #include <sys/wait.h>
@@ -97,9 +95,7 @@ char *version = "@(#) ee, version "  EE_VERSION  " $Revision: 1.104 $";
 #include <unistd.h>
 #endif
 
-
 #ifndef NO_CATGETS
-#include <locale.h>
 #include <nl_types.h>
 
 nl_catd catalog;
@@ -308,7 +304,7 @@ void undel_word P_((void));
 void del_line P_((void));
 void undel_line P_((void));
 void adv_word P_((void));
-void move_rel P_((char direction, int lines));
+void move_rel P_((int direction, int lines));
 void eol P_((void));
 void bol P_((void));
 void adv_line P_((void));
@@ -552,7 +548,7 @@ char *argv[];
 {
        int counter;
 
-       for (counter = 1; counter < SIGUNUSED; counter++)
+       for (counter = 1; counter < 24; counter++)
                signal(counter, SIG_IGN);
 
        signal(SIGCHLD, SIG_DFL);
@@ -723,7 +719,7 @@ int character;                      /* new character                        */
        }
        *point = character;     /* insert new character                 */
        wclrtoeol(text_win);
-       if (((character >= 0) && (character < ' ')) || (character >= 127)) /* check for TAB character*/
+       if (!isprint((unsigned char)character)) /* check for TAB character*/
        {
                scr_pos = scr_horz += out_char(text_win, character, scr_horz);
                point++;
@@ -731,7 +727,7 @@ int character;                      /* new character                        */
        }
        else
        {
-               waddch(text_win, character);
+               waddch(text_win, (unsigned char)character);
                scr_pos = ++scr_horz;
                point++;
                position ++;
@@ -933,7 +929,7 @@ int temp_int;
 int 
 out_char(window, character, column)    /* output non-printing character */
 WINDOW *window;
-char character;
+int character;
 int column;
 {
        int i1, i2;
@@ -965,23 +961,23 @@ int column;
                }
                else
                {
-                       waddch(window, (char)character );
+                       waddch(window, (unsigned char)character );
                        return(1);
                }
        }
        else
        {
-               waddch(window, (char)character);
+               waddch(window, (unsigned char)character);
                return(1);
        }
        for (i2 = 0; (string[i2] != '\0') && (((column+i2+1)-horiz_offset) < last_col); i2++)
-               waddch(window, string[i2]);
+               waddch(window, (unsigned char)string[i2]);
        return(strlen(string));
 }
 
 int 
 len_char(character, column)    /* return the length of the character   */
-char character;
+int character;
 int column;    /* the column must be known to provide spacing for tabs */
 {
        int length;
@@ -1040,7 +1036,7 @@ int length;       /* length (in bytes) of line                    */
        wclrtoeol(text_win);
        while ((posit < length) && (column <= last_col))
        {
-               if ((*temp < 32) || (*temp >= 127))
+               if (!isprint(*temp))
                {
                        column += len_char(*temp, abs_column);
                        abs_column += out_char(text_win, *temp, abs_column);
@@ -1919,13 +1915,13 @@ int advance;            /* if true, skip leading spaces and tabs        */
                        }
                        *nam_str = in;
                        g_pos++;
-                       if (((in < ' ') || (in > 126)) && (g_horz < (last_col - 1)))
+                       if (!isprint((unsigned char)in) && (g_horz < (last_col - 1)))
                                g_horz += out_char(com_win, in, g_horz);
                        else
                        {
                                g_horz++;
                                if (g_horz < (last_col - 1))
-                                       waddch(com_win, in);
+                                       waddch(com_win, (unsigned char)in);
                        }
                        nam_str++;
                }
@@ -1970,7 +1966,7 @@ int sensitive;
                }
                else
                {
-                       if (toupper(*strng1) != toupper(*strng2))
+                       if (toupper((unsigned char)*strng1) != toupper((unsigned char)*strng2))
                                equal = FALSE;
                }
                strng1++;
@@ -2106,10 +2102,10 @@ char *arguments[];
                else if (!strcmp("-?", buff))
                {
                        fprintf(stderr, usage0, arguments[0]);
-                       fprintf(stderr, usage1);
-                       fprintf(stderr, usage2);
-                       fprintf(stderr, usage3);
-                       fprintf(stderr, usage4);
+                       fputs(usage1, stderr);
+                       fputs(usage2, stderr);
+                       fputs(usage3, stderr);
+                       fputs(usage4, stderr);
                        exit(1);
                }
                else if ((*buff == '+') && (start_at_line == NULL))
@@ -2442,7 +2438,7 @@ int noverify;
        if ((text_changes) && (!noverify))
        {
                ans = get_string(changes_made_prompt, TRUE);
-               if (toupper(*ans) == toupper(*yes_char))
+               if (toupper((unsigned char)*ans) == toupper((unsigned char)*yes_char))
                        text_changes = FALSE;
                else
                        return(0);
@@ -2519,7 +2515,7 @@ int warn_if_exists;
                if ((temp_fp = fopen(file_name, "r")))
                {
                        tmp_point = get_string(file_exists_prompt, TRUE);
-                       if (toupper(*tmp_point) == toupper(*yes_char))
+                       if (toupper((unsigned char)*tmp_point) == toupper((unsigned char)*yes_char))
                                write_flag = TRUE;
                        else 
                                write_flag = FALSE;
@@ -2940,7 +2936,7 @@ while ((position < curr_line->line_length) && ((*point == 32) || (*point == 9)))
 
 void 
 move_rel(direction, lines)     /* move relative to current line        */
-char direction;
+int direction;
 int lines;
 {
        int i;
@@ -3243,7 +3239,7 @@ char *string;             /* string containing user command               */
        }
        if (shell_fork)
        {
-               printf(continue_msg);
+               fputs(continue_msg, stdout);
                fflush(stdout);
                while ((in = getchar()) != '\n')
                        ;
@@ -3434,14 +3430,13 @@ struct menu_entries menu_list[];
                if (input == -1)
                        exit(0);
 
-               if (((tolower(input) >= 'a') && (tolower(input) <= 'z')) || 
-                   ((input >= '0') && (input <= '9')))
+               if (isascii(input) && isalnum(input))
                {
-                       if ((tolower(input) >= 'a') && (tolower(input) <= 'z'))
+                       if (isalpha(input))
                        {
                                temp = 1 + tolower(input) - 'a';
                        }
-                       else if ((input >= '0') && (input <= '9'))
+                       else if (isdigit(input))
                        {
                                temp = (2 + 'z' - 'a') + (input - '0');
                        }
@@ -4124,7 +4119,7 @@ Format()  /* format the paragraph according to set margins        */
 }
 
 unsigned char *init_name[3] = {
-       "/usr/local/lib/init.ee", 
+       "/usr/share/misc/init.ee", 
        NULL, 
        ".init.ee"
        };
@@ -5081,9 +5076,9 @@ strings_init()
 {
        int counter;
 
-#ifndef NO_CATGETS
        setlocale(LC_ALL, "");
-       catalog = catopen("ee", 0);
+#ifndef NO_CATGETS
+       catalog = catopen("ee", NL_CAT_LOCALE);
 #endif /* NO_CATGETS */
 
        modes_menu[0].item_string = catgetlocal( 1, "modes menu");
diff --git a/usr.bin/ee/Artistic b/usr.bin/ee/Artistic
deleted file mode 100644 (file)
index fbf7989..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-                        The "Artistic License"
-
-                               Preamble
-
-The intent of this document is to state the conditions under which a
-Package may be copied, such that the Copyright Holder maintains some
-semblance of artistic control over the development of the package,
-while giving the users of the package the right to use and distribute
-the Package in a more-or-less customary fashion, plus the right to make
-reasonable modifications.
-
-Definitions:
-
-       "Package" refers to the collection of files distributed by the
-       Copyright Holder, and derivatives of that collection of files
-       created through textual modification.
-
-       "Standard Version" refers to such a Package if it has not been
-       modified, or has been modified in accordance with the wishes
-       of the Copyright Holder.
-
-       "Copyright Holder" is whoever is named in the copyright or
-       copyrights for the package.
-
-       "You" is you, if you're thinking about copying or distributing
-       this Package.
-
-       "Reasonable copying fee" is whatever you can justify on the
-       basis of media cost, duplication charges, time of people involved,
-       and so on.  (You will not be required to justify it to the
-       Copyright Holder, but only to the computing community at large
-       as a market that must bear the fee.)
-
-       "Freely Available" means that no fee is charged for the item
-       itself, though there may be fees involved in handling the item.
-       It also means that recipients of the item may redistribute it
-       under the same conditions they received it.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain or from the Copyright Holder.  A Package
-modified in such a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided
-that you insert a prominent notice in each changed file stating how and
-when you changed that file, and provided that you do at least ONE of the
-following:
-
-    a) place your modifications in the Public Domain or otherwise make them
-    Freely Available, such as by posting said modifications to Usenet or
-    an equivalent medium, or placing the modifications on a major archive
-    site such as uunet.uu.net, or by allowing the Copyright Holder to include
-    your modifications in the Standard Version of the Package.
-
-    b) use the modified Package only within your corporation or organization.
-
-    c) rename any non-standard executables so the names do not conflict
-    with standard executables, which must also be provided, and provide
-    a separate manual page for each non-standard executable that clearly
-    documents how it differs from the Standard Version.
-
-    d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
-    a) distribute a Standard Version of the executables and library files,
-    together with instructions (in the manual page or equivalent) on where
-    to get the Standard Version.
-
-    b) accompany the distribution with the machine-readable source of
-    the Package with your modifications.
-
-    c) accompany any non-standard executables with their corresponding
-    Standard Version executables, giving the non-standard executables
-    non-standard names, and clearly documenting the differences in manual
-    pages (or equivalent), together with instructions on where to get
-    the Standard Version.
-
-    d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-Package.  You may charge any fee you choose for support of this Package.
-You may not charge a fee for this Package itself.  However,
-you may distribute this Package in aggregate with other (possibly
-commercial) programs as part of a larger (possibly commercial) software
-distribution provided that you do not advertise this Package as a
-product of your own.
-
-6. The scripts and library files supplied as input to or produced as
-output from the programs of this Package do not automatically fall
-under the copyright of this Package, but belong to whomever generated
-them, and may be sold commercially, and may be aggregated with this
-Package.
-
-7. C subroutines supplied by you and linked into this Package in order
-to emulate subroutines and variables of the language defined by this
-Package shall not be considered part of this Package, but are the
-equivalent of input as in Paragraph 6, provided these subroutines do
-not change the language in any way that would cause it to fail the
-regression tests for the language.
-
-8. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
-WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-                               The End
diff --git a/usr.bin/ee/FREEBSD-upgrade b/usr.bin/ee/FREEBSD-upgrade
deleted file mode 100644 (file)
index 8766be8..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-$FreeBSD: src/usr.bin/ee/FREEBSD-upgrade,v 1.1.2.1 2001/06/10 11:06:06 sobomax Exp $
-$DragonFly: src/usr.bin/ee/FREEBSD-upgrade,v 1.2 2003/06/17 04:29:26 dillon Exp $
-
-Hugh F. Mahon's EasyEditor
-       originals can be found at:      http://mahon.cwx.net/
-                                       http://www.users.qwest.net/~hmahon/
-
-Imported by:
-
-       cvs import -m "Virgin import of Hugh F. Mahon's EasyEditor 1.4.1." \
-               src/usr.bin/ee HUGH_F_MAHON ee_1_4_1
-
-Notes:
-       1. Due to an error this release was imported as 1.4.1, while in fact
-       it is version 1.4.2.
-
-       2. Due to historical reasons files layout has been changed from the
-       vendor's one. The following log shows details:
-
-       $ tar xvfz tar xvfz ee-1.4.2.src.tgz
-       $ cd easyedit
-       $ rm Makefile create.make genstr make.default
-       $ mv README.ee README
-       $ mkdir -p nls/en_US.ISO_8859-1
-       $ mv ee.msg nls/en_US.ISO_8859-1/
-
-
-sobomax@FreeBSD.org
-27 May 2000
index 7ab37a8..16ff2eb 100644 (file)
@@ -1,28 +1,36 @@
-# $FreeBSD: src/usr.bin/ee/Makefile,v 1.11.6.4 2002/02/18 15:03:35 ru Exp $
+# $FreeBSD: head/usr.bin/ee/Makefile 246592 2013-02-09 13:31:59Z antoine $
 
-CFLAGS+= -DCAP -DHAS_NCURSES -DHAS_UNISTD -DHAS_STDARG -DHAS_STDLIB \
-        -DHAS_CTYPE -DHAS_SYS_IOCTL -DHAS_SYS_WAIT -DSLCT_HDR
+.PATH: ${.CURDIR}/../../contrib/ee
+
+CFLAGS+= -DHAS_NCURSES -DHAS_UNISTD -DHAS_STDARG -DHAS_STDLIB \
+        -DHAS_SYS_WAIT
 
 PROG=  ee
 LINKS= ${BINDIR}/ee ${BINDIR}/ree ${BINDIR}/ee ${BINDIR}/edit
 MLINKS=        ee.1 ree.1 ee.1 edit.1
 DPADD= ${LIBNCURSES}
 LDADD= -lncurses
+
 WARNS?=        2
 
-NLS=   en_US.US-ASCII fr_FR.ISO8859-1 de_DE.ISO8859-1 pl_PL.ISO8859-2 \
-       uk_UA.KOI8-U ru_RU.KOI8-R
+NLS=   C fr_FR.ISO8859-1 de_DE.ISO8859-1 pl_PL.ISO8859-2 \
+       uk_UA.KOI8-U pt_BR.ISO8859-1 ru_RU.KOI8-R hu_HU.ISO8859-2
 
-NLSLINKS_en_US.US-ASCII= en_US.ISO8859-1 en_US.ISO8859-15
+NLSLINKS_C= en_US.ISO8859-1 en_US.ISO8859-15
 NLSLINKS_fr_FR.ISO8859-1= fr_BE.ISO8859-1 fr_BE.ISO8859-15 \
         fr_CA.ISO8859-1 fr_CA.ISO8859-15 fr_CH.ISO8859-1 fr_CH.ISO8859-15 \
        fr_FR.ISO8859-15
 NLSLINKS_de_DE.ISO8859-1= de_AT.ISO8859-1 de_AT.ISO8859-15 de_CH.ISO8859-1 \
         de_CH.ISO8859-15 de_DE.ISO8859-15
+NLSLINKS_pt_BR.ISO8859-1= pt_PT.ISO8859-1
 
 NLSSRCFILES=ee.msg
 .for lang in ${NLS}
+. if exists(${.CURDIR}/nls/${lang}/ee.msg)
 NLSSRCDIR_${lang}= ${.CURDIR}/nls/${lang}
+. else
+NLSSRCDIR_${lang}= ${.CURDIR}/../../contrib/ee
+. endif
 .endfor
 
 .include <bsd.prog.mk>
diff --git a/usr.bin/ee/README b/usr.bin/ee/README
deleted file mode 100644 (file)
index 6e2d511..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-$FreeBSD: src/usr.bin/ee/README,v 1.1.1.1.10.1 2001/06/10 11:06:06 sobomax Exp $
-$DragonFly: src/usr.bin/ee/README,v 1.2 2003/06/17 04:29:26 dillon Exp $
-
-          THIS MATERIAL IS PROVIDED "AS IS".  THERE ARE NO WARRANTIES OF 
-          ANY KIND WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT 
-          LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
-          FITNESS FOR A PARTICULAR PURPOSE.  Neither Hewlett-Packard nor 
-          Hugh Mahon shall be liable for errors contained herein, nor for 
-          incidental or consequential damages in connection with the 
-          furnishing, performance or use of this material.  Neither 
-          Hewlett-Packard nor Hugh Mahon assumes any responsibility for 
-          the use or reliability of this software or documentation.  This 
-          software and documentation is totally UNSUPPORTED.  There is no 
-          support contract available.  Hewlett-Packard has done NO 
-          Quality Assurance on ANY of the program or documentation.  You 
-          may find the quality of the materials inferior to supported 
-          materials. 
-
-      This software may be distributed under the terms of Larry Wall's 
-      Artistic license, a copy of which is included in this distribution. 
-
-      This notice must be included with this software and any 
-      derivatives. 
-
-      Any modifications to this software by anyone but the original author 
-      must be so noted. 
-
-
-The editor 'ee' (easy editor) is intended to be a simple, easy to use 
-terminal-based screen oriented editor that requires no instruction to 
-use.  Its primary use would be for people who are new to computers, or who 
-use computers only for things like e-mail.
-
-ee's simplified interface is highlighted by the use of pop-up menus which 
-make it possible for users to carry out tasks without the need to 
-remember commands.  An information window at the top of the screen shows 
-the user the operations available with control-keys.
-
-ee allows users to use full eight-bit characters.  If the host system has 
-the capabilities, ee can use message catalogs, which would allow users to 
-translate the message catalog into other languages which use eight-bit 
-characters.  See the file ee.i18n.guide for more details.
-
-ee relies on the virtual memory abilities of the platform it is running on 
-and does not have its own memory management capabilities.
-
-I am releasing ee because I hate to see new users and non-computer types 
-get frustrated by vi, and would like to see more intuitive interfaces for 
-basic tools (both character-based and graphical) become more pervasive.
-Terminal capabilities and communication speeds have evolved considerably 
-since the time in which vi's interface was created, allowing much more 
-intuitive interfaces to be used.  Since character-based I/O won't be 
-completely replaced by graphical user interfaces for at least a few more 
-years, I'd like to do what I can to make using computers with less 
-glamorous interfaces as easy to use as possible.  If terminal interfaces 
-are still used in ten years, I hope neophytes won't still be stuck with 
-only vi.  
-
-For a text editor to be easy to use requires a certain set of abilities.  In 
-order for ee to work, a terminal must have the ability to position the cursor 
-on the screen, and should have arrow keys that send unique sequences 
-(multiple characters, the first character is an "escape", octal code 
-'\033').  All of this information needs to be in a database called "terminfo" 
-(System V implementations) or "termcap" (usually used for BSD systems).  In 
-case the arrow keys do not transmit unique sequences, motion operations are 
-mapped to control keys as well, but this at least partially defeats the 
-purpose.  The curses package is used to handle the I/O which deals with the 
-terminal's capabilities.  
-
-While ee is based on curses, I have included here the source code to 
-new_curse, a subset of curses developed for use with ee.  'curses' often  
-will have a defect that reduces the usefulness of the editor relying upon 
-it.  
-
-The file new_curse.c contains a subset of 'curses', a package for 
-applications to use to handle screen output.  Unfortunately, curses 
-varies from system to system, so I developed new_curse to provide 
-consistent behavior across systems.  It works on both SystemV and BSD 
-systems, and while it can sometimes be slower than other curses packages, 
-it will get the information on the screen painted correctly more often 
-than vendor supplied curses.  Unless problems occur during the building 
-of ee, it is recommended that you use new_curse rather than the curses 
-supplied with your system.
-
-If you experience problems with data being displayed improperly, check 
-your terminal configuration, especially if you're using a terminal 
-emulator, and make sure that you are using the right terminfo entry 
-before rummaging through code.  Terminfo entries often contain 
-inaccuracies, or incomplete information, or may not totally match the 
-terminal or emulator the terminal information is being used with.  
-Complaints that ee isn't working quite right often end up being something 
-else (like the terminal emulator being used).  
-
-Both ee and new_curse were developed using K&R C (also known as "classic 
-C"), but it can also be compiled with ANSI C.  You should be able to 
-build ee by simply typing "make".  A make file which takes into account 
-the characteristics of your system will be created, and then ee will be 
-built.  If there are problems encountered, you will be notified about 
-them. 
-
-ee is the result of several conflicting design goals.  While I know that it 
-solves the problems of some users, I also have no doubt that some will decry 
-its lack of more features.  I will settle for knowing that ee does fulfill 
-the needs of a minority (but still large number) of users.  The goals of ee 
-are: 
-
-        1. To be so easy to use as to require no instruction.
-        2. To be easy to compile and, if necessary, port to new platforms 
-           by people with relatively little knowledge of C and UNIX.
-        3. To have a minimum number of files to be dealt with, for compile 
-           and installation.
-        4. To have enough functionality to be useful to a large number of 
-           people.
-
-Hugh Mahon              |___|     
-h_mahon@fc.hp.com       |   |     
-                            |\  /|
-                            | \/ |
-
diff --git a/usr.bin/ee/ee.1 b/usr.bin/ee/ee.1
deleted file mode 100644 (file)
index f34ee3c..0000000
+++ /dev/null
@@ -1,581 +0,0 @@
-.\"
-.\" $FreeBSD: src/usr.bin/ee/ee.1,v 1.8.2.6 2002/06/20 23:45:45 charnier Exp $
-.\"
-.Dd August 30, 1995
-.Dt EE 1
-.Os
-.Sh NAME
-.Nm ee
-.Nd easy editor
-.Sh SYNOPSIS
-.Nm
-.Op Fl  eih
-.Op +#
-.Op Ar
-.Nm ree
-.Op Fl eih
-.Op +#
-.Op Ar
-.Sh DESCRIPTION
-The
-.Nm
-utility
-is a simple screen oriented text editor.  It is always in text insertion
-mode unless there is a prompt at the bottom of the terminal, or a
-menu present (in a box in the middle of the terminal).  The
-.Nm ree
-utility is the same as
-.Nm ,
-but restricted to editing the named
-file (no file operations, or shell escapes are allowed).
-.Pp
-For
-.Nm
-to work properly, the environment variable
-.Ev TERM
-must be set to indicate the type of terminal being used.  For
-example, for an
-.Tn HP 700/92
-terminal, the
-.Ev TERM
-variable should be set to "70092".  See your System Administrator if
-you need more information.
-.Pp
-The following options are available:
-.Bl -tag -width indent
-.It Fl e
-Turn off expansion of tab character to spaces.
-.It Fl i
-Turn off display of information window at top of terminal.
-.It Fl h
-Turn off highlighting of borders of windows and menus (improves
-performance on some terminals).
-.It Sy +#
-Move the cursor to line '#' at startup.
-.El
-.Ss "Control keys"
-To do anything other than insert text, the user must use the control
-keys (the
-.Li Control
-key, represented by a "^",  pressed in conjunction with an
-alphabetic key, e.g., ^a) and function keys available on the keyboard
-(such as
-.Em "Next Page" ,
-.Em "Prev Page" ,
-arrow keys, etc.).
-.Pp
-Since not all terminals have function keys,
-.Nm
-has the basic cursor movement functions assigned to control keys as
-well as more intuitive keys on the keyboard when available.  For
-instance, to move the cursor up, the user can use the up arrow key,
-or
-.Em ^u .
-.Bl -tag -width indent
-.It ^a
-Prompt for the decimal value of a character to insert.
-.It ^b
-Move to the bottom of the text.
-.It ^c
-Get the prompt for a command.
-.It ^d
-Move the cursor down.
-.It ^e
-Prompt for the string to search for.
-.It ^f
-Undelete the last deleted character.
-.It ^g
-Move to the beginning of the line.
-.It ^h
-Backspace.
-.It ^i
-Tab.
-.It ^j
-Insert a newline.
-.It ^k
-Delete the character the cursor is sitting on.
-.It ^l
-Move the cursor left.
-.It ^m
-Insert a newline.
-.It ^n
-Move to the next page.
-.It ^o
-Move to the end of the line.
-.It ^p
-Move to the previous page.
-.It ^r
-Move the cursor to the right.
-.It ^t
-Move to the top of the text.
-.It ^u
-Move the cursor up.
-.It ^v
-Undelete the last deleted word.
-.It ^w
-Delete the word beginning at the cursor position.
-.It ^x
-Search.
-.It ^y
-Delete from the cursor position to the end of line.
-.It ^z
-Undelete the last deleted line.
-.It ^[ (ESC)
-Pop up menu.
-.El
-.Ss "EMACS keys mode"
-Since many shells provide an Emacs mode (for cursor movement and other editing
-operations), some bindings that may be more useful for people familiar with
-those bindings have been provided.  These are accessible via the
-.Em settings
-menu, or via the initialization file (see below).  The mappings are as follows:
-.Bl -tag -width indent
-.It ^a
-Move to the beginning of the line.
-.It ^b
-Back 1 character.
-.It ^c
-Command prompt.
-.It ^d
-Delete character the cursor is sitting on.
-.It ^e
-End of line.
-.It ^f
-Forward 1 character.
-.It ^g
-Go back 1 page.
-.It ^h
-Backspace.
-.It ^i
-Tab.
-.It ^j
-Undelete last deleted character.
-.It ^k
-Delete line.
-.It ^l
-Undelete last deleted line.
-.It ^m
-Insert a newline.
-.It ^n
-Move to the next line.
-.It ^o
-Prompt for the decimal value of a character to insert.
-.It ^p
-Previous line.
-.It ^r
-Restore last deleted word.
-.It ^t
-Move to the top of the text.
-.It ^u
-Move to the bottom of the text.
-.It ^v
-Move to the next page.
-.It ^w
-Delete the word beginning at the cursor position.
-.It ^y
-Prompt for the string to search for.
-.It ^z
-Next word.
-.It ^[ (ESC)
-Pop up menu.
-.El
-.Ss "Function Keys"
-.Bl -tag -width indent
-.It Next Page
-Move to the next page.
-.It Prev Page
-Move to the previous page.
-.It Delete Char
-Delete the character the cursor is on.
-.It Delete Line
-Delete from the cursor to the end of line.
-.It Insert line
-Insert a newline at the cursor position.
-.It Arrow keys
-Move the cursor in the direction indicated.
-.El
-.Ss Commands
-Some operations require more information than a single keystroke can
-provide.  For the most basic operations, there is a menu that can be
-obtained by pressing the
-.Tn ESC
-key.  The same operations, and more can be performed by obtaining the
-command prompt (^c) and typing in one of the commands below.
-.Bl -tag -width indent
-.It ! Ns Ar cmd
-Execute
-.Ar cmd
-in a shell.
-.It 0-9
-Move to the line indicated.
-.It case
-Make searches case sensitive.
-.It character
-Display the ASCII value of the character at the cursor.
-.It exit
-Save the edited text, and leave the editor.
-.It expand
-Expand tabs to spaces.
-.It file
-Print the name of the file.
-.It help
-Display help screen.
-.It line
-Display the current line number.
-.It nocase
-Make searches insensitive to case (the default).
-.It noexpand
-Don't expand tab to spaces when the TAB key is pressed.
-.It quit
-Leave the editor without saving changes.
-.It read Ar file
-Read the named
-.Ar file .
-.It write Ar file
-Write the text to the named
-.Ar file .
-.El
-.Ss "Menu Operations"
-Pop-up menus can be obtained by pressing the
-.Em escape
-key (or
-.Em ^[
-if no
-.Em escape
-key is present).  When in the menu, the escape key can be
-used to leave the menu without performing any operations.  Use the up and
-down arrow keys, or
-.Em ^u
-for moving up and
-.Em ^d
-for moving down to move to the desired items in the menu, then press
-.Em return
-to perform the indicated task.
-.Pp
-To the left of each menu item is a letter, which if the corresponding
-letter is pressed on the keyboard selects that menu entry.
-.Pp
-The main menu in
-.Nm
-is as follows:
-.Bl -tag -width indent
-.It leave editor
-If changes have been made, the user will get a menu prompting whether or
-not the changes should be saved.
-.It help
-Display a help screen, with all of the keyboard operations and commands.
-.It file operations
-Pop up a menu for selecting whether to read a file, write to a file, or
-save the current contents of the editor, as well as send the contents of
-the editor to a print command (see the section
-.Sx "Initializing ee from a file" ) .
-.It redraw screen
-Provide a means to repaint the screen if the screen has been corrupted.
-.It settings
-Show the current values of the operating modes, and right margin.  By
-pressing return when the cursor is on a particular item, the value can be
-changed.  To leave this menu, press the
-.Em escape
-key. (See
-.Sx Modes
-below.)
-.It search
-Pop up a menu in which the user may choose to enter a string to search
-for, or search for a string already entered.
-.It miscellaneous
-Pop up a menu that allows the user to format the current paragraph,
-execute a shell command, or check the spelling of the text in the editor.
-.El
-.Ss "Paragraph Formatting"
-Paragraphs are defined for
-.Nm
-by a block of text bounded by:
-.Bl -bullet -width indent
-.It
-Begin or end of file.
-.It
-Line with no characters, or only spaces and/or tabs.
-.It
-Line starting with a period ('.') or right angle bracket ('>').
-.El
-.Pp
-A paragraph may be formatted two ways:  explicitly by choosing the
-.Em format paragraph
-menu item, or by setting
-.Nm
-to automatically
-format paragraphs.  The automatic mode may be set via a menu, or via the
-initialization file.
-.Pp
-There are three states for text operation in
-.Nm :
-free-form, margins,
-and automatic formatting.
-.Pp
-"Free-form" is best used for things like programming.  There are no
-restrictions on the length of lines, and no formatting takes place.
-.Pp
-"Margins" allows the user to type in text without having to worry about going
-beyond the right margin (the right margin may be set in the
-.Em settings
-menu, the default is for the margin to be the right edge of the
-terminal).  This is the mode that allows the
-.Em format paragraph
-menu item to work.
-.Pp
-"Automatic formatting" provides word-processor-like behavior.  The user
-may type in text, while
-.Nm
-will make sure the entire paragraph fits
-within the width of the terminal every time the user inserts a space after
-typing or deleting text.  Margin observation must also be enabled in order for
-automatic formatting to occur.
-.Ss Modes
-Although
-.Nm
-is a 'modeless' editor (it is in text insertion mode all the
-time), there are modes in some of the things it does.  These include:
-.Bl -tag -width indent
-.It tab expansion
-Tabs may be inserted as a single tab character, or replaced with spaces.
-.It case sensitivity
-The search operation can be sensitive to whether characters are upper- or
-lower-case, or ignore case completely.
-.It margins observed
-Lines can either be truncated at the right margin, or extend on forever.
-.It auto paragraph formatting
-While typing in text, the editor can try to keep it looking reasonably well
-within the width of the screen.
-.It eightbit characters
-Toggle whether eight bit characters are displayed as their value in angle
-brackets (e.g. "<220>") or as a character.
-.It info window
-A window showing the keyboard operations that can be performed can be
-displayed or not.
-.It emacs keys
-Control keys may be given bindings similar to emacs, or not.
-.It 16 bit characters
-Toggles whether sixteen bit characters are handled as one 16-bit quantities or
-two 8-bit quantities.  This works primarily with the Chinese Big 5 code set.
-.El
-.Pp
-You may set these modes via the initialization file (see below), or with a
-menu (see above).
-.Ss "Spell Checking"
-There are two ways to have the spelling in the text checked from
-.Nm .
-One is by the traditional
-.Xr spell 1
-command, the other is with the
-optional
-.Xr ispell 1
-command.
-.Pp
-Using
-.Nm spell ,
-the words that are not recognized will be placed at the top
-of the file.  For the
-.Nm ispell
-option, the file is written to disk,
-then
-.Nm ispell
-run on the file, and the file read back in once
-.Nm ispell
-has completed making changes to the file.
-.Ss "Printing the contents of the editor"
-The user may select a menu item which prints the contents of the editor.
-The
-.Nm
-utility pipes the text in the editor to the command specified by the
-initialization command
-.Em printcommand
-(see the section
-.Sx Initializing ee from a file
-below).  The default is to send the contents to
-.Xr lp 1 .
-.Pp
-Whatever the user assigns to
-.Em printcommand
-must take input from
-standard input.  See your system administrator for more details.
-.Ss "Shell operations"
-Shell commands can be executed from within
-.Nm
-by selecting the
-.Em shell command
-item in the
-.Em miscellaneous
-menu, or by placing an exclamation mark ("!") before the command to
-execute at the
-.Em command:
-prompt.  Additionally, the user may direct the contents of the edit buffer
-out to a shell operation (via a pipe) by using the left angle bracket
-(">"), followed by a "!" and the shell command to execute.  The output of
-a shell operation can also be directed into the edit buffer by using a
-right angle bracket ("<") before the exclamation mark.  These can even be
-used together to send output to a shell operation and read back the
-results into the editor.  So, if the editor contained a list of words
-to be sorted, they could be sorted by typing the following at the command
-prompt:
-.Dl ><!sort
-This would send the contents of the editor to be piped into the
-.Xr sort 1
-utility and the result would be placed into the edit buffer at the current
-cursor location.  The old information would have to be deleted by the user.
-.Ss "Initializing ee from a file"
-Since different users have different preferences,
-.Nm
-allows some
-slight configurability.  There are three possible locations for an
-initialization file for
-.Nm :
-the file
-.Pa /usr/share/misc/init.ee ,
-the file
-.Pa .init.ee
-in the user's home directory, or the file
-.Pa .init.ee
-in the current directory (if different from the home
-directory).  This allows system administrators to set some preferences for
-the users on a system-wide basis (for example, the
-.Em print
-command),
-and the user to customize settings for particular directories (like one
-for correspondence, and a different directory for programming).
-.Pp
-The file
-.Pa /usr/share/misc/init.ee
-is read first, then
-.Pa $HOME/.init.ee ,
-then
-.Pa .init.ee ,
-with the settings specified by the
-most recent file read taking precedence.
-.Pp
-The following items may be entered in the initialization file:
-.Bl -tag -width indent
-.It case
-Set searches to be case sensitive.
-.It nocase
-Set searches to be insensitive to case (default).
-.It expand
-Cause
-.Nm
-to expand tabs to spaces (default).
-.It noexpand
-Cause
-.Nm
-to insert tabs as a single character.
-.It info
-A small information window is displayed at the top of the terminal
-(default).
-.It noinfo
-Turn off the display of the information window.
-.It margins
-Cause
-.Nm
-to truncate lines at the right margin when the
-cursor passes beyond the right margin as set by the user
-while text is being inserted
-(default).
-.It nomargins
-Allow lines to extend beyond the right margin.
-.It autoformat
-Cause
-.Nm
-to automatically try to format the current paragraph while
-text insertion is occurring.
-.It noautoformat
-Turn off automatic paragraph formatting (default).
-.It printcommand
-Allow the setting of the print command (default: "lp").
-.It rightmargin
-The user can select a value for the right margin (the first column on the
-screen is zero).
-.It highlight
-Turn on highlighting of border of information window and menus (default).
-.It nohighlight
-Turn off highlighting of border of information window and menus.
-.It eightbit
-Turn on display of eight bit characters.
-.It noeightbit
-Turn off display of eight bit characters (they are displayed as their decimal
-value inside angle brackets, e.g., "<220>").
-.It 16bit
-Turns on handling of 16-bit characters.
-.It no16bit
-Turns off handling of 16-bit characters.
-.It emacs
-Turns on emacs key bindings.
-.It noemacs
-Turns off emacs key bindings.
-.El
-.Ss "Save Editor Configuration"
-When using this entry from the
-.Em settings
-menu, the user may choose to save the current configuration of
-the editor (see
-.Sx Initializing ee from a file
-above) to a file named
-.Pa .init.ee
-in the current directory or the user's home directory.  If a file named
-.Pa .init.ee
-already exists, it will be renamed
-.Pa .init.ee.old .
-.Sh CAVEATS
-THIS MATERIAL IS PROVIDED "AS IS".  THERE ARE
-NO WARRANTIES OF ANY KIND WITH REGARD TO THIS
-MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE.  Neither
-Hewlett-Packard nor Hugh Mahon shall be liable
-for errors contained herein, nor for
-incidental or consequential damages in
-connection with the furnishing, performance or
-use of this material.  Neither Hewlett-Packard
-nor Hugh Mahon assumes any responsibility for
-the use or reliability of this software or
-documentation.  This software and
-documentation is totally UNSUPPORTED.  There
-is no support contract available.  Hewlett-Packard
-has done NO Quality Assurance on ANY
-of the program or documentation.  You may find
-the quality of the materials inferior to
-supported materials.
-.Pp
-Always make a copy of files that cannot be easily reproduced before
-editing.  Save files early, and save often.
-.Ss "International Code Set Support"
-The
-.Nm
-utility supports single-byte character code sets (eight-bit clean), or the
-Chinese Big-5 code set.  (Other multi-byte code sets may function, but the
-reason Big-5 works is that a two-byte character also takes up two columns on
-the screen.)
-.Sh WARNINGS
-The automatic paragraph formatting operation
-may be too slow for slower systems.
-.Sh FILES
-.Bl -tag -width /usr/share/misc/init.ee -compact
-.It Pa /usr/share/misc/init.ee
-.It Pa $HOME/.init.ee
-.It Pa .init.ee
-.El
-.Sh SEE ALSO
-.Xr ispell 1 Pq Pa textproc/ispell ,
-.Xr lpr 1 ,
-.Xr spell 1 ,
-.Xr termcap 5 ,
-.Xr terminfo 5 ,
-.Xr environ 7
-.Sh AUTHORS
-The software
-.Nm
-was developed by
-.An Hugh Mahon .
-.Pp
-This software and documentation contains
-proprietary information which is protected by
-copyright.  All rights are reserved.
-.Pp
-Copyright (c) 1990, 1991, 1992, 1993, 1995, 1996 Hugh Mahon.
diff --git a/usr.bin/ee/ee.c b/usr.bin/ee/ee.c
deleted file mode 100644 (file)
index ed4a24b..0000000
+++ /dev/null
@@ -1,5258 +0,0 @@
-/*
- |     ee (easy editor)
- |
- |     An easy to use, simple screen oriented editor.
- |
- |     written by Hugh Mahon
- |
- |     THIS MATERIAL IS PROVIDED "AS IS".  THERE ARE
- |     NO WARRANTIES OF ANY KIND WITH REGARD TO THIS
- |     MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE
- |     IMPLIED WARRANTIES OF MERCHANTABILITY AND
- |     FITNESS FOR A PARTICULAR PURPOSE.  Neither
- |     Hewlett-Packard nor Hugh Mahon shall be liable
- |     for errors contained herein, nor for
- |     incidental or consequential damages in
- |     connection with the furnishing, performance or
- |     use of this material.  Neither Hewlett-Packard
- |     nor Hugh Mahon assumes any responsibility for
- |     the use or reliability of this software or
- |     documentation.  This software and
- |     documentation is totally UNSUPPORTED.  There
- |     is no support contract available.  Hewlett-
- |     Packard has done NO Quality Assurance on ANY
- |     of the program or documentation.  You may find
- |     the quality of the materials inferior to
- |     supported materials.
- |
- |     This software is not a product of Hewlett-Packard, Co., or any 
- |     other company.  No support is implied or offered with this software.
- |     You've got the source, and you're on your own.
- |
- |     This software may be distributed under the terms of Larry Wall's 
- |     Artistic license, a copy of which is included in this distribution. 
- |
- |     This notice must be included with this software and any derivatives.
- |
- |     This editor was purposely developed to be simple, both in 
- |     interface and implementation.  This editor was developed to 
- |     address a specific audience: the user who is new to computers 
- |     (especially UNIX).
- |     
- |     ee is not aimed at technical users; for that reason more 
- |     complex features were intentionally left out.  In addition, 
- |     ee is intended to be compiled by people with little computer 
- |     experience, which means that it needs to be small, relatively 
- |     simple in implementation, and portable.
- |
- |     This software and documentation contains
- |     proprietary information which is protected by
- |     copyright.  All rights are reserved.
- *
- * $FreeBSD: src/usr.bin/ee/ee.c,v 1.16.2.6 2002/05/11 16:33:06 mp Exp $
- */
-
-char *ee_copyright_message = 
-"Copyright (c) 1986, 1990, 1991, 1992, 1993, 1994, 1995, 1996 Hugh Mahon ";
-
-char *ee_long_notice[] = {
-       "This software and documentation contains", 
-       "proprietary information which is protected by", 
-       "copyright.  All rights are reserved."
-       };
-
-char *version = "@(#) ee, version 1.4.1";
-
-#include <ncurses.h>
-
-#ifdef HAS_CTYPE
-#include <ctype.h>
-#endif
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <paths.h>
-#include <pwd.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef HAS_SYS_WAIT
-#include <sys/wait.h>
-#endif
-#ifdef HAS_STDARG
-#include <stdarg.h>
-#endif
-#ifdef HAS_STDLIB
-#include <stdlib.h>
-#endif
-#include <string.h>
-#ifdef HAS_UNISTD
-#include <unistd.h>
-#endif
-
-#ifndef NO_CATGETS
-#include <locale.h>
-#include <nl_types.h>
-
-nl_catd catalog;
-#else
-#define catgetlocal(a, b) (b)
-#endif /* NO_CATGETS */
-
-#ifndef SIGCHLD
-#define SIGCHLD SIGCLD
-#endif
-
-#define TAB 9
-#define max(a, b)      (a > b ? a : b)
-#define min(a, b)      (a < b ? a : b)
-
-/*
- |     defines for type of data to show in info window
- */
-
-#define CONTROL_KEYS 1
-#define COMMANDS     2
-
-struct text {
-       unsigned char *line;            /* line of characters           */
-       int line_number;                /* line number                  */
-       int line_length;        /* actual number of characters in the line */
-       int max_length; /* maximum number of characters the line handles */
-       struct text *next_line;         /* next line of text            */
-       struct text *prev_line;         /* previous line of text        */
-       };
-
-struct text *first_line;       /* first line of current buffer         */
-struct text *dlt_line;         /* structure for info on deleted line   */
-struct text *curr_line;                /* current line cursor is on            */
-struct text *tmp_line;         /* temporary line pointer               */
-struct text *srch_line;                /* temporary pointer for search routine */
-
-struct files {         /* structure to store names of files to be edited*/
-       unsigned char *name;            /* name of file                         */
-       struct files *next_name;
-       };
-
-struct files *top_of_stack = NULL;
-
-int d_wrd_len;                 /* length of deleted word               */
-int position;                  /* offset in bytes from begin of line   */
-int scr_pos;                   /* horizontal position                  */
-int scr_vert;                  /* vertical position on screen          */
-int scr_horz;                  /* horizontal position on screen        */
-int tmp_vert, tmp_horz;
-int input_file;                        /* indicate to read input file          */
-int recv_file;                 /* indicate reading a file              */
-int edit;                      /* continue executing while true        */
-int gold;                      /* 'gold' function key pressed          */
-int fildes;                    /* file descriptor                      */
-int case_sen;                  /* case sensitive search flag           */
-int last_line;                 /* last line for text display           */
-int last_col;                  /* last column for text display         */
-int horiz_offset = 0;          /* offset from left edge of text        */
-int clear_com_win;             /* flag to indicate com_win needs clearing */
-int text_changes = FALSE;      /* indicate changes have been made to text */
-int get_fd;                    /* file descriptor for reading a file   */
-int info_window = TRUE;                /* flag to indicate if help window visible */
-int info_type = CONTROL_KEYS;  /* flag to indicate type of info to display */
-int expand_tabs = TRUE;                /* flag for expanding tabs              */
-int right_margin = 0;          /* the right margin                     */
-int observ_margins = TRUE;     /* flag for whether margins are observed */
-int shell_fork;
-int temp_stdin;                        /* temporary storage for stdin          */
-int temp_stdout;               /* temp storage for stdout descriptor   */
-int temp_stderr;               /* temp storage for stderr descriptor   */
-int pipe_out[2];               /* pipe file desc for output            */
-int pipe_in[2];                        /* pipe file descriptors for input      */
-int out_pipe;                  /* flag that info is piped out          */
-int in_pipe;                   /* flag that info is piped in           */
-int formatted = FALSE;         /* flag indicating paragraph formatted  */
-int auto_format = FALSE;       /* flag for auto_format mode            */
-int restricted = FALSE;                /* flag to indicate restricted mode     */
-int nohighlight = FALSE;       /* turns off highlighting               */
-int eightbit = TRUE;           /* eight bit character flag             */
-int local_LINES = 0;           /* copy of LINES, to detect when win resizes */
-int local_COLS = 0;            /* copy of COLS, to detect when win resizes  */
-int curses_initialized = FALSE;        /* flag indicating if curses has been started*/
-int emacs_keys_mode = FALSE;   /* mode for if emacs key binings are used    */
-int ee_chinese = FALSE;                /* allows handling of multi-byte characters  */
-                               /* by checking for high bit in a byte the    */
-                               /* code recognizes a two-byte character      */
-                               /* sequence                                  */
-
-unsigned char *point;          /* points to current position in line   */
-unsigned char *srch_str;       /* pointer for search string            */
-unsigned char *u_srch_str;     /* pointer to non-case sensitive search */
-unsigned char *srch_1;         /* pointer to start of suspect string   */
-unsigned char *srch_2;         /* pointer to next character of string  */
-unsigned char *srch_3;
-unsigned char *in_file_name = NULL;    /* name of input file           */
-char *tmp_file;        /* temporary file name                  */
-unsigned char *d_char;         /* deleted character                    */
-unsigned char *d_word;         /* deleted word                         */
-unsigned char *d_line;         /* deleted line                         */
-char in_string[513];   /* buffer for reading a file            */
-unsigned char *print_command = "lpr";  /* string to use for the print command  */
-unsigned char *start_at_line = NULL;   /* move to this line at start of session*/
-const char count_text_default[] = "===============================================================================";
-int count_text_len = sizeof(count_text_default);       /* length of the line above     */
-char count_text[sizeof(count_text_default)];   /* buffer for current position display  */
-int in;                                /* input character                      */
-
-FILE *temp_fp;                 /* temporary file pointer               */
-FILE *bit_bucket;              /* file pointer to /dev/null            */
-
-char *table[] = { 
-       "^@", "^A", "^B", "^C", "^D", "^E", "^F", "^G", "^H", "\t", "^J", 
-       "^K", "^L", "^M", "^N", "^O", "^P", "^Q", "^R", "^S", "^T", "^U", 
-       "^V", "^W", "^X", "^Y", "^Z", "^[", "^\\", "^]", "^^", "^_"
-       };
-
-WINDOW *com_win;
-WINDOW *text_win;
-WINDOW *help_win;
-WINDOW *info_win;
-WINDOW *count_win;
-
-/*
- |     The following structure allows menu items to be flexibly declared.
- |     The first item is the string describing the selection, the second 
- |     is the address of the procedure to call when the item is selected,
- |     and the third is the argument for the procedure.
- |
- |     For those systems with i18n, the string should be accompanied by a
- |     catalog number.  The 'int *' should be replaced with 'void *' on 
- |     systems with that type.
- |
- |     The first menu item will be the title of the menu, with NULL 
- |     parameters for the procedure and argument, followed by the menu items.
- |
- |     If the procedure value is NULL, the menu item is displayed, but no 
- |     procedure is called when the item is selected.  The number of the 
- |     item will be returned.  If the third (argument) parameter is -1, no 
- |     argument is given to the procedure when it is called.
- */
-
-struct menu_entries {
-       char *item_string;
-       int (*procedure)(struct menu_entries *);
-       struct menu_entries *ptr_argument;
-       int (*iprocedure)(int);
-       void (*nprocedure)(void);
-       int argument;
-       };
-
-unsigned char *resiz_line(int factor, struct text *rline, int rpos);
-void insert(int character);
-void delete(int disp);
-void scanline(unsigned char *pos);
-int tabshift(int temp_int);
-int out_char(WINDOW *window, int character, int column);
-int len_char(int character, int column);
-void draw_line(int vertical, int horiz, unsigned char *ptr, int t_pos, int length);
-void insert_line(int disp);
-struct text *txtalloc(void);
-struct files *name_alloc(void);
-unsigned char *next_word(unsigned char *string);
-void prev_word(void);
-void control(void);
-void emacs_control(void);
-void bottom(void);
-void top(void);
-void nextline(void);
-void prevline(void);
-void left(int disp);
-void right(int disp);
-void find_pos(void);
-void up(void);
-void down(void);
-void function_key(void);
-void print_buffer(void);
-void command_prompt(void);
-void command(char *cmd_str1);
-int scan(char *line, int offset, int column);
-char *get_string(char *prompt, int advance);
-int compare(char *string1, char *string2, int sensitive);
-void goto_line(char *cmd_str);
-void midscreen(int line, unsigned char *pnt);
-void get_options(int numargs, char *arguments[]);
-void check_fp(void);
-void get_file(char *file_name);
-void get_line(int length, unsigned char *in_string, int *append);
-void draw_screen(void);
-void finish(void);
-int quit(int noverify);
-void edit_abort(int arg);
-void delete_text(void);
-int write_file(char *file_name, int warn_if_exists);
-int search(int display_message);
-void search_prompt(void);
-void del_char(void);
-void undel_char(void);
-void del_word(void);
-void undel_word(void);
-void del_line(void);
-void undel_line(void);
-void adv_word(void);
-void move_rel(char *direction, int lines);
-void eol(void);
-void bol(void);
-void adv_line(void);
-void sh_command(char *string);
-void set_up_term(void);
-void resize_check(void);
-int menu_op(struct menu_entries *);
-void paint_menu(struct menu_entries menu_list[], int max_width, int max_height, int list_size, int top_offset, WINDOW *menu_win, int off_start, int vert_size);
-void help(void);
-void paint_info_win(void);
-void no_info_window(void);
-void create_info_window(void);
-int file_op(int arg);
-void shell_op(void);
-void leave_op(void);
-void redraw(void);
-int Blank_Line(struct text *test_line);
-void Format(void);
-void ee_init(void);
-void dump_ee_conf(void);
-void echo_string(char *string);
-void spell_op(void);
-void ispell_op(void);
-int first_word_len(struct text *test_line);
-void Auto_Format(void);
-void modes_op(void);
-char *is_in_string(char *string, char *substring);
-char *resolve_name(char *name);
-int restrict_mode(void);
-int unique_test(char *string, char *list[]);
-void renumber_lines(struct text *firstline, int startnumber);
-void strings_init(void);
-
-/*
- |     allocate space here for the strings that will be in the menu
- */
-
-struct menu_entries modes_menu[] = {
-       {"", NULL, NULL, NULL, NULL, 0},        /* title                */
-       {"", NULL, NULL, NULL, NULL, -1},       /* 1. tabs to spaces    */
-       {"", NULL, NULL, NULL, NULL, -1},       /* 2. case sensitive search*/
-       {"", NULL, NULL, NULL, NULL, -1},       /* 3. margins observed  */
-       {"", NULL, NULL, NULL, NULL, -1},       /* 4. auto-paragraph    */
-       {"", NULL, NULL, NULL, NULL, -1},       /* 5. eightbit characters*/
-       {"", NULL, NULL, NULL, NULL, -1},       /* 6. info window       */
-       {"", NULL, NULL, NULL, NULL, -1},       /* 7. emacs key bindings*/
-       {"", NULL, NULL, NULL, NULL, -1},       /* 8. right margin      */
-       {"", NULL, NULL, NULL, NULL, -1},       /* 9. chinese text      */
-       {"", NULL, NULL, NULL, dump_ee_conf, -1}, /* 10. save editor config */
-       {NULL, NULL, NULL, NULL, NULL, -1}      /* terminator           */
-       };
-
-char *mode_strings[11]; 
-
-#define NUM_MODES_ITEMS 10
-
-struct menu_entries config_dump_menu[] = {
-       {"", NULL, NULL, NULL, NULL, 0}, 
-       {"", NULL, NULL, NULL, NULL, -1},
-       {"", NULL, NULL, NULL, NULL, -1},
-       {NULL, NULL, NULL, NULL, NULL, -1}
-       };
-
-struct menu_entries leave_menu[] = {
-       {"", NULL, NULL, NULL, NULL, -1}, 
-       {"", NULL, NULL, NULL, finish, -1}, 
-       {"", NULL, NULL, quit, NULL, TRUE}, 
-       {NULL, NULL, NULL, NULL, NULL, -1}
-       };
-
-#define READ_FILE 1
-#define WRITE_FILE 2
-#define SAVE_FILE 3
-
-struct menu_entries file_menu[] = {
-       {"", NULL, NULL, NULL, NULL, -1},
-       {"", NULL, NULL, file_op, NULL, READ_FILE},
-       {"", NULL, NULL, file_op, NULL, WRITE_FILE},
-       {"", NULL, NULL, file_op, NULL, SAVE_FILE},
-       {"", NULL, NULL, NULL, print_buffer, -1},
-       {NULL, NULL, NULL, NULL, NULL, -1}
-       };
-
-struct menu_entries search_menu[] = {
-       {"", NULL, NULL, NULL, NULL, 0}, 
-       {"", NULL, NULL, NULL, search_prompt, -1},
-       {"", NULL, NULL, search, NULL, TRUE},
-       {NULL, NULL, NULL, NULL, NULL, -1}
-       };
-
-struct menu_entries spell_menu[] = {
-       {"", NULL, NULL, NULL, NULL, -1}, 
-       {"", NULL, NULL, NULL, spell_op, -1},
-       {"", NULL, NULL, NULL, ispell_op, -1},
-       {NULL, NULL, NULL, NULL, NULL, -1}
-       };
-
-struct menu_entries misc_menu[] = {
-       {"", NULL, NULL, NULL, NULL, -1}, 
-       {"", NULL, NULL, NULL, Format, -1},
-       {"", NULL, NULL, NULL, shell_op, -1}, 
-       {"", menu_op, spell_menu, NULL, NULL, -1}, 
-       {NULL, NULL, NULL, NULL, NULL, -1}
-       };
-
-struct menu_entries main_menu[] = {
-       {"", NULL, NULL, NULL, NULL, -1}, 
-       {"", NULL, NULL, NULL, leave_op, -1}, 
-       {"", NULL, NULL, NULL, help, -1},
-       {"", menu_op, file_menu, NULL, NULL, -1}, 
-       {"", NULL, NULL, NULL, redraw, -1}, 
-       {"", NULL, NULL, NULL, modes_op, -1}, 
-       {"", menu_op, search_menu, NULL, NULL, -1}, 
-       {"", menu_op, misc_menu, NULL, NULL, -1}, 
-       {NULL, NULL, NULL, NULL, NULL, -1}
-       };
-
-char *help_text[23];
-char *control_keys[5];
-
-char *emacs_help_text[22];
-char *emacs_control_keys[5];
-
-char *command_strings[5];
-char *commands[32];
-char *init_strings[22];
-
-#define MENU_WARN 1
-
-#define max_alpha_char 36
-
-/*
- |     Declarations for strings for localization
- */
-
-char *com_win_message;         /* to be shown in com_win if no info window */
-char *no_file_string;
-char *ascii_code_str;
-char *printer_msg_str;
-char *command_str;
-char *file_write_prompt_str;
-char *file_read_prompt_str;
-char *char_str;
-char *unkn_cmd_str;
-char *non_unique_cmd_msg;
-char *line_num_str;
-char *line_len_str;
-char *current_file_str;
-char *usage0;
-char *usage1;
-char *usage2;
-char *usage3;
-char *usage4;
-char *file_is_dir_msg;
-char *new_file_msg;
-char *cant_open_msg;
-char *open_file_msg;
-char *file_read_fin_msg;
-char *reading_file_msg;
-char *read_only_msg;
-char *file_read_lines_msg;
-char *save_file_name_prompt;
-char *file_not_saved_msg;
-char *changes_made_prompt;
-char *yes_char;
-char *file_exists_prompt;
-char *create_file_fail_msg;
-char *writing_file_msg;
-char *file_written_msg;
-char *searching_msg;
-char *str_not_found_msg;
-char *search_prompt_str;
-char *exec_err_msg;
-char *continue_msg;
-char *menu_cancel_msg;
-char *menu_size_err_msg;
-char *press_any_key_msg;
-char *shell_prompt;
-char *formatting_msg;
-char *shell_echo_msg;
-char *spell_in_prog_msg;
-char *margin_prompt;
-char *restricted_msg;
-char *ON;
-char *OFF;
-char *HELP;
-char *WRITE;
-char *READ;
-char *LINE;
-char *FILE_str;
-char *CHARACTER;
-char *REDRAW;
-char *RESEQUENCE;
-char *AUTHOR;
-char *VERSION;
-char *CASE;
-char *NOCASE;
-char *EXPAND;
-char *NOEXPAND;
-char *Exit_string;
-char *QUIT_string;
-char *INFO;
-char *NOINFO;
-char *MARGINS;
-char *NOMARGINS;
-char *AUTOFORMAT;
-char *NOAUTOFORMAT;
-char *Echo;
-char *PRINTCOMMAND;
-char *RIGHTMARGIN;
-char *HIGHLIGHT;
-char *NOHIGHLIGHT;
-char *EIGHTBIT;
-char *NOEIGHTBIT;
-char *EMACS_string;
-char *NOEMACS_string;
-char *conf_dump_err_msg;
-char *conf_dump_success_msg;
-char *conf_not_saved_msg;
-char *ree_no_file_msg;
-char *cancel_string;
-char *menu_too_lrg_msg;
-char *more_above_str, *more_below_str;
-
-char *chinese_cmd, *nochinese_cmd;
-
-#ifndef __STDC__
-#ifndef HAS_STDLIB
-extern char *malloc();
-extern char *realloc();
-extern char *getenv();
-FILE *fopen();                 /* declaration for open function        */
-#endif /* HAS_STDLIB */
-#endif /* __STDC__ */
-
-int
-main(int argc, char **argv)            /* beginning of main program            */
-{
-       int counter;
-
-       for (counter = 1; counter < 24; counter++)
-               signal(counter, SIG_IGN);
-
-       signal(SIGCHLD, SIG_DFL);
-       signal(SIGSEGV, SIG_DFL);
-       signal(SIGINT, edit_abort);
-       signal(SIGHUP, edit_abort);
-
-       d_char = malloc(3);     /* provide a buffer for multi-byte chars */
-       d_word = malloc(150);
-       *d_word = 0;
-       d_line = NULL;
-       dlt_line = txtalloc();
-       dlt_line->line = d_line;
-       dlt_line->line_length = 0;
-       curr_line = first_line = txtalloc();
-       curr_line->line = point = malloc(10);
-       curr_line->line_length = 1;
-       curr_line->max_length = 10;
-       curr_line->prev_line = NULL;
-       curr_line->next_line = NULL;
-       curr_line->line_number  = 1;
-       srch_str = NULL;
-       u_srch_str = NULL;
-       position = 1;
-       scr_pos =0;
-       scr_vert = 0;
-       scr_horz = 0;
-       bit_bucket = fopen(_PATH_DEVNULL, "w");
-       edit = TRUE;
-       gold = case_sen = FALSE;
-       shell_fork = TRUE;
-       strings_init();
-       ee_init();
-       if (argc > 0 )
-               get_options(argc, argv);
-       set_up_term();
-       if (right_margin == 0)
-               right_margin = COLS - 1;
-       if (top_of_stack == NULL)
-       {
-               if (restrict_mode())
-               {
-                       wmove(com_win, 0, 0);
-                       werase(com_win);
-                       wprintw(com_win, ree_no_file_msg);
-                       wrefresh(com_win);
-                       edit_abort(0);
-               }
-               wprintw(com_win, no_file_string);
-               wrefresh(com_win);
-       }
-       else
-               check_fp();
-
-       clear_com_win = TRUE;
-
-       while(edit) 
-       {
-               if (info_window)
-               {
-                       snprintf(count_text, count_text_len, "L: %d C: %d %s", \
-                               curr_line->line_number, scr_horz + 1, count_text_default);
-                       wmove(count_win, 0, 0);
-                       if (!nohighlight)
-                               wstandout(count_win);
-                       wprintw(count_win, count_text);
-                       wstandend(count_win);
-                       wnoutrefresh(count_win);
-               }
-
-               wnoutrefresh(text_win);
-               doupdate();
-               in = wgetch(text_win);
-               if (in == -1)
-                       continue;
-
-               resize_check();
-
-               if (clear_com_win)
-               {
-                       clear_com_win = FALSE;
-                       wmove(com_win, 0, 0);
-                       werase(com_win);
-                       if (!info_window)
-                       {
-                               wprintw(com_win, "%s", com_win_message);
-                       }
-                       wrefresh(com_win);
-               }
-
-               if (in > 255)
-                       function_key();
-               else if ((in == '\10') || (in == 127))
-               {
-                       in = 8;         /* make sure key is set to backspace */
-                       delete(TRUE);
-               }
-               else if ((in > 31) || (in == 9))
-                       insert(in);
-               else if ((in >= 0) && (in <= 31))
-               {
-                       if (emacs_keys_mode)
-                               emacs_control();
-                       else
-                               control();
-               }
-       }
-       return(0);
-}
-
-/* factor: resize factor */
-/* rline: position in line */
-unsigned char *
-resiz_line(int factor, struct text *rline, int rpos)
-/* resize the line to length + factor*/
-{
-       unsigned char *rpoint;
-       int resiz_var;
-       rline->max_length += factor;
-       rpoint = rline->line = realloc(rline->line, rline->max_length );
-       for (resiz_var = 1 ; (resiz_var < rpos) ; resiz_var++)
-               rpoint++;
-       return(rpoint);
-}
-
-void 
-insert(int character)          /* insert character into line           */
-{
-       int counter;
-       int value;
-       unsigned char *temp;    /* temporary pointer                    */
-       unsigned char *temp2;   /* temporary pointer                    */
-
-       if ((character == '\011') && (expand_tabs))
-       {
-               counter = len_char('\011', scr_horz);
-               for (; counter > 0; counter--)
-                       insert(' ');
-               if (auto_format)
-                       Auto_Format();
-               return;
-       }
-       text_changes = TRUE;
-       if ((curr_line->max_length - curr_line->line_length) < 5)
-               point = resiz_line(10, curr_line, position);
-       curr_line->line_length++;
-       temp = point;
-       counter = position;
-       while (counter < curr_line->line_length)        /* find end of line */
-       {
-               counter++;
-               temp++;
-       }
-       temp++;                 /* increase length of line by one       */
-       while (point < temp)
-       {
-               temp2=temp - 1;
-               *temp= *temp2;  /* shift characters over by one         */
-               temp--;
-       }
-       *point = character;     /* insert new character                 */
-       wclrtoeol(text_win);
-       if (((character >= 0) && (character < ' ')) || (character >= 127)) /* check for TAB character*/
-       {
-               scr_pos = scr_horz += out_char(text_win, character, scr_horz);
-               point++;
-               position++;
-       }
-       else
-       {
-               waddch(text_win, character);
-               scr_pos = ++scr_horz;
-               point++;
-               position ++;
-       }
-
-       if ((observ_margins) && (right_margin < scr_pos))
-       {
-               counter = position;
-               while (scr_pos > right_margin)
-                       prev_word();
-               if (scr_pos == 0)
-               {
-                       while (position < counter)
-                               right(TRUE);
-               }
-               else
-               {
-                       counter -= position;
-                       insert_line(TRUE);
-                       for (value = 0; value < counter; value++)
-                               right(TRUE);
-               }
-       }
-
-       if ((scr_horz - horiz_offset) > last_col)
-       {
-               horiz_offset += 8;
-               midscreen(scr_vert, point);
-       }
-
-       if ((auto_format) && (character == ' ') && (!formatted))
-               Auto_Format();
-       else if ((character != ' ') && (character != '\t'))
-               formatted = FALSE;
-
-       draw_line(scr_vert, scr_horz, point, position, curr_line->line_length);
-}
-
-void 
-delete(int disp)                       /* delete character             */
-{
-       unsigned char *tp;
-       unsigned char *temp2;
-       struct text *temp_buff;
-       int temp_vert;
-       int temp_pos;
-       int del_width = 1;
-
-       if (point != curr_line->line)   /* if not at beginning of line  */
-       {
-               text_changes = TRUE;
-               temp2 = tp = point;
-               if ((ee_chinese) && (position >= 2) && (*(point - 2) > 127))
-               {
-                       del_width = 2;
-               }
-               tp -= del_width;
-               point -= del_width;
-               position -= del_width;
-               temp_pos = position;
-               curr_line->line_length -= del_width;
-               if ((*tp < ' ') || (*tp >= 127))        /* check for TAB */
-                       scanline(tp);
-               else
-                       scr_horz -= del_width;
-               scr_pos = scr_horz;
-               if (in == 8)
-               {
-                       if (del_width == 1)
-                               *d_char = *point; /* save deleted character  */
-                       else
-                       {
-                               d_char[0] = *point;
-                               d_char[1] = *(point + 1);
-                       }
-                       d_char[del_width] = 0;
-               }
-               while (temp_pos <= curr_line->line_length)
-               {
-                       temp_pos++;
-                       *tp = *temp2;
-                       tp++;
-                       temp2++;
-               }
-               if (scr_horz < horiz_offset)
-               {
-                       horiz_offset -= 8;
-                       midscreen(scr_vert, point);
-               }
-       }
-       else if (curr_line->prev_line != NULL)
-       {
-               text_changes = TRUE;
-               left(disp);                     /* go to previous line  */
-               temp_buff = curr_line->next_line;
-               point = resiz_line(temp_buff->line_length, curr_line, position);
-               if (temp_buff->next_line != NULL)
-                       temp_buff->next_line->prev_line = curr_line;
-               curr_line->next_line = temp_buff->next_line;
-               renumber_lines(curr_line->next_line, curr_line->line_number + 1);
-               temp2 = temp_buff->line;
-               if (in == 8)
-               {
-                       d_char[0] = '\n';
-                       d_char[1] = 0;
-               }
-               tp = point;
-               temp_pos = 1;
-               while (temp_pos < temp_buff->line_length)
-               {
-                       curr_line->line_length++;
-                       temp_pos++;
-                       *tp = *temp2;
-                       tp++;
-                       temp2++;
-               }
-               *tp = 0;
-               free(temp_buff->line);
-               free(temp_buff);
-               temp_buff = curr_line;
-               temp_vert = scr_vert;
-               scr_pos = scr_horz;
-               if (scr_vert < last_line)
-               {
-                       wmove(text_win, scr_vert + 1, 0);
-                       wdeleteln(text_win);
-               }
-               while ((temp_buff != NULL) && (temp_vert < last_line))
-               {
-                       temp_buff = temp_buff->next_line;
-                       temp_vert++;
-               }
-               if ((temp_vert == last_line) && (temp_buff != NULL))
-               {
-                       tp = temp_buff->line;
-                       wmove(text_win, last_line,0);
-                       wclrtobot(text_win);
-                       draw_line(last_line, 0, tp, 1, temp_buff->line_length);
-                       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-               }
-       }
-       draw_line(scr_vert, scr_horz, point, position, curr_line->line_length);
-       formatted = FALSE;
-}
-
-void 
-scanline(unsigned char *pos)   /* find the proper horizontal position for the pointer  */
-{
-       int temp;
-       unsigned char *ptr;
-
-       ptr = curr_line->line;
-       temp = 0;
-       while (ptr < pos)
-       {
-               if (*ptr <= 8)
-                       temp += 2;
-               else if (*ptr == 9)
-                       temp += tabshift(temp);
-               else if ((*ptr >= 10) && (*ptr <= 31))
-                       temp += 2;
-               else if ((*ptr >= 32) && (*ptr < 127))
-                       temp++;
-               else if (*ptr == 127)
-                       temp += 2;
-               else if (!eightbit)
-                       temp += 5;
-               else
-                       temp++;
-               ptr++;
-       }
-       scr_horz = temp;
-       if ((scr_horz - horiz_offset) > last_col)
-       {
-               horiz_offset = (scr_horz - (scr_horz % 8)) - (COLS - 8);
-               midscreen(scr_vert, point);
-       }
-       else if (scr_horz < horiz_offset)
-       {
-               horiz_offset = max(0, (scr_horz - (scr_horz % 8)));
-               midscreen(scr_vert, point);
-       }
-}
-
-int 
-tabshift(int temp_int)         /* give the number of spaces to shift   */
-{
-       int leftover;
-
-       leftover = ((temp_int + 1) % 8);
-       if (leftover == 0)
-               return (1);
-       else
-               return (9 - leftover);
-}
-
-int 
-out_char(WINDOW *window, int character, int column)
-/* output non-printing character */
-{
-       int i1, i2;
-       unsigned char *string;
-       char string2[8];
-
-       if (character == TAB)
-       {
-               i1 = tabshift(column);
-               for (i2 = 0; 
-                 (i2 < i1) && (((column+i2+1)-horiz_offset) < last_col); i2++)
-               {
-                       waddch(window, ' ');
-               }
-               return(i1);
-       }
-       else if ((character >= '\0') && (character < ' '))
-       {
-               string = table[(int) character];
-       }
-       else if ((character < 0) || (character >= 127))
-       {
-               if (character == 127)
-                       string = "^?";
-               else if (!eightbit)
-               {
-                       sprintf(string2, "<%d>", (character < 0) ? (character + 256) : character);
-                       string = string2;
-               }
-               else
-               {
-                       waddch(window, (unsigned char)character );
-                       return(1);
-               }
-       }
-       else
-       {
-               waddch(window, (unsigned char)character);
-               return(1);
-       }
-       for (i2 = 0; (string[i2] != 0) && (((column+i2+1)-horiz_offset) < last_col); i2++)
-               waddch(window, string[i2]);
-       return(strlen(string));
-}
-
-/* column: the column must be known to provide spacing for tabs        */
-int
-len_char(int character, int column)    /* return the length of the character   */
-{
-       int length;
-
-       if (character == '\t')
-               length = tabshift(column);
-       else if ((character >= 0) && (character < 32))
-               length = 2;
-       else if ((character >= 32) && (character <= 126))
-               length = 1;
-       else if (character == 127)
-               length = 2;
-       else if (((character > 126) || (character < 0)) && (!eightbit))
-               length = 5;
-       else
-               length = 1;
-
-       return(length);
-}
-
-/*
-vertical: current vertical position on screen
-horiz: current horizontal position on screen
-ptr:   pointer to line
-t_pos: current position (offset in bytes) from bol
-length:        length (in bytes) of line
-*/
-void
-draw_line(int vertical, int horiz, unsigned char *ptr, int t_pos, int length)
-/* redraw line from current position */
-{
-       int d;          /* partial length of special or tab char to display  */
-       unsigned char *temp;    /* temporary pointer to position in line             */
-       int abs_column; /* offset in screen units from begin of line         */
-       int column;     /* horizontal position on screen                     */
-       int row;        /* vertical position on screen                       */
-       int posit;      /* temporary position indicator within line          */
-
-       abs_column = horiz;
-       column = horiz - horiz_offset;
-       row = vertical;
-       temp = ptr;
-       d = 0;
-       posit = t_pos;
-       if (column < 0)
-       {
-               wmove(text_win, row, 0);
-               wclrtoeol(text_win);
-       }
-       while (column < 0)
-       {
-               d = len_char(*temp, abs_column);
-               abs_column += d;
-               column += d;
-               posit++;
-               temp++;
-       }
-       wmove(text_win, row, column);
-       wclrtoeol(text_win);
-       while ((posit < length) && (column <= last_col))
-       {
-               if ((*temp < 32) || (*temp >= 127))
-               {
-                       column += len_char(*temp, abs_column);
-                       abs_column += out_char(text_win, *temp, abs_column);
-               }
-               else
-               {
-                       abs_column++;
-                       column++;
-                       waddch(text_win, *temp);
-               }
-               posit++;
-               temp++;
-       }
-       if (column < last_col)
-               wclrtoeol(text_win);
-       wmove(text_win, vertical, (horiz - horiz_offset));
-}
-
-void 
-insert_line(int disp)                  /* insert new line              */
-{
-       int temp_pos;
-       int temp_pos2;
-       unsigned char *temp;
-       unsigned char *extra;
-       struct text *temp_nod;
-
-       text_changes = TRUE;
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-       wclrtoeol(text_win);
-       temp_nod= txtalloc();
-       temp_nod->line = extra= malloc(10);
-       temp_nod->line_length = 1;
-       temp_nod->max_length = 10;
-       temp_nod->next_line = curr_line->next_line;
-       renumber_lines(temp_nod, curr_line->line_number + 1);
-       if (temp_nod->next_line != NULL)
-               temp_nod->next_line->prev_line = temp_nod;
-       temp_nod->prev_line = curr_line;
-       curr_line->next_line = temp_nod;
-       temp_pos2 = position;
-       temp = point;
-       if (temp_pos2 < curr_line->line_length)
-       {
-               temp_pos = 1;
-               while (temp_pos2 < curr_line->line_length)
-               {
-                       if ((temp_nod->max_length - temp_nod->line_length)< 5)
-                               extra = resiz_line(10, temp_nod, temp_pos);
-                       temp_nod->line_length++;
-                       temp_pos++;
-                       temp_pos2++;
-                       *extra= *temp;
-                       extra++;
-                       temp++;
-               }
-               temp=point;
-               *temp = 0;
-               temp = resiz_line((1 - temp_nod->line_length), curr_line, position);
-               curr_line->line_length = 1 + temp - curr_line->line;
-       }
-       curr_line->line_length = position;
-       curr_line = temp_nod;
-       *extra = 0;
-       position = 1;
-       point= curr_line->line;
-       if (disp)
-       {
-               if (scr_vert < last_line)
-               {
-                       scr_vert++;
-                       wclrtoeol(text_win);
-                       wmove(text_win, scr_vert, 0);
-                       winsertln(text_win);
-               }
-               else
-               {
-                       wmove(text_win, 0,0);
-                       wdeleteln(text_win);
-                       wmove(text_win, last_line,0);
-                       wclrtobot(text_win);
-               }
-               scr_pos = scr_horz = 0;
-               if (horiz_offset)
-               {
-                       horiz_offset = 0;
-                       midscreen(scr_vert, point);
-               }
-               draw_line(scr_vert, scr_horz, point, position,
-                       curr_line->line_length);
-       }
-}
-
-struct text *txtalloc(void)            /* allocate space for line structure    */
-{
-       return((struct text *) malloc(sizeof( struct text)));
-}
-
-struct files *name_alloc(void) /* allocate space for file name list node */
-{
-       return((struct files *) malloc(sizeof( struct files)));
-}
-
-unsigned char *next_word(unsigned char *string)
-/* move to next word in string */
-{
-       while ((*string != 0) && ((*string != 32) && (*string != 9)))
-               string++;
-       while ((*string != 0) && ((*string == 32) || (*string == 9)))
-               string++;
-       return(string);
-}
-
-void 
-prev_word(void)        /* move to start of previous word in text       */
-{
-       if (position != 1)
-       {
-               if ((position != 1) && ((point[-1] == ' ') || (point[-1] == '\t')))
-               {       /* if at the start of a word    */
-                       while ((position != 1) && ((*point != ' ') && (*point != '\t')))
-                               left(TRUE);
-               }
-               while ((position != 1) && ((*point == ' ') || (*point == '\t')))
-                       left(TRUE);
-               while ((position != 1) && ((*point != ' ') && (*point != '\t')))
-                       left(TRUE);
-               if ((position != 1) && ((*point == ' ') || (*point == '\t')))
-                       right(TRUE);
-       }
-       else
-               left(TRUE);
-}
-
-void 
-control(void)                  /* use control for commands             */
-{
-       char *string;
-
-       if (in == 1)            /* control a    */
-       {
-               string = get_string(ascii_code_str, TRUE);
-               if (*string != 0)
-               {
-                       in = atoi(string);
-                       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-                       insert(in);
-               }
-               free(string);
-       }
-       else if (in == 2)       /* control b    */
-               bottom();
-       else if (in == 3)       /* control c    */
-       {
-               command_prompt();
-       }
-       else if (in == 4)       /* control d    */
-               down();
-       else if (in == 5)       /* control e    */
-               search_prompt();
-       else if (in == 6)       /* control f    */
-               undel_char();
-       else if (in == 7)       /* control g    */
-               bol();
-       else if (in == 8)       /* control h    */
-               delete(TRUE);
-       else if (in == 9)       /* control i    */
-               ;
-       else if (in == 10)      /* control j    */
-               insert_line(TRUE);
-       else if (in == 11)      /* control k    */
-               del_char();
-       else if (in == 12)      /* control l    */
-               left(TRUE);
-       else if (in == 13)      /* control m    */
-               insert_line(TRUE);
-       else if (in == 14)      /* control n    */
-               move_rel("d", max(5, (last_line - 5)));
-       else if (in == 15)      /* control o    */
-               eol();
-       else if (in == 16)      /* control p    */
-               move_rel("u", max(5, (last_line - 5)));
-       else if (in == 17)      /* control q    */
-               ;
-       else if (in == 18)      /* control r    */
-               right(TRUE);
-       else if (in == 19)      /* control s    */
-               ;
-       else if (in == 20)      /* control t    */
-               top();
-       else if (in == 21)      /* control u    */
-               up();
-       else if (in == 22)      /* control v    */
-               undel_word();
-       else if (in == 23)      /* control w    */
-               del_word();
-       else if (in == 24)      /* control x    */
-               search(TRUE);
-       else if (in == 25)      /* control y    */
-               del_line();
-       else if (in == 26)      /* control z    */
-               undel_line();
-       else if (in == 27)      /* control [ (escape)   */
-       {
-               menu_op(main_menu);
-       }       
-}
-
-/*
- |     Emacs control-key bindings
- */
-
-void 
-emacs_control(void)
-{
-       char *string;
-
-       if (in == 1)            /* control a    */
-               bol();
-       else if (in == 2)       /* control b    */
-               left(TRUE);
-       else if (in == 3)       /* control c    */
-       {
-               command_prompt();
-       }
-       else if (in == 4)       /* control d    */
-               del_char();
-       else if (in == 5)       /* control e    */
-               eol();
-       else if (in == 6)       /* control f    */
-               right(TRUE);
-       else if (in == 7)       /* control g    */
-               move_rel("u", max(5, (last_line - 5)));
-       else if (in == 8)       /* control h    */
-               delete(TRUE);
-       else if (in == 9)       /* control i    */
-               ;
-       else if (in == 10)      /* control j    */
-               undel_char();
-       else if (in == 11)      /* control k    */
-               del_line();
-       else if (in == 12)      /* control l    */
-               undel_line();
-       else if (in == 13)      /* control m    */
-               insert_line(TRUE);
-       else if (in == 14)      /* control n    */
-               down();
-       else if (in == 15)      /* control o    */
-       {
-               string = get_string(ascii_code_str, TRUE);
-               if (*string != 0)
-               {
-                       in = atoi(string);
-                       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-                       insert(in);
-               }
-               free(string);
-       }
-       else if (in == 16)      /* control p    */
-               up();
-       else if (in == 17)      /* control q    */
-               ;
-       else if (in == 18)      /* control r    */
-               undel_word();
-       else if (in == 19)      /* control s    */
-               ;
-       else if (in == 20)      /* control t    */
-               top();
-       else if (in == 21)      /* control u    */
-               bottom();
-       else if (in == 22)      /* control v    */
-               move_rel("d", max(5, (last_line - 5)));
-       else if (in == 23)      /* control w    */
-               del_word();
-       else if (in == 24)      /* control x    */
-               search(TRUE);
-       else if (in == 25)      /* control y    */
-               search_prompt();
-       else if (in == 26)      /* control z    */
-               adv_word();
-       else if (in == 27)      /* control [ (escape)   */
-       {
-               menu_op(main_menu);
-       }       
-}
-
-void 
-bottom(void)                   /* go to bottom of file                 */
-{
-       while (curr_line->next_line != NULL)
-               curr_line = curr_line->next_line;
-       point = curr_line->line;
-       if (horiz_offset)
-               horiz_offset = 0;
-       position = 1;
-       midscreen(last_line, point);
-       scr_pos = scr_horz;
-}
-
-void 
-top(void)                              /* go to top of file                    */
-{
-       while (curr_line->prev_line != NULL)
-               curr_line = curr_line->prev_line;
-       point = curr_line->line;
-       if (horiz_offset)
-               horiz_offset = 0;
-       position = 1;
-       midscreen(0, point);
-       scr_pos = scr_horz;
-}
-
-void 
-nextline(void)                 /* move pointers to start of next line  */
-{
-       curr_line = curr_line->next_line;
-       point = curr_line->line;
-       position = 1;
-       if (scr_vert == last_line)
-       {
-               wmove(text_win, 0,0);
-               wdeleteln(text_win);
-               wmove(text_win, last_line,0);
-               wclrtobot(text_win);
-               draw_line(last_line,0,point,1,curr_line->line_length);
-       }
-       else
-               scr_vert++;
-}
-
-void 
-prevline(void)                 /* move pointers to start of previous line*/
-{
-       curr_line = curr_line->prev_line;
-       point = curr_line->line;
-       position = 1;
-       if (scr_vert == 0)
-       {
-               winsertln(text_win);
-               draw_line(0,0,point,1,curr_line->line_length);
-       }
-       else
-               scr_vert--;
-       while (position < curr_line->line_length)
-       {
-               position++;
-               point++;
-       }
-}
-
-void 
-left(int disp)                         /* move left one character      */
-{
-       if (point != curr_line->line)   /* if not at begin of line      */
-       {
-               if ((ee_chinese) && (position >= 2) && (*(point - 2) > 127))
-               {
-                       point--;
-                       position--;
-               }
-               point--;
-               position--;
-               scanline(point);
-               wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-               scr_pos = scr_horz;
-       }
-       else if (curr_line->prev_line != NULL)
-       {
-               if (!disp)
-               {
-                       curr_line = curr_line->prev_line;
-                       point = curr_line->line + curr_line->line_length;
-                       position = curr_line->line_length;
-                       return;
-               }
-               position = 1;
-               prevline();
-               scanline(point);
-               scr_pos = scr_horz;
-               wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-       }
-}
-
-void 
-right(int disp)                                /* move right one character     */
-{
-       if (position < curr_line->line_length)
-       {
-               if ((ee_chinese) && (*point > 127) && 
-                   ((curr_line->line_length - position) >= 2))
-               {
-                       point++;
-                       position++;
-               }
-               point++;
-               position++;
-               scanline(point);
-               wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-               scr_pos = scr_horz;
-       }
-       else if (curr_line->next_line != NULL)
-       {
-               if (!disp)
-               {
-                       curr_line = curr_line->next_line;
-                       point = curr_line->line;
-                       position = 1;
-                       return;
-               }
-               nextline();
-               scr_pos = scr_horz = 0;
-               if (horiz_offset)
-               {
-                       horiz_offset = 0;
-                       midscreen(scr_vert, point);
-               }
-               wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-               position = 1;   
-       }
-}
-
-void 
-find_pos(void)         /* move to the same column as on other line     */
-{
-       scr_horz = 0;
-       position = 1;
-       while ((scr_horz < scr_pos) && (position < curr_line->line_length))
-       {
-               if (*point == 9)
-                       scr_horz += tabshift(scr_horz);
-               else if (*point < ' ')
-                       scr_horz += 2;
-               else if ((ee_chinese) && (*point > 127) && 
-                   ((curr_line->line_length - position) >= 2))
-               {
-                       scr_horz += 2;
-                       point++;
-                       position++;
-               }
-               else
-                       scr_horz++;
-               position++;
-               point++;
-       }
-       if ((scr_horz - horiz_offset) > last_col)
-       {
-               horiz_offset = (scr_horz - (scr_horz % 8)) - (COLS - 8);
-               midscreen(scr_vert, point);
-       }
-       else if (scr_horz < horiz_offset)
-       {
-               horiz_offset = max(0, (scr_horz - (scr_horz % 8)));
-               midscreen(scr_vert, point);
-       }
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-}
-
-void 
-up(void)                                       /* move up one line             */
-{
-       if (curr_line->prev_line != NULL)
-       {
-               prevline();
-               point = curr_line->line;
-               find_pos();
-       }
-}
-
-void 
-down(void)                                     /* move down one line           */
-{
-       if (curr_line->next_line != NULL)
-       {
-               nextline();
-               find_pos();
-       }
-}
-
-void 
-function_key(void)                             /* process function key         */
-{
-       if (in == KEY_LEFT)
-               left(TRUE);
-       else if (in == KEY_RIGHT)
-               right(TRUE);
-       else if (in == KEY_HOME)
-               bol();
-       else if (in == KEY_END)
-               eol();
-       else if ( in == KEY_UP)
-               up();
-       else if (in == KEY_DOWN)
-               down();
-       else if (in == KEY_NPAGE)
-               move_rel("d", max( 5, (last_line - 5)));
-       else if (in == KEY_PPAGE)
-               move_rel("u", max(5, (last_line - 5)));
-       else if (in == KEY_DL)
-               del_line();
-       else if (in == KEY_DC)
-               del_char();
-       else if (in == KEY_BACKSPACE)
-               delete(TRUE);
-       else if (in == KEY_IL)
-       {               /* insert a line before current line    */
-               insert_line(TRUE);
-               left(TRUE);
-       }
-       else if (in == KEY_F(1))
-               gold = !gold;
-       else if (in == KEY_F(2))
-       {
-               if (gold)
-               {
-                       gold = FALSE;
-                       undel_line();
-               }
-               else
-                       undel_char();
-       }
-       else if (in == KEY_F(3))
-       {
-               if (gold)
-               {
-                       gold = FALSE;
-                       undel_word();
-               }
-               else
-                       del_word();
-       }
-       else if (in == KEY_F(4))
-       {
-               if (gold)
-               {
-                       gold = FALSE;
-                       paint_info_win();
-                       midscreen(scr_vert, point);
-               }
-               else
-                       adv_word();
-       }
-       else if (in == KEY_F(5))
-       {
-               if (gold)
-               {
-                       gold = FALSE;
-                       search_prompt();
-               }
-               else
-                       search(TRUE);
-       }
-       else if (in == KEY_F(6))
-       {
-               if (gold)
-               {
-                       gold = FALSE;
-                       bottom();
-               }
-               else
-                       top();
-       }
-       else if (in == KEY_F(7))
-       {
-               if (gold)
-               {
-                       gold = FALSE;
-                       eol();
-               }
-               else
-                       bol();
-       }
-       else if (in == KEY_F(8))
-       {
-               if (gold)
-               {
-                       gold = FALSE;
-                       command_prompt();
-               } 
-               else
-                       adv_line();
-       }
-}
-
-void 
-print_buffer(void)
-{
-       char buffer[256];
-
-       sprintf(buffer, ">!%s", print_command);
-       wmove(com_win, 0, 0);
-       wclrtoeol(com_win);
-       wprintw(com_win, printer_msg_str, print_command);
-       wrefresh(com_win);
-       command(buffer);
-}
-
-void 
-command_prompt(void)
-{
-       char *cmd_str;
-       int result;
-
-       info_type = COMMANDS;
-       paint_info_win();
-       cmd_str = get_string(command_str, TRUE);
-       if ((result = unique_test(cmd_str, commands)) != 1)
-       {
-               werase(com_win);
-               wmove(com_win, 0, 0);
-               if (result == 0)
-                       wprintw(com_win, unkn_cmd_str, cmd_str);
-               else
-                       wprintw(com_win, non_unique_cmd_msg);
-
-               wrefresh(com_win);
-
-               info_type = CONTROL_KEYS;
-               paint_info_win();
-
-               if (cmd_str != NULL)
-                       free(cmd_str);
-               return;
-       }
-       command(cmd_str);
-       wrefresh(com_win);
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-       info_type = CONTROL_KEYS;
-       paint_info_win();
-       if (cmd_str != NULL)
-               free(cmd_str);
-}
-
-void 
-command(char *cmd_str1)                /* process commands from keyboard       */
-{
-       char *cmd_str2 = NULL;
-       char *cmd_str = cmd_str1;
-
-       clear_com_win = TRUE;
-       if (compare(cmd_str, HELP, FALSE))
-               help();
-       else if (compare(cmd_str, WRITE, FALSE))
-       {
-               if (restrict_mode())
-               {
-                       return;
-               }
-               cmd_str = next_word(cmd_str);
-               if (*cmd_str == 0)
-               {
-                       cmd_str = cmd_str2 = get_string(file_write_prompt_str, TRUE);
-               }
-               tmp_file = resolve_name(cmd_str);
-               write_file(tmp_file, 1);
-               if (tmp_file != cmd_str)
-                       free(tmp_file);
-       }
-       else if (compare(cmd_str, READ, FALSE))
-       {
-               if (restrict_mode())
-               {
-                       return;
-               }
-               cmd_str = next_word(cmd_str);
-               if (*cmd_str == 0)
-               {
-                       cmd_str = cmd_str2 = get_string(file_read_prompt_str, TRUE);
-               }
-               tmp_file = cmd_str;
-               recv_file = TRUE;
-               tmp_file = resolve_name(cmd_str);
-               check_fp();
-               if (tmp_file != cmd_str)
-                       free(tmp_file);
-       }
-       else if (compare(cmd_str, LINE, FALSE))
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, line_num_str, curr_line->line_number);
-               wprintw(com_win, line_len_str, curr_line->line_length);
-       }
-       else if (compare(cmd_str, FILE_str, FALSE))
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               if (in_file_name == NULL)
-                       wprintw(com_win, no_file_string);
-               else
-                       wprintw(com_win, current_file_str, in_file_name);
-       }
-       else if ((*cmd_str >= '0') && (*cmd_str <= '9'))
-               goto_line(cmd_str);
-       else if (compare(cmd_str, CHARACTER, FALSE))
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, char_str, *point);
-       }
-       else if (compare(cmd_str, REDRAW, FALSE))
-               redraw();
-       else if (compare(cmd_str, RESEQUENCE, FALSE))
-       {
-               tmp_line = first_line->next_line;
-               while (tmp_line != NULL)
-               {
-               tmp_line->line_number = tmp_line->prev_line->line_number + 1;
-                       tmp_line = tmp_line->next_line;
-               }
-       }
-       else if (compare(cmd_str, AUTHOR, FALSE))
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, "written by Hugh Mahon");
-       }
-       else if (compare(cmd_str, VERSION, FALSE))
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, "%s", version);
-       }
-       else if (compare(cmd_str, CASE, FALSE))
-               case_sen = TRUE;
-       else if (compare(cmd_str, NOCASE, FALSE))
-               case_sen = FALSE;
-       else if (compare(cmd_str, EXPAND, FALSE))
-               expand_tabs = TRUE;
-       else if (compare(cmd_str, NOEXPAND, FALSE))
-               expand_tabs = FALSE;
-       else if (compare(cmd_str, Exit_string, FALSE))
-               finish();
-       else if (compare(cmd_str, chinese_cmd, FALSE))
-       {
-               ee_chinese = TRUE;
-#ifdef NCURSE
-               nc_setattrib(A_NC_BIG5);
-#endif /* NCURSE */
-       }
-       else if (compare(cmd_str, nochinese_cmd, FALSE))
-       {
-               ee_chinese = FALSE;
-#ifdef NCURSE
-               nc_clearattrib(A_NC_BIG5);
-#endif /* NCURSE */
-       }
-       else if (compare(cmd_str, QUIT_string, FALSE))
-               quit(0);
-       else if (*cmd_str == '!')
-       {
-               cmd_str++;
-               if ((*cmd_str == ' ') || (*cmd_str == 9))
-                       cmd_str = next_word(cmd_str);
-               sh_command(cmd_str);
-       }
-       else if ((*cmd_str == '<') && (!in_pipe))
-       {
-               in_pipe = TRUE;
-               shell_fork = FALSE;
-               cmd_str++;
-               if ((*cmd_str == ' ') || (*cmd_str == '\t'))
-                       cmd_str = next_word(cmd_str);
-               command(cmd_str);
-               in_pipe = FALSE;
-               shell_fork = TRUE;
-       }
-       else if ((*cmd_str == '>') && (!out_pipe))
-       {
-               out_pipe = TRUE;
-               cmd_str++;
-               if ((*cmd_str == ' ') || (*cmd_str == '\t'))
-                       cmd_str = next_word(cmd_str);
-               command(cmd_str);
-               out_pipe = FALSE;
-       }
-       else
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, unkn_cmd_str, cmd_str);
-       }
-       if (cmd_str2 != NULL)
-               free(cmd_str2);
-}
-
-int 
-scan(char *line, int offset, int column)
-/* determine horizontal position for get_string        */
-{
-       char *stemp;
-       int i;
-       int j;
-
-       stemp = line;
-       i = 0;
-       j = column;
-       while (i < offset)
-       {
-               i++;
-               j += len_char(*stemp, j);
-               stemp++;
-       }
-       return(j);
-}
-
-/*
-prompt: string containing user prompt message
-advance: if true, skip leading spaces and tabs
-*/
-char *
-get_string(char *prompt, int advance)
-/* read string from input on command line */
-{
-       char *string;
-       char *tmp_string;
-       char *nam_str;
-       char *g_point;
-       int tmp_int;
-       int g_horz, g_position, g_pos;
-       int esc_flag;
-
-       g_point = tmp_string = malloc(512);
-       wmove(com_win,0,0);
-       wclrtoeol(com_win);
-       waddstr(com_win, prompt);
-       wrefresh(com_win);
-       nam_str = tmp_string;
-       clear_com_win = TRUE;
-       g_horz = g_position = scan(prompt, strlen(prompt), 0);
-       g_pos = 0;
-       do
-       {
-               esc_flag = FALSE;
-               in = wgetch(com_win);
-               if (in == -1)
-                       continue;
-               if (((in == 8) || (in == 127) || (in == KEY_BACKSPACE)) && (g_pos > 0))
-               {
-                       tmp_int = g_horz;
-                       g_pos--;
-                       g_horz = scan(g_point, g_pos, g_position);
-                       tmp_int = tmp_int - g_horz;
-                       for (; 0 < tmp_int; tmp_int--)
-                       {
-                               if ((g_horz+tmp_int) < (last_col - 1))
-                               {
-                                       waddch(com_win, '\010');
-                                       waddch(com_win, ' ');
-                                       waddch(com_win, '\010');
-                               }
-                       }
-                       nam_str--;
-               }
-               else if ((in != 8) && (in != 127) && (in != '\n') && (in != '\r') && (in < 256))
-               {
-                       if (in == '\026')       /* control-v, accept next character verbatim    */
-                       {                       /* allows entry of ^m, ^j, and ^h       */
-                               esc_flag = TRUE;
-                               in = wgetch(com_win);
-                               if (in == -1)
-                                       continue;
-                       }
-                       *nam_str = in;
-                       g_pos++;
-                       if (((in < ' ') || (in > 126)) && (g_horz < (last_col - 1)))
-                               g_horz += out_char(com_win, in, g_horz);
-                       else
-                       {
-                               g_horz++;
-                               if (g_horz < (last_col - 1))
-                                       waddch(com_win, in);
-                       }
-                       nam_str++;
-               }
-               wrefresh(com_win);
-               if (esc_flag)
-                       in = 0;
-       } while ((in != '\n') && (in != '\r'));
-       *nam_str = 0;
-       nam_str = tmp_string;
-       if (((*nam_str == ' ') || (*nam_str == 9)) && (advance))
-               nam_str = next_word(nam_str);
-       string = malloc(strlen(nam_str) + 1);
-       strcpy(string, nam_str);
-       free(tmp_string);
-       wrefresh(com_win);
-       return(string);
-}
-
-int 
-compare(char *string1, char *string2, int sensitive) /* compare two strings */
-{
-       char *strng1;
-       char *strng2;
-       int tmp;
-       int equal;
-
-       strng1 = string1;
-       strng2 = string2;
-       tmp = 0;
-       if ((strng1 == NULL) || (strng2 == NULL) || (*strng1 == 0) || (*strng2 == 0))
-               return(FALSE);
-       equal = TRUE;
-       while (equal)
-       {
-               if (sensitive)
-               {
-                       if (*strng1 != *strng2)
-                               equal = FALSE;
-               }
-               else
-               {
-                       if (toupper(*strng1) != toupper(*strng2))
-                               equal = FALSE;
-               }
-               strng1++;
-               strng2++;
-               if ((*strng1 == 0) || (*strng2 == 0) || (*strng1 == ' ') || (*strng2 == ' '))
-                       break;
-               tmp++;
-       }
-       return(equal);
-}
-
-void 
-goto_line(char *cmd_str)
-{
-       int number;
-       int i;
-       char *ptr;
-       char *direction = NULL;
-       struct text *t_line;
-
-       ptr = cmd_str;
-       i= 0;
-       while ((*ptr >='0') && (*ptr <= '9'))
-       {
-               i= i * 10 + (*ptr - '0');
-               ptr++;
-       }
-       number = i;
-       i = 0;
-       t_line = curr_line;
-       while ((t_line->line_number > number) && (t_line->prev_line != NULL))
-       {
-               i++;
-               t_line = t_line->prev_line;
-               direction = "u";
-       }
-       while ((t_line->line_number < number) && (t_line->next_line != NULL))
-       {
-               i++;
-               direction = "d";
-               t_line = t_line->next_line;
-       }
-       if ((i < 30) && (i > 0))
-       {
-               move_rel(direction, i);
-       }
-       else
-       {
-               curr_line = t_line;
-               point = curr_line->line;
-               position = 1;
-               midscreen((last_line / 2), point);
-               scr_pos = scr_horz;
-       }
-       wmove(com_win, 0, 0);
-       wclrtoeol(com_win);
-       wprintw(com_win, line_num_str, curr_line->line_number);
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-}
-
-void 
-midscreen(int line, unsigned char *pnt)
-/* put current line in middle of screen */
-{
-       struct text *mid_line;
-       int i;
-
-       line = min(line, last_line);
-       mid_line = curr_line;
-       for (i = 0; ((i < line) && (curr_line->prev_line != NULL)); i++)
-               curr_line = curr_line->prev_line;
-       scr_vert = scr_horz = 0;
-       wmove(text_win, 0, 0);
-       draw_screen();
-       scr_vert = i;
-       curr_line = mid_line;
-       scanline(pnt);
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-}
-
-void 
-get_options(int numargs, char **arguments)
-/* get arguments from command line */
-{
-       char *buff;
-       int count;
-       struct files *temp_names = NULL;
-       char *name;
-       char *ptr;
-
-       /*
-        |      see if editor was invoked as 'ree' (restricted mode)
-        */
-
-       if (!(name = strrchr(arguments[0], '/')))
-               name = arguments[0];
-       else
-               name++;
-       if (!strcmp(name, "ree"))
-               restricted = TRUE;
-
-       top_of_stack = NULL;
-       input_file = FALSE;
-       recv_file = FALSE;
-       count = 1;
-       while (count < numargs)
-       {
-               buff = arguments[count];
-               if (!strcmp("-i", buff))
-               {
-                       info_window = FALSE;
-               }
-               else if (!strcmp("-e", buff))
-               {
-                       expand_tabs = FALSE;
-               }
-               else if (!strcmp("-h", buff))
-               {
-                       nohighlight = TRUE;
-               }
-               else if (!strcmp("-?", buff))
-               {
-                       fprintf(stderr, usage0, arguments[0]);
-                       fprintf(stderr, "%s", usage1);
-                       fprintf(stderr, "%s", usage2);
-                       fprintf(stderr, "%s", usage3);
-                       fprintf(stderr, "%s", usage4);
-                       exit(1);
-               }
-               else if (*buff == '+')
-               {
-                       buff++;
-                       start_at_line = buff;
-               }
-
-               else
-               {
-                       if (top_of_stack == NULL)
-                       {
-                               temp_names = top_of_stack = name_alloc();
-                       }
-                       else
-                       {
-                               temp_names->next_name = name_alloc();
-                               temp_names = temp_names->next_name;
-                       }
-                       ptr = temp_names->name = malloc(strlen(buff) + 1);
-                       while (*buff != 0)
-                       {
-                               *ptr = *buff;
-                               buff++;
-                               ptr++;
-                       }
-                       *ptr = 0;
-                       temp_names->next_name = NULL;
-                       input_file = TRUE;
-                       recv_file = TRUE;
-               }
-               count++;
-       }
-}
-
-void 
-check_fp(void)         /* open or close files according to flags */
-{
-       int line_num;
-       int temp;
-       struct stat buf;
-
-       clear_com_win = TRUE;
-       tmp_vert = scr_vert;
-       tmp_horz = scr_horz;
-       tmp_line = curr_line;
-       if (input_file)
-       {
-               in_file_name = tmp_file = top_of_stack->name;
-               top_of_stack = top_of_stack->next_name;
-       }
-       temp = stat(tmp_file, &buf);
-       buf.st_mode &= ~07777;
-       if ((temp != -1) && (buf.st_mode != 0100000) && (buf.st_mode != 0))
-       {
-               wprintw(com_win, file_is_dir_msg, tmp_file);
-               wrefresh(com_win);
-               if (input_file)
-               {
-                       quit(0);
-                       return;
-               }
-               else
-                       return;
-       }
-       if ((get_fd = open(tmp_file, O_RDONLY)) == -1)
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               if (input_file)
-                       wprintw(com_win, new_file_msg, tmp_file);
-               else
-                       wprintw(com_win, cant_open_msg, tmp_file);
-               wrefresh(com_win);
-               wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-               wrefresh(text_win);
-               recv_file = FALSE;
-               input_file = FALSE;
-               return;
-       }
-       else
-               get_file(tmp_file);
-
-       recv_file = FALSE;
-       line_num = curr_line->line_number;
-       scr_vert = tmp_vert;
-       scr_horz = tmp_horz;
-       if (input_file)
-               curr_line= first_line;
-       else
-               curr_line = tmp_line;
-       point = curr_line->line;
-       draw_screen();
-       if (input_file)
-       {
-               input_file = FALSE;
-               if (start_at_line != NULL)
-               {
-                       line_num = atoi(start_at_line) - 1;
-                       move_rel("d", line_num);
-                       line_num = 0;
-                       start_at_line = NULL;
-               }
-       }
-       else
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               text_changes = TRUE;
-               if ((tmp_file != NULL) && (*tmp_file != 0))
-                       wprintw(com_win, file_read_fin_msg, tmp_file);
-       }
-       wrefresh(com_win);
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-       wrefresh(text_win);
-}
-
-void 
-get_file(char *file_name) /* read specified file into current buffer */
-{
-       int can_read;           /* file has at least one character      */
-       int length;             /* length of line read by read          */
-       int append;             /* should text be appended to current line */
-       struct text *temp_line;
-       char ro_flag = FALSE;
-
-       if (recv_file)          /* if reading a file                    */
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, reading_file_msg, file_name);
-               if (access(file_name, 2))       /* check permission to write */
-               {
-                       if ((errno == ENOTDIR) || (errno == EACCES) || (errno == EROFS) || (errno == ETXTBSY) || (errno == EFAULT))
-                       {
-                               wprintw(com_win, read_only_msg);
-                               ro_flag = TRUE;
-                       }
-               }
-               wrefresh(com_win);
-       }
-       if (curr_line->line_length > 1) /* if current line is not blank */
-       {
-               insert_line(FALSE);
-               left(FALSE);
-               append = FALSE;
-       }
-       else
-               append = TRUE;
-       can_read = FALSE;               /* test if file has any characters  */
-       while (((length = read(get_fd, in_string, 512)) != 0) && (length != -1))
-       {
-               can_read = TRUE;  /* if set file has at least 1 character   */
-               get_line(length, in_string, &append);
-       }
-       if ((can_read) && (curr_line->line_length == 1))
-       {
-               temp_line = curr_line->prev_line;
-               temp_line->next_line = curr_line->next_line;
-               if (temp_line->next_line != NULL)
-                       temp_line->next_line->prev_line = temp_line;
-               if (curr_line->line != NULL)
-                       free(curr_line->line);
-               free(curr_line);
-               curr_line = temp_line;
-       }
-       if (input_file) /* if this is the file to be edited display number of lines     */
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, file_read_lines_msg, in_file_name, curr_line->line_number);
-               if (ro_flag)
-                       wprintw(com_win, read_only_msg);
-               wrefresh(com_win);
-       }
-       else if (can_read)      /* not input_file and file is non-zero size */
-               text_changes = TRUE;
-
-       if (recv_file)          /* if reading a file                    */
-       {
-               in = EOF;
-       }
-}
-
-/*
-length: length of string read by read
-in_string: string read by read
-append: TRUE if must append more text to end of current line
-*/
-void
-get_line(int length, unsigned char *in_string, int *append)
-/* read string and split into lines */
-{
-       unsigned char *str1;
-       unsigned char *str2;
-       int num;                /* offset from start of string          */
-       int char_count;         /* length of new line (or added portion */
-       int temp_counter;       /* temporary counter value              */
-       struct text *tline;     /* temporary pointer to new line        */
-       int first_time;         /* if TRUE, the first time through the loop */
-
-       str2 = in_string;
-       num = 0;
-       first_time = TRUE;
-       while (num < length)
-       {
-               if (!first_time)
-               {
-                       if (num < length)
-                       {
-                               str2++;
-                               num++;
-                       }
-               }
-               else
-                       first_time = FALSE;
-               str1 = str2;
-               char_count = 1;
-               /* find end of line     */
-               while ((*str2 != '\n') && (num < length))
-               {
-                       str2++;
-                       num++;
-                       char_count++;
-               }
-               if (!(*append)) /* if not append to current line, insert new one */
-               {
-                       tline = txtalloc();     /* allocate data structure for next line */
-                       tline->next_line = curr_line->next_line;
-                       renumber_lines(tline, curr_line->line_number + 1);
-                       tline->prev_line = curr_line;
-                       curr_line->next_line = tline;
-                       if (tline->next_line != NULL)
-                               tline->next_line->prev_line = tline;
-                       curr_line = tline;
-                       curr_line->line = point = (unsigned char *) malloc(char_count);
-                       curr_line->line_length = char_count;
-                       curr_line->max_length = char_count;
-               }
-               else
-               {
-                       point = resiz_line(char_count, curr_line, curr_line->line_length); 
-                       curr_line->line_length += (char_count - 1);
-               }
-               for (temp_counter = 1; temp_counter < char_count; temp_counter++)
-               {
-                       *point = *str1;
-                       point++;
-                       str1++;
-               }
-               *point = 0;
-               *append = FALSE;
-               if ((num == length) && (*str2 != '\n'))
-                       *append = TRUE;
-       }
-}
-
-void 
-draw_screen(void)              /* redraw the screen from current postion       */
-{
-       struct text *temp_line;
-       unsigned char *line_out;
-       int temp_vert;
-
-       temp_line = curr_line;
-       temp_vert = scr_vert;
-       wclrtobot(text_win);
-       while ((temp_line != NULL) && (temp_vert <= last_line))
-       {
-               line_out = temp_line->line;
-               draw_line(temp_vert, 0, line_out, 1, temp_line->line_length);
-               temp_vert++;
-               temp_line = temp_line->next_line;
-       }
-       wmove(text_win, temp_vert, 0);
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-}
-
-void 
-finish(void)   /* prepare to exit edit session */
-{
-       char *file_name = in_file_name;
-
-       /*
-        |      changes made here should be reflected in the 'save' 
-        |      portion of file_op()
-        */
-
-       if ((file_name == NULL) || (*file_name == 0))
-               file_name = get_string(save_file_name_prompt, TRUE);
-
-       if ((file_name == NULL) || (*file_name == 0))
-       {
-               wmove(com_win, 0, 0);
-               wprintw(com_win, file_not_saved_msg);
-               wclrtoeol(com_win);
-               wrefresh(com_win);
-               clear_com_win = TRUE;
-               return;
-       }
-
-       tmp_file = resolve_name(file_name);
-       if (tmp_file != file_name)
-       {
-               free(file_name);
-               file_name = tmp_file;
-       }
-
-       if (write_file(file_name, 1))
-       {
-               text_changes = FALSE;
-               quit(0);
-       }
-}
-
-int 
-quit(int noverify)             /* exit editor                  */
-{
-       char *ans;
-
-       touchwin(text_win);
-       wrefresh(text_win);
-       if ((text_changes) && (!noverify))
-       {
-               ans = get_string(changes_made_prompt, TRUE);
-               if (toupper(*ans) == toupper(*yes_char))
-                       text_changes = FALSE;
-               else
-                       return(0);
-               free(ans);
-       }
-       if (top_of_stack == NULL)
-       {
-               if (info_window)
-                       wrefresh(info_win);
-               wrefresh(com_win);
-               resetty();
-               endwin();
-               putchar('\n');
-               exit(0);
-       }
-       else
-       {
-               delete_text();
-               recv_file = TRUE;
-               input_file = TRUE;
-               check_fp();
-               text_changes = FALSE;
-       }
-       return(0);
-}
-
-void 
-edit_abort(int arg)
-{
-       wrefresh(com_win);
-       resetty();
-       endwin();
-       putchar('\n');
-       exit(1);
-}
-
-void 
-delete_text(void)
-{
-       while (curr_line->next_line != NULL)
-               curr_line = curr_line->next_line;
-       while (curr_line != first_line)
-       {
-               free(curr_line->line);
-               curr_line = curr_line->prev_line;
-               free(curr_line->next_line);
-       }
-       curr_line->next_line = NULL;
-       *curr_line->line = 0;
-       curr_line->line_length = 1;
-       curr_line->line_number = 1;
-       point = curr_line->line;
-       scr_pos = scr_vert = scr_horz = 0;
-       position = 1;
-}
-
-int 
-write_file(char *file_name, int warn_if_exists)
-{
-       char cr;
-       char *tmp_point;
-       struct text *out_line;
-       int lines, charac;
-       int temp_pos;
-       int write_flag = TRUE;
-
-       charac = lines = 0;
-       if (warn_if_exists &&
-           ((in_file_name == NULL) || strcmp(in_file_name, file_name)))
-       {
-               if ((temp_fp = fopen(file_name, "r")))
-               {
-                       tmp_point = get_string(file_exists_prompt, TRUE);
-                       if (toupper(*tmp_point) == toupper(*yes_char))
-                               write_flag = TRUE;
-                       else 
-                               write_flag = FALSE;
-                       fclose(temp_fp);
-                       free(tmp_point);
-               }
-       }
-
-       clear_com_win = TRUE;
-
-       if (write_flag)
-       {
-               if ((temp_fp = fopen(file_name, "w")) == NULL)
-               {
-                       clear_com_win = TRUE;
-                       wmove(com_win,0,0);
-                       wclrtoeol(com_win);
-                       wprintw(com_win, create_file_fail_msg, file_name);
-                       wrefresh(com_win);
-                       return(FALSE);
-               }
-               else
-               {
-                       wmove(com_win,0,0);
-                       wclrtoeol(com_win);
-                       wprintw(com_win, writing_file_msg, file_name);
-                       wrefresh(com_win);
-                       cr = '\n';
-                       out_line = first_line;
-                       while (out_line != NULL)
-                       {
-                               temp_pos = 1;
-                               tmp_point= out_line->line;
-                               while (temp_pos < out_line->line_length)
-                               {
-                                       putc(*tmp_point, temp_fp);
-                                       tmp_point++;
-                                       temp_pos++;
-                               }
-                               charac += out_line->line_length;
-                               out_line = out_line->next_line;
-                               putc(cr, temp_fp);
-                               lines++;
-                       }
-                       fclose(temp_fp);
-                       wmove(com_win,0,0);
-                       wclrtoeol(com_win);
-                       wprintw(com_win, file_written_msg, file_name, lines, charac);
-                       wrefresh(com_win);
-                       return(TRUE);
-               }
-       }
-       else
-               return(FALSE);
-}
-
-int 
-search(int display_message) /* search for string in srch_str */
-{
-       int lines_moved;
-       int iter;
-       int found;
-
-       if ((srch_str == NULL) || (*srch_str == 0))
-               return(FALSE);
-       if (display_message)
-       {
-               wmove(com_win, 0, 0);
-               wclrtoeol(com_win);
-               wprintw(com_win, searching_msg);
-               wrefresh(com_win);
-               clear_com_win = TRUE;
-       }
-       lines_moved = 0;
-       found = FALSE;
-       srch_line = curr_line;
-       srch_1 = point;
-       if (position < curr_line->line_length)
-               srch_1++;
-       iter = position + 1;
-       while ((!found) && (srch_line != NULL))
-       {
-               while ((iter < srch_line->line_length) && (!found))
-               {
-                       srch_2 = srch_1;
-                       if (case_sen)   /* if case sensitive            */
-                       {
-                               srch_3 = srch_str;
-                       while ((*srch_2 == *srch_3) && (*srch_3 != 0))
-                               {
-                                       found = TRUE;
-                                       srch_2++;
-                                       srch_3++;
-                               }       /* end while    */
-                       }
-                       else            /* if not case sensitive        */
-                       {
-                               srch_3 = u_srch_str;
-                       while ((toupper(*srch_2) == *srch_3) && (*srch_3 != 0))
-                               {
-                                       found = TRUE;
-                                       srch_2++;
-                                       srch_3++;
-                               }
-                       }       /* end else     */
-                       if (!((*srch_3 == 0) && (found)))
-                       {
-                               found = FALSE;
-                               if (iter < srch_line->line_length)
-                                       srch_1++;
-                               iter++;
-                       }
-               }
-               if (!found)
-               {
-                       srch_line = srch_line->next_line;
-                       if (srch_line != NULL)
-                               srch_1 = srch_line->line;
-                       iter = 1;
-                       lines_moved++;
-               }
-       }
-       if (found)
-       {
-               if (display_message)
-               {
-                       wmove(com_win, 0, 0);
-                       wclrtoeol(com_win);
-                       wrefresh(com_win);
-               }
-               if (lines_moved == 0)
-               {
-                       while (position < iter)
-                               right(TRUE);
-               }
-               else
-               {
-                       if (lines_moved < 30)
-                       {
-                               move_rel("d", lines_moved);
-                               while (position < iter)
-                                       right(TRUE);
-                       }
-                       else 
-                       {
-                               curr_line = srch_line;
-                               point = srch_1;
-                               position = iter;
-                               scanline(point);
-                               scr_pos = scr_horz;
-                               midscreen((last_line / 2), point);
-                       }
-               }
-       }
-       else
-       {
-               if (display_message)
-               {
-                       wmove(com_win, 0, 0);
-                       wclrtoeol(com_win);
-                       wprintw(com_win, str_not_found_msg, srch_str);
-                       wrefresh(com_win);
-               }
-               wmove(text_win, scr_vert,(scr_horz - horiz_offset));
-       }
-       return(found);
-}
-
-void 
-search_prompt(void) /* prompt and read search string (srch_str) */
-{
-       if (srch_str != NULL)
-               free(srch_str);
-       if ((u_srch_str != NULL) && (*u_srch_str != 0))
-               free(u_srch_str);
-       srch_str = get_string(search_prompt_str, FALSE);
-       gold = FALSE;
-       srch_3 = srch_str;
-       srch_1 = u_srch_str = malloc(strlen(srch_str) + 1);
-       while (*srch_3 != 0)
-       {
-               *srch_1 = toupper(*srch_3);
-               srch_1++;
-               srch_3++;
-       }
-       *srch_1 = 0;
-       search(TRUE);
-}
-
-void 
-del_char(void) /* delete current character */
-{
-       in = 8;  /* backspace */
-       if (position < curr_line->line_length)  /* if not end of line   */
-       {
-               if ((ee_chinese) && (*point > 127) && 
-                   ((curr_line->line_length - position) >= 2))
-               {
-                       point++;
-                       position++;
-               }
-               position++;
-               point++;
-               scanline(point);
-               delete(TRUE);
-       }
-       else
-       {
-               right(FALSE);
-               delete(FALSE);
-       }
-}
-
-void 
-undel_char(void) /* undelete last deleted character */
-{
-       if (d_char[0] == '\n')  /* insert line if last del_char deleted eol */
-               insert_line(TRUE);
-       else
-       {
-               in = d_char[0];
-               insert(in);
-               if (d_char[1] != 0)
-               {
-                       in = d_char[1];
-                       insert(in);
-               }
-       }
-}
-
-void 
-del_word(void) /* delete word in front of cursor */
-{
-       int tposit;
-       int difference;
-       unsigned char *d_word2;
-       unsigned char *d_word3;
-       unsigned char tmp_char[3];
-
-       if (d_word != NULL)
-               free(d_word);
-       d_word = malloc(curr_line->line_length);
-       tmp_char[0] = d_char[0];
-       tmp_char[1] = d_char[1];
-       tmp_char[2] = d_char[2];
-       d_word3 = point;
-       d_word2 = d_word;
-       tposit = position;
-       while ((tposit < curr_line->line_length) && 
-                               ((*d_word3 != ' ') && (*d_word3 != '\t')))
-       {
-               tposit++;
-               *d_word2 = *d_word3;
-               d_word2++;
-               d_word3++;
-       }
-       while ((tposit < curr_line->line_length) && 
-                               ((*d_word3 == ' ') || (*d_word3 == '\t')))
-       {
-               tposit++;
-               *d_word2 = *d_word3;
-               d_word2++;
-               d_word3++;
-       }
-       *d_word2 = 0;
-       d_wrd_len = difference = d_word2 - d_word;
-       d_word2 = point;
-       while (tposit < curr_line->line_length)
-       {
-               tposit++;
-               *d_word2 = *d_word3;
-               d_word2++;
-               d_word3++;
-       }
-       curr_line->line_length -= difference;
-       *d_word2 = 0;
-       draw_line(scr_vert, scr_horz,point,position,curr_line->line_length);
-       d_char[0] = tmp_char[0];
-       d_char[1] = tmp_char[1];
-       d_char[2] = tmp_char[2];
-       text_changes = TRUE;
-       formatted = FALSE;
-}
-
-void 
-undel_word(void) /* undelete last deleted word */
-{
-       int temp;
-       int tposit;
-       unsigned char *tmp_old_ptr;
-       unsigned char *tmp_space;
-       unsigned char *tmp_ptr;
-       unsigned char *d_word_ptr;
-
-       /*
-        |      resize line to handle undeleted word
-        */
-       if ((curr_line->max_length - (curr_line->line_length + d_wrd_len)) < 5)
-               point = resiz_line(d_wrd_len, curr_line, position);
-       tmp_ptr = tmp_space = malloc(curr_line->line_length + d_wrd_len);
-       d_word_ptr = d_word;
-       temp = 1;
-       /*
-        |      copy d_word contents into temp space
-        */
-       while (temp <= d_wrd_len)
-       {
-               temp++;
-               *tmp_ptr = *d_word_ptr;
-               tmp_ptr++;
-               d_word_ptr++;
-       }
-       tmp_old_ptr = point;
-       tposit = position;
-       /*
-        |      copy contents of line from curent position to eol into 
-        |      temp space
-        */
-       while (tposit < curr_line->line_length)
-       {
-               temp++;
-               tposit++;
-               *tmp_ptr = *tmp_old_ptr;
-               tmp_ptr++;
-               tmp_old_ptr++;
-       }
-       curr_line->line_length += d_wrd_len;
-       tmp_old_ptr = point;
-       *tmp_ptr = 0;
-       tmp_ptr = tmp_space;
-       tposit = 1;
-       /*
-        |      now copy contents from temp space back to original line
-        */
-       while (tposit < temp)
-       {
-               tposit++;
-               *tmp_old_ptr = *tmp_ptr;
-               tmp_ptr++;
-               tmp_old_ptr++;
-       }
-       *tmp_old_ptr = 0;
-       free(tmp_space);
-       draw_line(scr_vert, scr_horz, point, position, curr_line->line_length);
-}
-
-void 
-del_line(void) /* delete from cursor to end of line */
-{
-       unsigned char *dl1;
-       unsigned char *dl2;
-       int tposit;
-
-       if (d_line != NULL)
-               free(d_line);
-       d_line = malloc(curr_line->line_length);
-       dl1 = d_line;
-       dl2 = point;
-       tposit = position;
-       while (tposit < curr_line->line_length)
-       {
-               *dl1 = *dl2;
-               dl1++;
-               dl2++;
-               tposit++;
-       }
-       dlt_line->line_length = 1 + tposit - position;
-       *dl1 = 0;
-       *point = 0;
-       curr_line->line_length = position;
-       wclrtoeol(text_win);
-       if (curr_line->next_line != NULL)
-       {
-               right(FALSE);
-               delete(FALSE);
-       }
-       text_changes = TRUE;
-}
-
-void 
-undel_line(void) /* undelete last deleted line */
-{
-       unsigned char *ud1;
-       unsigned char *ud2;
-       int tposit;
-
-       if (dlt_line->line_length == 0)
-               return;
-
-       insert_line(TRUE);
-       left(TRUE);
-       point = resiz_line(dlt_line->line_length, curr_line, position);
-       curr_line->line_length += dlt_line->line_length - 1;
-       ud1 = point;
-       ud2 = d_line;
-       tposit = 1;
-       while (tposit < dlt_line->line_length)
-       {
-               tposit++;
-               *ud1 = *ud2;
-               ud1++;
-               ud2++;
-       }
-       *ud1 = 0;
-       draw_line(scr_vert, scr_horz,point,position,curr_line->line_length);
-}
-
-void 
-adv_word(void) /* advance to next word */
-{
-while ((position < curr_line->line_length) && ((*point != 32) && (*point != 9)))
-               right(TRUE);
-while ((position < curr_line->line_length) && ((*point == 32) || (*point == 9)))
-               right(TRUE);
-}
-
-void 
-move_rel(char *direction, int lines)   /* move relative to current line        */
-{
-       int i;
-       char *tmp;
-
-       if (*direction == 'u')
-       {
-               scr_pos = 0;
-               while (position > 1)
-                       left(TRUE);
-               for (i = 0; i < lines; i++)
-               {
-                       up();
-               }
-               if ((last_line > 5) && ( scr_vert < 4))
-               {
-                       tmp = point;
-                       tmp_line = curr_line;
-                       for (i= 0;(i<5)&&(curr_line->prev_line != NULL); i++)
-                       {
-                               up();
-                       }
-                       scr_vert = scr_vert + i;
-                       curr_line = tmp_line;
-                       point = tmp;
-                       scanline(point);
-               }
-       }
-       else
-       {
-               if ((position != 1) && (curr_line->next_line != NULL))
-               {
-                       nextline();
-                       scr_pos = scr_horz = 0;
-                       if (horiz_offset)
-                       {
-                               horiz_offset = 0;
-                               midscreen(scr_vert, point);
-                       }
-               }
-               else
-                       adv_line();
-               for (i = 1; i < lines; i++)
-               {
-                       down();
-               }
-               if ((last_line > 10) && (scr_vert > (last_line - 5)))
-               {
-                       tmp = point;
-                       tmp_line = curr_line;
-                       for (i=0; (i<5) && (curr_line->next_line != NULL); i++)
-                       {
-                               down();
-                       }
-                       scr_vert = scr_vert - i;
-                       curr_line = tmp_line;
-                       point = tmp;
-                       scanline(point);
-               }
-       }
-       wmove(text_win, scr_vert, (scr_horz - horiz_offset));
-}
-
-void 
-eol(void)                              /* go to end of line                    */
-{
-       if (position < curr_line->line_length)
-       {
-               while (position < curr_line->line_length)
-                       right(TRUE);
-       }
-       else if (curr_line->next_line != NULL)
-       {
-               right(TRUE);
-               while (position < curr_line->line_length)
-                       right(TRUE);
-       }
-}
-
-void 
-bol(void)                              /* move to beginning of line    */
-{
-       if (point != curr_line->line)
-       {
-               while (point != curr_line->line)
-                       left(TRUE);
-       }
-       else if (curr_line->prev_line != NULL)
-       {
-               scr_pos = 0;
-               up();
-       }
-}
-
-void 
-adv_line(void) /* advance to beginning of next line    */
-{
-       if ((point != curr_line->line) || (scr_pos > 0))
-       {
-               while (position < curr_line->line_length)
-                       right(TRUE);
-               right(TRUE);
-       }
-       else if (curr_line->next_line != NULL)
-       {
-               scr_pos = 0;
-               down();
-       }
-}
-
-/* string: string containing user command */
-void 
-sh_command(char *string)       /* execute shell command                        */
-{
-       char *temp_point;
-       char *last_slash;
-       char *path;             /* directory path to executable         */
-       int parent;             /* zero if child, child's pid if parent */
-       int value;
-       int return_val;
-       struct text *line_holder;
-
-       if (restrict_mode())
-       {
-               return;
-       }
-
-       if (!(path = getenv("SHELL")))
-               path = "/bin/sh";
-       last_slash = temp_point = path;
-       while (*temp_point != 0)
-       {
-               if (*temp_point == '/')
-                       last_slash = ++temp_point;
-               else
-                       temp_point++;
-       }
-
-       /*
-        |      if in_pipe is true, then output of the shell operation will be 
-        |      read by the editor, and curses doesn't need to be turned off
-        */
-
-       if (!in_pipe)
-       {
-               keypad(com_win, FALSE);
-               keypad(text_win, FALSE);
-               echo();
-               nl();
-               noraw();
-               resetty();
-
-#ifndef NCURSE
-               endwin();
-#endif
-       }
-
-       if (in_pipe)
-       {
-               pipe(pipe_in);          /* create a pipe        */
-               parent = fork();
-               if (!parent)            /* if the child         */
-               {
-/*
- |  child process which will fork and exec shell command (if shell output is
- |  to be read by editor)
- */
-                       in_pipe = FALSE;
-/*
- |  redirect stdout to pipe
- */
-                       temp_stdout = dup(1);
-                       close(1);
-                       dup(pipe_in[1]);
-/*
- |  redirect stderr to pipe
- */
-                       temp_stderr = dup(2);
-                       close(2);
-                       dup(pipe_in[1]);
-                       close(pipe_in[1]);
-                       /*
-                        |      child will now continue down 'if (!in_pipe)' 
-                        |      path below
-                        */
-               }
-               else  /* if the parent  */
-               {
-/*
- |  prepare editor to read from the pipe
- */
-                       signal(SIGCHLD, SIG_IGN);
-                       line_holder = curr_line;
-                       tmp_vert = scr_vert;
-                       close(pipe_in[1]);
-                       get_fd = pipe_in[0];
-                       get_file("");
-                       close(pipe_in[0]);
-                       scr_vert = tmp_vert;
-                       scr_horz = scr_pos = 0;
-                       position = 1;
-                       curr_line = line_holder;
-                       point = curr_line->line;
-                       out_pipe = FALSE;
-                       signal(SIGCHLD, SIG_DFL);
-/*
- |  since flag "in_pipe" is still TRUE, the path which waits for the child 
- |  process to die will be avoided.
- |  (the pipe is closed, no more output can be expected)
- */
-               }
-       }
-       if (!in_pipe)
-       {
-               signal(SIGINT, SIG_IGN);
-               if (out_pipe)
-               {
-                       pipe(pipe_out);
-               }
-/*
- |  fork process which will exec command
- */
-               parent = fork();   
-               if (!parent)            /* if the child */
-               {
-                       if (shell_fork)
-                               putchar('\n');
-                       if (out_pipe)
-                       {
-/*
- |  prepare the child process (soon to exec a shell command) to read from the 
- |  pipe (which will be output from the editor's buffer)
- */
-                               close(0);
-                               dup(pipe_out[0]);
-                               close(pipe_out[0]);
-                               close(pipe_out[1]);
-                       }
-                       for (value = 1; value < 24; value++)
-                               signal(value, SIG_DFL);
-                       execl(path, last_slash, "-c", string, NULL);
-                       errx(1, exec_err_msg, path);
-               }
-               else    /* if the parent        */
-               {
-                       if (out_pipe)
-                       {
-/*
- |  output the contents of the buffer to the pipe (to be read by the 
- |  process forked and exec'd above as stdin)
- */
-                               close(pipe_out[0]);
-                               line_holder = first_line;
-                               while (line_holder != NULL)
-                               {
-                                       write(pipe_out[1], line_holder->line, (line_holder->line_length-1));
-                                       write(pipe_out[1], "\n", 1);
-                                       line_holder = line_holder->next_line;
-                               }
-                               close(pipe_out[1]);
-                               out_pipe = FALSE;
-                       }
-                       do
-                       {
-                               return_val = wait(NULL);
-                       }
-                       while ((return_val != parent) && (return_val != -1));
-/*
- |  if this process is actually the child of the editor, exit.  Here's how it 
- |  works:
- |  The editor forks a process.  If output must be sent to the command to be 
- |  exec'd another process is forked, and that process (the child's child) 
- |  will exec the command.  In this case, "shell_fork" will be FALSE.  If no 
- |  output is to be performed to the shell command, "shell_fork" will be TRUE.
- |  If this is the editor process, shell_fork will be true, otherwise this is 
- |  the child of the edit process.
- */
-                       if (!shell_fork)
-                               exit(0);
-               }
-               signal(SIGINT, edit_abort);
-       }
-       if (shell_fork)
-       {
-               printf("%s", continue_msg);
-               fflush(stdout);
-               while ((in = getchar()) != '\n')
-                       ;
-       }
-
-       if (!in_pipe)
-       {
-               fixterm();
-               noecho();
-               nonl();
-               raw();
-               keypad(text_win, TRUE);
-               keypad(com_win, TRUE);
-               if (info_window)
-                       clearok(info_win, TRUE);
-       }
-
-       redraw();
-}
-
-void 
-set_up_term(void)              /* set up the terminal for operating with ae    */
-{
-       if (!curses_initialized)
-       {
-               initscr();
-               savetty();
-               noecho();
-               raw();
-               nonl();
-               curses_initialized = TRUE;
-       }
-
-       if (((LINES > 15) && (COLS >= 80)) && info_window)
-               last_line = LINES - 8;
-       else
-       {
-               info_window = FALSE;
-               last_line = LINES - 2;
-       }
-
-       idlok(stdscr, TRUE);
-       com_win = newwin(1, COLS, (LINES - 1), 0);
-       keypad(com_win, TRUE);
-       idlok(com_win, TRUE);
-       wrefresh(com_win);
-       if (!info_window)
-               text_win = newwin((LINES - 1), COLS, 0, 0);
-       else
-               text_win = newwin((LINES - 7), COLS, 6, 0);
-       keypad(text_win, TRUE);
-       idlok(text_win, TRUE);
-       wrefresh(text_win);
-       help_win = newwin((LINES - 1), COLS, 0, 0);
-       keypad(help_win, TRUE);
-       idlok(help_win, TRUE);
-       if (info_window)
-       {
-               info_type = CONTROL_KEYS;
-               info_win = newwin(5, COLS, 0, 0);
-               werase(info_win);
-               paint_info_win();
-               count_win = newwin(1, COLS, 5, 0);
-               leaveok(count_win, TRUE);
-               wrefresh(count_win);
-       }
-
-       last_col = COLS - 1;
-       local_LINES = LINES;
-       local_COLS = COLS;
-
-#ifdef NCURSE
-       if (ee_chinese)
-               nc_setattrib(A_NC_BIG5);
-#endif /* NCURSE */
-
-}
-
-void 
-resize_check(void)
-{
-       if ((LINES == local_LINES) && (COLS == local_COLS))
-               return;
-
-       if (info_window)
-               delwin(info_win);
-       delwin(text_win);
-       delwin(com_win);
-       delwin(help_win);
-       delwin(count_win);
-       set_up_term();
-       redraw();
-       wrefresh(text_win);
-}
-
-static char item_alpha[] = "abcdefghijklmnopqrstuvwxyz0123456789 ";
-
-int 
-menu_op(struct menu_entries *menu_list)
-{
-       WINDOW *temp_win;
-       int max_width, max_height;
-       int x_off, y_off;
-       int counter;
-       int length;
-       int input;
-       int temp = 0;
-       int list_size;
-       int top_offset;         /* offset from top where menu items start */
-       int vert_size;          /* vertical size for menu list item display */
-       int off_start = 1;      /* offset from start of menu items to start display */
-
-
-       /*
-        |      determine number and width of menu items
-        */
-
-       list_size = 1;
-       while (menu_list[list_size + 1].item_string != NULL)
-               list_size++;
-       max_width = 0;
-       for (counter = 0; counter <= list_size; counter++)
-       {
-               if ((length = strlen(menu_list[counter].item_string)) > max_width)
-                       max_width = length;
-       }
-       max_width += 3;
-       max_width = max(max_width, strlen(menu_cancel_msg));
-       max_width = max(max_width, max(strlen(more_above_str), strlen(more_below_str)));
-       max_width += 6;
-
-       /*
-        |      make sure that window is large enough to handle menu
-        |      if not, print error message and return to calling function
-        */
-
-       if (max_width > COLS)
-       {
-               wmove(com_win, 0, 0);
-               werase(com_win);
-               wprintw(com_win, menu_too_lrg_msg);
-               wrefresh(com_win);
-               clear_com_win = TRUE;
-               return(0);
-       }
-
-       top_offset = 0;
-
-       if (list_size > LINES)
-       {
-               max_height = LINES;
-               if (max_height > 11)
-                       vert_size = max_height - 8;
-               else
-                       vert_size = max_height;
-       }
-       else
-       {
-               vert_size = list_size;
-               max_height = list_size;
-       }
-
-       if (LINES >= (vert_size + 8))
-       {
-               if (menu_list[0].argument != MENU_WARN)
-                       max_height = vert_size + 8;
-               else
-                       max_height = vert_size + 7;
-               top_offset = 4;
-       }
-       x_off = (COLS - max_width) / 2;
-       y_off = (LINES - max_height - 1) / 2;
-       temp_win = newwin(max_height, max_width, y_off, x_off);
-       keypad(temp_win, TRUE);
-
-       paint_menu(menu_list, max_width, max_height, list_size, top_offset, temp_win, off_start, vert_size);
-
-       counter = 1;
-       do
-       {
-               if (off_start > 2)
-                       wmove(temp_win, (1 + counter + top_offset - off_start), 3);
-               else
-                       wmove(temp_win, (counter + top_offset - off_start), 3);
-
-               wrefresh(temp_win);
-               input = wgetch(temp_win);
-
-               if (((tolower(input) >= 'a') && (tolower(input) <= 'z')) || 
-                   ((input >= '0') && (input <= '9')))
-               {
-                       if ((tolower(input) >= 'a') && (tolower(input) <= 'z'))
-                       {
-                               temp = 1 + tolower(input) - 'a';
-                       }
-                       else if ((input >= '0') && (input <= '9'))
-                       {
-                               temp = (2 + 'z' - 'a') + (input - '0');
-                       }
-
-                       if (temp <= list_size)
-                       {
-                               input = '\n';
-                               counter = temp;
-                       }
-               }
-               else
-               {               
-                       switch (input)
-                       {
-                               case ' ':       /* space        */
-                               case '\004':    /* ^d, down     */
-                               case KEY_RIGHT:
-                               case KEY_DOWN:
-                                       counter++;
-                                       if (counter > list_size)
-                                               counter = 1;
-                                       break;
-                               case '\010':    /* ^h, backspace*/
-                               case '\025':    /* ^u, up       */
-                               case 127:       /* ^?, delete   */
-                               case KEY_BACKSPACE:
-                               case KEY_LEFT:
-                               case KEY_UP:
-                                       counter--;
-                                       if (counter == 0)
-                                               counter = list_size;
-                                       break;
-                               case '\033':    /* escape key   */
-                                       if (menu_list[0].argument != MENU_WARN)
-                                               counter = 0;
-                                       break;
-                               case '\014':    /* ^l           */
-                               case '\022':    /* ^r, redraw   */
-                                       paint_menu(menu_list, max_width, max_height, 
-                                               list_size, top_offset, temp_win, 
-                                               off_start, vert_size);
-                                       break;
-                               default:
-                                       break;
-                       }
-               }
-       
-               if (((list_size - off_start) >= (vert_size - 1)) && 
-                       (counter > (off_start + vert_size - 3)) && 
-                               (off_start > 1))
-               {
-                       if (counter == list_size)
-                               off_start = (list_size - vert_size) + 2;
-                       else
-                               off_start++;
-
-                       paint_menu(menu_list, max_width, max_height, 
-                                  list_size, top_offset, temp_win, off_start, 
-                                  vert_size);
-               }
-               else if ((list_size != vert_size) && 
-                               (counter > (off_start + vert_size - 2)))
-               {
-                       if (counter == list_size)
-                               off_start = 2 + (list_size - vert_size);
-                       else if (off_start == 1)
-                               off_start = 3;
-                       else
-                               off_start++;
-
-                       paint_menu(menu_list, max_width, max_height, 
-                                  list_size, top_offset, temp_win, off_start, 
-                                  vert_size);
-               }
-               else if (counter < off_start)
-               {
-                       if (counter <= 2)
-                               off_start = 1;
-                       else
-                               off_start = counter;
-
-                       paint_menu(menu_list, max_width, max_height, 
-                                  list_size, top_offset, temp_win, off_start, 
-                                  vert_size);
-               }
-       }
-       while ((input != '\r') && (input != '\n') && (counter != 0));
-
-       werase(temp_win);
-       wrefresh(temp_win);
-       delwin(temp_win);
-
-       if ((menu_list[counter].procedure != NULL) || 
-           (menu_list[counter].iprocedure != NULL) || 
-           (menu_list[counter].nprocedure != NULL))
-       {
-               if (menu_list[counter].argument != -1)
-                       (*menu_list[counter].iprocedure)(menu_list[counter].argument);
-               else if (menu_list[counter].ptr_argument != NULL)
-                       (*menu_list[counter].procedure)(menu_list[counter].ptr_argument);
-               else
-                       (*menu_list[counter].nprocedure)();
-       }
-
-       if (info_window)
-               paint_info_win();
-       redraw();
-
-       return(counter);
-}
-
-void 
-paint_menu(struct menu_entries *menu_list, int max_width, int max_height,
-           int list_size, int top_offset, WINDOW *menu_win, int off_start,
-           int vert_size)
-{
-       int counter, temp_int;
-
-       werase(menu_win);
-
-       /*
-        |      output top and bottom portions of menu box only if window 
-        |      large enough 
-        */
-
-       if (max_height > vert_size)
-       {
-               wmove(menu_win, 1, 1);
-               if (!nohighlight)
-                       wstandout(menu_win);
-               waddch(menu_win, '+');
-               for (counter = 0; counter < (max_width - 4); counter++)
-                       waddch(menu_win, '-');
-               waddch(menu_win, '+');
-
-               wmove(menu_win, (max_height - 2), 1);
-               waddch(menu_win, '+');
-               for (counter = 0; counter < (max_width - 4); counter++)
-                       waddch(menu_win, '-');
-               waddch(menu_win, '+');
-               wstandend(menu_win);
-               wmove(menu_win, 2, 3);
-               waddstr(menu_win, menu_list[0].item_string);
-               wmove(menu_win, (max_height - 3), 3);
-               if (menu_list[0].argument != MENU_WARN)
-                       waddstr(menu_win, menu_cancel_msg);
-       }
-       if (!nohighlight)
-               wstandout(menu_win);
-
-       for (counter = 0; counter < (vert_size + top_offset); counter++)
-       {
-               if (top_offset == 4)
-               {
-                       temp_int = counter + 2;
-               }
-               else
-                       temp_int = counter;
-
-               wmove(menu_win, temp_int, 1);
-               waddch(menu_win, '|');
-               wmove(menu_win, temp_int, (max_width - 2));
-               waddch(menu_win, '|');
-       }
-       wstandend(menu_win);
-
-       if (list_size > vert_size)
-       {
-               if (off_start >= 3)
-               {
-                       temp_int = 1;
-                       wmove(menu_win, top_offset, 3);
-                       waddstr(menu_win, more_above_str);
-               }
-               else
-                       temp_int = 0;
-
-               for (counter = off_start; 
-                       ((temp_int + counter - off_start) < (vert_size - 1));
-                               counter++)
-               {
-                       wmove(menu_win, (top_offset + temp_int + 
-                                               (counter - off_start)), 3);
-                       if (list_size > 1)
-                               wprintw(menu_win, "%c) ", item_alpha[min((counter - 1), max_alpha_char)]);
-                       waddstr(menu_win, menu_list[counter].item_string);
-               }
-
-               wmove(menu_win, (top_offset + (vert_size - 1)), 3);
-
-               if (counter == list_size)
-               {
-                       if (list_size > 1)
-                               wprintw(menu_win, "%c) ", item_alpha[min((counter - 1), max_alpha_char)]);
-                       wprintw(menu_win, menu_list[counter].item_string);
-               }
-               else
-                       wprintw(menu_win, more_below_str);
-       }
-       else
-       {
-               for (counter = 1; counter <= list_size; counter++)
-               {
-                       wmove(menu_win, (top_offset + counter - 1), 3);
-                       if (list_size > 1)
-                               wprintw(menu_win, "%c) ", item_alpha[min((counter - 1), max_alpha_char)]);
-                       waddstr(menu_win, menu_list[counter].item_string);
-               }
-       }
-}
-
-void 
-help(void)
-{
-       int counter;
-
-       werase(help_win);
-       clearok(help_win, TRUE);
-       for (counter = 0; counter < 22; counter++)
-       {
-               wmove(help_win, counter, 0);
-               waddstr(help_win, (emacs_keys_mode) ? 
-                       emacs_help_text[counter] : help_text[counter]);
-       }
-       wrefresh(help_win);
-       werase(com_win);
-       wmove(com_win, 0, 0);
-       wprintw(com_win, press_any_key_msg);
-       wrefresh(com_win);
-       counter = wgetch(com_win);
-       werase(com_win);
-       wmove(com_win, 0, 0);
-       werase(help_win);
-       wrefresh(help_win);
-       wrefresh(com_win);
-       redraw();
-}
-
-void 
-paint_info_win(void)
-{
-       int counter;
-
-       if (!info_window)
-               return;
-
-       werase(info_win);
-       for (counter = 0; counter < 5; counter++)
-       {
-               wmove(info_win, counter, 0);
-               wclrtoeol(info_win);
-               if (info_type == CONTROL_KEYS)
-                       waddstr(info_win, (emacs_keys_mode) ? 
-                         emacs_control_keys[counter] : control_keys[counter]);
-               else if (info_type == COMMANDS)
-                       waddstr(info_win, command_strings[counter]);
-       }
-       wrefresh(info_win);
-}
-
-void 
-no_info_window(void)
-{
-       if (!info_window)
-               return;
-       delwin(info_win);
-       delwin(text_win);
-       info_window = FALSE;
-       last_line = LINES - 2;
-       text_win = newwin((LINES - 1), COLS, 0, 0);
-       keypad(text_win, TRUE);
-       idlok(text_win, TRUE);
-       clearok(text_win, TRUE);
-       midscreen(scr_vert, point);
-       wrefresh(text_win);
-       clear_com_win = TRUE;
-}
-
-void 
-create_info_window(void)
-{
-       if (info_window)
-               return;
-       last_line = LINES - 8;
-       delwin(text_win);
-       text_win = newwin((LINES - 7), COLS, 6, 0);
-       keypad(text_win, TRUE);
-       idlok(text_win, TRUE);
-       werase(text_win);
-       info_window = TRUE;
-       info_win = newwin(5, COLS, 0, 0);
-       werase(info_win);
-       info_type = CONTROL_KEYS;
-       midscreen(min(scr_vert, last_line), point);
-       clearok(info_win, TRUE);
-       paint_info_win();
-       count_win = newwin(1, COLS, 5, 0);
-       leaveok(count_win, TRUE);
-       wrefresh(count_win);
-       wrefresh(text_win);
-       clear_com_win = TRUE;
-}
-
-int 
-file_op(int arg)
-{
-       char *string;
-       int flag;
-
-       if (restrict_mode())
-       {
-               return(0);
-       }
-
-       if (arg == READ_FILE)
-       {
-               string = get_string(file_read_prompt_str, TRUE);
-               recv_file = TRUE;
-               tmp_file = resolve_name(string);
-               check_fp();
-               if (tmp_file != string)
-                       free(tmp_file);
-               free(string);
-       }
-       else if (arg == WRITE_FILE)
-       {
-               string = get_string(file_write_prompt_str, TRUE);
-               tmp_file = resolve_name(string);
-               write_file(tmp_file, 1);
-               if (tmp_file != string)
-                       free(tmp_file);
-               free(string);
-       }
-       else if (arg == SAVE_FILE)
-       {
-       /*
-        |      changes made here should be reflected in finish()
-        */
-
-               if (in_file_name)
-                       flag = TRUE;
-               else
-                       flag = FALSE;
-
-               string = in_file_name;
-               if ((string == NULL) || (*string == 0))
-                       string = get_string(save_file_name_prompt, TRUE);
-               if ((string == NULL) || (*string == 0))
-               {
-                       wmove(com_win, 0, 0);
-                       wprintw(com_win, file_not_saved_msg);
-                       wclrtoeol(com_win);
-                       wrefresh(com_win);
-                       clear_com_win = TRUE;
-                       return(0);
-               }
-               if (!flag)
-               {
-                       tmp_file = resolve_name(string);
-                       if (tmp_file != string)
-                       {
-                               free(string);
-                               string = tmp_file;
-                       }
-               }
-               if (write_file(string, 1))
-               {
-                       in_file_name = string;
-                       text_changes = FALSE;
-               }
-               else if (!flag)
-                       free(string);
-       }
-       return(0);
-}
-
-void 
-shell_op(void)
-{
-       char *string;
-
-       if (((string = get_string(shell_prompt, TRUE)) != NULL) && 
-                       (*string != 0))
-       {
-               sh_command(string);
-               free(string);
-       }
-}
-
-void 
-leave_op(void)
-{
-       if (text_changes)
-       {
-               menu_op(leave_menu);
-       }
-       else
-               quit(TRUE);
-}
-
-void 
-redraw(void)
-{
-       if (info_window)
-        {
-                clearok(info_win, TRUE);
-               paint_info_win();
-        }
-        else
-               clearok(text_win, TRUE);
-       midscreen(scr_vert, point);
-}
-
-/*
- |     The following routines will "format" a paragraph (as defined by a 
- |     block of text with blank lines before and after the block).
- */
-
-int 
-Blank_Line(struct text *test_line)
-/* test if line has any non-space characters */
-{
-       unsigned char *line;
-       int length;
-       
-       if (test_line == NULL)
-               return(TRUE);
-
-       length = 1;
-       line = test_line->line;
-
-       /*
-        |      To handle troff/nroff documents, consider a line with a 
-        |      period ('.') in the first column to be blank.  To handle mail 
-        |      messages with included text, consider a line with a '>' blank.
-        */
-
-       if ((*line == '.') || (*line == '>'))
-               return(TRUE);
-
-       while (((*line == ' ') || (*line == '\t')) && (length < test_line->line_length))
-       {
-               length++;
-               line++;
-       }
-       if (length != test_line->line_length)
-               return(FALSE);
-       else
-               return(TRUE);
-}
-
-void 
-Format(void)   /* format the paragraph according to set margins        */
-{
-       int string_count;
-       int offset;
-       int temp_case;
-       int status;
-       int tmp_af;
-       int counter;
-       unsigned char *line;
-       unsigned char *tmp_srchstr;
-       unsigned char *temp1, *temp2;
-       unsigned char *temp_dword;
-       unsigned char temp_d_char[3];
-
-       temp_d_char[0] = d_char[0];
-       temp_d_char[1] = d_char[1];
-       temp_d_char[2] = d_char[2];
-
-/*
- |     if observ_margins is not set, or the current line is blank, 
- |     do not format the current paragraph
- */
-
-       if ((!observ_margins) || (Blank_Line(curr_line)))
-               return;
-
-/*
- |     save the currently set flags, and clear them
- */
-
-       wmove(com_win, 0, 0);
-       wclrtoeol(com_win);
-       wprintw(com_win, formatting_msg);
-       wrefresh(com_win);
-
-/*
- |     get current position in paragraph, so after formatting, the cursor 
- |     will be in the same relative position
- */
-
-       tmp_af = auto_format;
-       auto_format = FALSE;
-       offset = position;
-       if (position != 1)
-               prev_word();
-       temp_dword = d_word;
-       d_word = NULL;
-       temp_case = case_sen;
-       case_sen = TRUE;
-       tmp_srchstr = srch_str;
-       temp2 = srch_str = (unsigned char *) malloc(1 + curr_line->line_length - position);
-       if ((*point == ' ') || (*point == '\t'))
-               adv_word();
-       offset -= position;
-       counter = position;
-       line = temp1 = point;
-       while ((*temp1 != 0) && (*temp1 != ' ') && (*temp1 != '\t') && (counter < curr_line->line_length))
-       {
-               *temp2 = *temp1;
-               temp2++;
-               temp1++;
-               counter++;
-       }
-       *temp2 = 0;
-       if (position != 1)
-               bol();
-       while (!Blank_Line(curr_line->prev_line))
-               bol();
-       string_count = 0;
-       status = TRUE;
-       while ((line != point) && (status))
-       {
-               status = search(FALSE);
-               string_count++;
-       }
-
-       wmove(com_win, 0, 0);
-       wclrtoeol(com_win);
-       wprintw(com_win, formatting_msg);
-       wrefresh(com_win);
-
-/*
- |     now get back to the start of the paragraph to start formatting
- */
-
-       if (position != 1)
-               bol();
-       while (!Blank_Line(curr_line->prev_line))
-               bol();
-
-       observ_margins = FALSE;
-
-/*
- |     Start going through lines, putting spaces at end of lines if they do 
- |     not already exist.  Append lines together to get one long line, and 
- |     eliminate spacing at begin of lines.
- */
-
-       while (!Blank_Line(curr_line->next_line))
-       {
-               eol();
-               left(TRUE);
-               if (*point != ' ')
-               {
-                       right(TRUE);
-                       insert(' ');
-               }
-               else
-                       right(TRUE);
-               del_char();
-               if ((*point == ' ') || (*point == '\t'))
-                       del_word();
-       }
-
-/*
- |     Now there is one long line.  Eliminate extra spaces within the line
- |     after the first word (so as not to blow away any indenting the user 
- |     may have put in).
- */
-
-       bol();
-       adv_word();
-       while (position < curr_line->line_length)
-       {
-               if ((*point == ' ') && (*(point + 1) == ' '))
-                       del_char();
-               else
-                       right(TRUE);
-       }
-
-/*
- |     Now make sure there are two spaces after a '.'.
- */
-
-       bol();
-       while (position < curr_line->line_length)
-       {
-               if ((*point == '.') && (*(point + 1) == ' '))
-               {
-                       right(TRUE);
-                       insert(' ');
-                       insert(' ');
-                       while (*point == ' ')
-                               del_char();
-               }
-               right(TRUE);
-       }
-
-       observ_margins = TRUE;
-       bol();
-
-       wmove(com_win, 0, 0);
-       wclrtoeol(com_win);
-       wprintw(com_win, formatting_msg);
-       wrefresh(com_win);
-
-/*
- |     create lines between margins
- */
-
-       while (position < curr_line->line_length)
-       {
-               while ((scr_pos < right_margin) && (position < curr_line->line_length))
-                       right(TRUE);
-               if (position < curr_line->line_length)
-               {
-                       prev_word();
-                       if (position == 1)
-                               adv_word();
-                       insert_line(TRUE);
-               }
-       }
-
-/*
- |     go back to begin of paragraph, put cursor back to original position
- */
-
-       bol();
-       while (!Blank_Line(curr_line->prev_line))
-               bol();
-
-/*
- |     find word cursor was in
- */
-
-       while ((status) && (string_count > 0))
-       {
-               search(FALSE);
-               string_count--;
-       }
-
-/*
- |     offset the cursor to where it was before from the start of the word
- */
-
-       while (offset > 0)
-       {
-               offset--;
-               right(TRUE);
-       }
-
-/*
- |     reset flags and strings to what they were before formatting
- */
-
-       if (d_word != NULL)
-               free(d_word);
-       d_word = temp_dword;
-       case_sen = temp_case;
-       free(srch_str);
-       srch_str = tmp_srchstr;
-       d_char[0] = temp_d_char[0];
-       d_char[1] = temp_d_char[1];
-       d_char[2] = temp_d_char[2];
-       auto_format = tmp_af;
-
-       midscreen(scr_vert, point);
-       werase(com_win);
-       wrefresh(com_win);
-}
-
-unsigned char *init_name[3] = {
-       "/usr/share/misc/init.ee", 
-       NULL, 
-       ".init.ee"
-       };
-
-void 
-ee_init(void)  /* check for init file and read it if it exists */
-{
-       FILE *init_file;
-       unsigned char *string;
-       unsigned char *str1;
-       unsigned char *str2;
-       char *home;
-       int counter;
-       int temp_int;
-
-       string = getenv("HOME");
-       if (!string)
-           string = "/root"; /* Set to reasonable default so we don't crash */
-       str1 = home = malloc(strlen(string)+10);
-       strcpy(home, string);
-       strcat(home, "/.init.ee");
-       init_name[1] = home;
-       string = malloc(512);
-
-       for (counter = 0; counter < 3; counter++)
-       {
-               if (!(access(init_name[counter], 4)))
-               {
-                       init_file = fopen(init_name[counter], "r");
-                       while ((str2 = fgets(string, 512, init_file)) != NULL)
-                       {
-                               str1 = str2 = string;
-                               while (*str2 != '\n')
-                                       str2++;
-                               *str2 = 0;
-
-                               if (unique_test(string, init_strings) != 1)
-                                       continue;
-
-                               if (compare(str1, CASE, FALSE))
-                                       case_sen = TRUE;
-                               else if (compare(str1, NOCASE, FALSE))
-                                       case_sen = FALSE;
-                               else if (compare(str1, EXPAND, FALSE))
-                                       expand_tabs = TRUE;
-                               else if (compare(str1, NOEXPAND, FALSE))
-                                       expand_tabs = FALSE;
-                               else if (compare(str1, INFO, FALSE))
-                                       info_window = TRUE;
-                               else if (compare(str1, NOINFO, FALSE))
-                                       info_window = FALSE;   
-                               else if (compare(str1, MARGINS, FALSE))
-                                       observ_margins = TRUE;
-                               else if (compare(str1, NOMARGINS, FALSE))
-                                       observ_margins = FALSE;
-                               else if (compare(str1, AUTOFORMAT, FALSE))
-                               {
-                                       auto_format = TRUE;
-                                       observ_margins = TRUE;
-                               }
-                               else if (compare(str1, NOAUTOFORMAT, FALSE))
-                                       auto_format = FALSE;
-                               else if (compare(str1, Echo, FALSE))
-                               {
-                                       str1 = next_word(str1);
-                                       if (*str1 != 0)
-                                               echo_string(str1);
-                               }
-                               else if (compare(str1, PRINTCOMMAND, FALSE))
-                               {
-                                       str1 = next_word(str1);
-                                       print_command = malloc(strlen(str1)+1);
-                                       strcpy(print_command, str1);
-                               }
-                               else if (compare(str1, RIGHTMARGIN, FALSE))
-                               {
-                                       str1 = next_word(str1);
-                                       if ((*str1 >= '0') && (*str1 <= '9'))
-                                       {
-                                               temp_int = atoi(str1);
-                                               if (temp_int > 0)
-                                                       right_margin = temp_int;
-                                       }
-                               }
-                               else if (compare(str1, HIGHLIGHT, FALSE))
-                                       nohighlight = FALSE;
-                               else if (compare(str1, NOHIGHLIGHT, FALSE))
-                                       nohighlight = TRUE;
-                               else if (compare(str1, EIGHTBIT, FALSE))
-                                       eightbit = TRUE;
-                               else if (compare(str1, NOEIGHTBIT, FALSE))
-                               {
-                                       eightbit = FALSE;
-                                       ee_chinese = FALSE;
-                               }
-                               else if (compare(str1, EMACS_string, FALSE))
-                                       emacs_keys_mode = TRUE;
-                               else if (compare(str1, NOEMACS_string, FALSE))
-                                       emacs_keys_mode = FALSE;
-                               else if (compare(str1, chinese_cmd, FALSE))
-                               {
-                                       ee_chinese = TRUE;
-                                       eightbit = TRUE;
-                               }
-                               else if (compare(str1, nochinese_cmd, FALSE))
-                                       ee_chinese = FALSE;
-                       }
-                       fclose(init_file);
-               }
-       }
-       free(string);
-       free(home);
-
-       string = getenv("LANG");
-       if (string != NULL)
-       {
-               if (strcmp(string, "zh_TW.big5") == 0)
-               {
-                       ee_chinese = TRUE;
-                       eightbit = TRUE;
-               }
-       }
-}
-
-/*
- |     Save current configuration to .init.ee file in the current directory.
- */
-
-void 
-dump_ee_conf(void)
-{
-       FILE *init_file;
-       FILE *old_init_file = NULL;
-       char *file_name = ".init.ee";
-       char *home_dir =  "~/.init.ee";
-       char buffer[512];
-       struct stat buf;
-       char *string;
-       int length;
-       int option = 0;
-
-       if (restrict_mode())
-       {
-               return;
-       }
-
-       option = menu_op(config_dump_menu);
-
-       werase(com_win);
-       wmove(com_win, 0, 0);
-
-       if (option == 0)
-       {
-               wprintw(com_win, conf_not_saved_msg);
-               wrefresh(com_win);
-               return;
-       }
-       else if (option == 2)
-               file_name = resolve_name(home_dir);
-
-       /*
-        |      If a .init.ee file exists, move it to .init.ee.old.
-        */
-
-       if (stat(file_name, &buf) != -1)
-       {
-               sprintf(buffer, "%s.old", file_name);
-               unlink(buffer);
-               link(file_name, buffer);
-               unlink(file_name);
-               old_init_file = fopen(buffer, "r");
-       }
-
-       init_file = fopen(file_name, "w");
-       if (init_file == NULL)
-       {
-               wprintw(com_win, conf_dump_err_msg);
-               wrefresh(com_win);
-               return;
-       }
-
-       if (old_init_file != NULL)
-       {
-               /*
-                |      Copy non-configuration info into new .init.ee file.
-                */
-               while ((string = fgets(buffer, 512, old_init_file)) != NULL)
-               {
-                       length = strlen(string);
-                       string[length - 1] = 0;
-
-                       if (unique_test(string, init_strings) == 1)
-                       {
-                               if (compare(string, Echo, FALSE))
-                               {
-                                       fprintf(init_file, "%s\n", string);
-                               }
-                       }
-                       else
-                               fprintf(init_file, "%s\n", string);
-               }
-
-               fclose(old_init_file);
-       }
-
-       fprintf(init_file, "%s\n", case_sen ? CASE : NOCASE);
-       fprintf(init_file, "%s\n", expand_tabs ? EXPAND : NOEXPAND);
-       fprintf(init_file, "%s\n", info_window ? INFO : NOINFO );
-       fprintf(init_file, "%s\n", observ_margins ? MARGINS : NOMARGINS );
-       fprintf(init_file, "%s\n", auto_format ? AUTOFORMAT : NOAUTOFORMAT );
-       fprintf(init_file, "%s %s\n", PRINTCOMMAND, print_command);
-       fprintf(init_file, "%s %d\n", RIGHTMARGIN, right_margin);
-       fprintf(init_file, "%s\n", nohighlight ? NOHIGHLIGHT : HIGHLIGHT );
-       fprintf(init_file, "%s\n", eightbit ? EIGHTBIT : NOEIGHTBIT );
-       fprintf(init_file, "%s\n", emacs_keys_mode ? EMACS_string : NOEMACS_string );
-       fprintf(init_file, "%s\n", ee_chinese ? chinese_cmd : nochinese_cmd );
-
-       fclose(init_file);
-
-       wprintw(com_win, conf_dump_success_msg, file_name);
-       wrefresh(com_win);
-
-       if ((option == 2) && (file_name != home_dir))
-       {
-               free(file_name);
-       }
-}
-
-void 
-echo_string(char *string)      /* echo the given string        */
-{
-       char *temp;
-       int Counter;
-
-               temp = string;
-               while (*temp != 0)
-               {
-                       if (*temp == '\\')
-                       {
-                               temp++;
-                               if (*temp == 'n')
-                                       putchar('\n');
-                               else if (*temp == 't')
-                                       putchar('\t');
-                               else if (*temp == 'b')
-                                       putchar('\b');
-                               else if (*temp == 'r')
-                                       putchar('\r');
-                               else if (*temp == 'f')
-                                       putchar('\f');
-                               else if ((*temp == 'e') || (*temp == 'E'))
-                                       putchar('\033');        /* escape */
-                               else if (*temp == '\\')
-                                       putchar('\\');
-                               else if (*temp == '\'')
-                                       putchar('\'');
-                               else if ((*temp >= '0') && (*temp <= '9'))
-                               {
-                                       Counter = 0;
-                                       while ((*temp >= '0') && (*temp <= '9'))
-                                       {
-                                               Counter = (8 * Counter) + (*temp - '0');
-                                               temp++;
-                                       }
-                                       putchar(Counter);
-                                       temp--;
-                               }
-                               temp++;
-                       }
-                       else
-                       {
-                               putchar(*temp);
-                               temp++;
-                       }
-               }
-
-       fflush(stdout);
-}
-
-void 
-spell_op(void) /* check spelling of words in the editor        */
-{
-       if (restrict_mode())
-       {
-               return;
-       }
-       top();                  /* go to top of file            */
-       insert_line(FALSE);     /* create two blank lines       */
-       insert_line(FALSE);
-       top();
-       command(shell_echo_msg);
-       adv_line();
-       wmove(com_win, 0, 0);
-       wprintw(com_win, spell_in_prog_msg);
-       wrefresh(com_win);
-       command("<>!spell");    /* send contents of buffer to command 'spell' 
-                                  and read the results back into the editor */
-}
-
-void 
-ispell_op(void)
-{
-       char template[128], *name;
-       char string[256];
-       int fd;
-
-       if (restrict_mode())
-       {
-               return;
-       }
-       (void)sprintf(template, "/tmp/ee.XXXXXXXX");
-       name = mktemp(&template[0]);
-       fd = open(name, O_CREAT | O_EXCL | O_RDWR, 0600);
-       if (fd < 0) {
-               wmove(com_win, 0, 0);
-               wprintw(com_win, create_file_fail_msg, name);
-               wrefresh(com_win);
-               return;
-       }
-       close(fd);
-       if (write_file(name, 0))
-       {
-               sprintf(string, "ispell %s", name);
-               sh_command(string);
-               delete_text();
-               tmp_file = name;
-               recv_file = TRUE;
-               check_fp();
-               unlink(name);
-       }
-}
-
-int
-first_word_len(struct text *test_line)
-{
-       int counter;
-       unsigned char *pnt;
-
-       if (test_line == NULL)
-               return(0);
-
-       pnt = test_line->line;
-       if ((pnt == NULL) || (*pnt == 0) ||
-           (*pnt == '.') || (*pnt == '>'))
-               return(0);
-
-       if ((*pnt == ' ') || (*pnt == '\t'))
-       {
-               pnt = next_word(pnt);
-       }
-
-       if (*pnt == 0)
-               return(0);
-
-       counter = 0;
-       while ((*pnt != 0) && ((*pnt != ' ') && (*pnt != '\t')))
-       {
-               pnt++;
-               counter++;
-       }
-       while ((*pnt != 0) && ((*pnt == ' ') || (*pnt == '\t')))
-       {
-               pnt++;
-               counter++;
-       }
-       return(counter);
-}
-
-void 
-Auto_Format(void)      /* format the paragraph according to set margins */
-{
-       int string_count;
-       int offset;
-       int temp_case;
-       int word_len;
-       int temp_dwl;
-       int tmp_d_line_length;
-       int leave_loop = FALSE;
-       int status;
-       int counter;
-       char not_blank;
-       unsigned char *line;
-       unsigned char *tmp_srchstr;
-       unsigned char *temp1, *temp2;
-       unsigned char *temp_dword;
-       unsigned char temp_d_char[3];
-       unsigned char *tmp_d_line;
-
-
-       temp_d_char[0] = d_char[0];
-       temp_d_char[1] = d_char[1];
-       temp_d_char[2] = d_char[2];
-
-/*
- |     if observ_margins is not set, or the current line is blank, 
- |     do not format the current paragraph
- */
-
-       if ((!observ_margins) || (Blank_Line(curr_line)))
-               return;
-
-/*
- |     get current position in paragraph, so after formatting, the cursor 
- |     will be in the same relative position
- */
-
-       tmp_d_line = d_line;
-       tmp_d_line_length = dlt_line->line_length;
-       d_line = NULL;
-       auto_format = FALSE;
-       offset = position;
-       if ((position != 1) && ((*point == ' ') || (*point == '\t') || (position == curr_line->line_length) || (*point == 0)))
-               prev_word();
-       temp_dword = d_word;
-       temp_dwl = d_wrd_len;
-       d_wrd_len = 0;
-       d_word = NULL;
-       temp_case = case_sen;
-       case_sen = TRUE;
-       tmp_srchstr = srch_str;
-       temp2 = srch_str = (unsigned char *) malloc(1 + curr_line->line_length - position);
-       if ((*point == ' ') || (*point == '\t'))
-               adv_word();
-       offset -= position;
-       counter = position;
-       line = temp1 = point;
-       while ((*temp1 != 0) && (*temp1 != ' ') && (*temp1 != '\t') && (counter < curr_line->line_length))
-       {
-               *temp2 = *temp1;
-               temp2++;
-               temp1++;
-               counter++;
-       }
-       *temp2 = 0;
-       if (position != 1)
-               bol();
-       while (!Blank_Line(curr_line->prev_line))
-               bol();
-       string_count = 0;
-       status = TRUE;
-       while ((line != point) && (status))
-       {
-               status = search(FALSE);
-               string_count++;
-       }
-
-/*
- |     now get back to the start of the paragraph to start checking
- */
-
-       if (position != 1)
-               bol();
-       while (!Blank_Line(curr_line->prev_line))
-               bol();
-
-/*
- |     Start going through lines, putting spaces at end of lines if they do 
- |     not already exist.  Check line length, and move words to the next line 
- |     if they cross the margin.  Then get words from the next line if they 
- |     will fit in before the margin.  
- */
-
-       counter = 0;
-
-       while (!leave_loop)
-       {
-               if (position != curr_line->line_length)
-                       eol();
-               left(TRUE);
-               if (*point != ' ')
-               {
-                       right(TRUE);
-                       insert(' ');
-               }
-               else
-                       right(TRUE);
-
-               not_blank = FALSE;
-
-               /*
-                |      fill line if first word on next line will fit 
-                |      in the line without crossing the margin
-                */
-
-               while ((curr_line->next_line != NULL) && 
-                      ((word_len = first_word_len(curr_line->next_line)) > 0) 
-                       && ((scr_pos + word_len) < right_margin))
-               {
-                       adv_line();
-                       if ((*point == ' ') || (*point == '\t'))
-                               adv_word();
-                       del_word();
-                       if (position != 1)
-                               bol();
-
-                       /*
-                        |      We know this line was not blank before, so 
-                        |      make sure that it doesn't have one of the 
-                        |      leading characters that indicate the line 
-                        |      should not be modified.
-                        |
-                        |      We also know that this character should not 
-                        |      be left as the first character of this line.
-                        */
-
-                       if ((Blank_Line(curr_line)) && 
-                           (curr_line->line[0] != '.') && 
-                           (curr_line->line[0] != '>'))
-                       {
-                               del_line();
-                               not_blank = FALSE;
-                       }
-                       else
-                               not_blank = TRUE;
-
-                       /*
-                        |   go to end of previous line
-                        */
-                       left(TRUE);
-                       undel_word();
-                       eol();
-                       /*
-                        |   make sure there's a space at the end of the line
-                        */
-                       left(TRUE);
-                       if (*point != ' ')
-                       {
-                               right(TRUE);
-                               insert(' ');
-                       }
-                       else
-                               right(TRUE);
-               }
-
-               /*
-                |      make sure line does not cross right margin
-                */
-
-               while (right_margin <= scr_pos)
-               {
-                       prev_word();
-                       if (position != 1)
-                       {
-                               del_word();
-                               if (Blank_Line(curr_line->next_line))
-                                       insert_line(TRUE);
-                               else
-                                       adv_line();
-                               if ((*point == ' ') || (*point == '\t'))
-                                       adv_word();
-                               undel_word();
-                               not_blank = TRUE;
-                               if (position != 1)
-                                       bol();
-                               left(TRUE);
-                       }
-               }
-
-               if ((!Blank_Line(curr_line->next_line)) || (not_blank))
-               {
-                       adv_line();
-                       counter++;
-               }
-               else
-                       leave_loop = TRUE;
-       }
-
-/*
- |     go back to begin of paragraph, put cursor back to original position
- */
-
-       if (position != 1)
-               bol();
-       while ((counter-- > 0) || (!Blank_Line(curr_line->prev_line)))
-               bol();
-
-/*
- |     find word cursor was in
- */
-
-       status = TRUE;
-       while ((status) && (string_count > 0))
-       {
-               status = search(FALSE);
-               string_count--;
-       }
-
-/*
- |     offset the cursor to where it was before from the start of the word
- */
-
-       while (offset > 0)
-       {
-               offset--;
-               right(TRUE);
-       }
-
-       if ((string_count > 0) && (offset < 0))
-       {
-               while (offset < 0)
-               {
-                       offset++;
-                       left(TRUE);
-               }
-       }
-
-/*
- |     reset flags and strings to what they were before formatting
- */
-
-       if (d_word != NULL)
-               free(d_word);
-       d_word = temp_dword;
-       d_wrd_len = temp_dwl;
-       case_sen = temp_case;
-       free(srch_str);
-       srch_str = tmp_srchstr;
-       d_char[0] = temp_d_char[0];
-       d_char[1] = temp_d_char[1];
-       d_char[2] = temp_d_char[2];
-       auto_format = TRUE;
-       dlt_line->line_length = tmp_d_line_length;
-       d_line = tmp_d_line;
-
-       formatted = TRUE;
-       midscreen(scr_vert, point);
-}
-
-void 
-modes_op(void)
-{
-       int ret_value;
-       int counter;
-       char *string;
-
-       do
-       {
-               sprintf(modes_menu[1].item_string, "%s %s", mode_strings[1], 
-                                       (expand_tabs ? ON : OFF));
-               sprintf(modes_menu[2].item_string, "%s %s", mode_strings[2], 
-                                       (case_sen ? ON : OFF));
-               sprintf(modes_menu[3].item_string, "%s %s", mode_strings[3], 
-                                       (observ_margins ? ON : OFF));
-               sprintf(modes_menu[4].item_string, "%s %s", mode_strings[4], 
-                                       (auto_format ? ON : OFF));
-               sprintf(modes_menu[5].item_string, "%s %s", mode_strings[5], 
-                                       (eightbit ? ON : OFF));
-               sprintf(modes_menu[6].item_string, "%s %s", mode_strings[6], 
-                                       (info_window ? ON : OFF));
-               sprintf(modes_menu[7].item_string, "%s %s", mode_strings[7], 
-                                       (emacs_keys_mode ? ON : OFF));
-               sprintf(modes_menu[8].item_string, "%s %d", mode_strings[8], 
-                                       right_margin);
-               sprintf(modes_menu[9].item_string, "%s %s", mode_strings[9], 
-                                       (ee_chinese ? ON : OFF));
-
-               ret_value = menu_op(modes_menu);
-
-               switch (ret_value) 
-               {
-                       case 1:
-                               expand_tabs = !expand_tabs;
-                               break;
-                       case 2:
-                               case_sen = !case_sen;
-                               break;
-                       case 3:
-                               observ_margins = !observ_margins;
-                               break;
-                       case 4:
-                               auto_format = !auto_format;
-                               if (auto_format)
-                                       observ_margins = TRUE;
-                               break;
-                       case 5:
-                               eightbit = !eightbit;
-                               if (!eightbit)
-                                       ee_chinese = FALSE;
-#ifdef NCURSE
-                               if (ee_chinese)
-                                       nc_setattrib(A_NC_BIG5);
-                               else
-                                       nc_clearattrib(A_NC_BIG5);
-#endif /* NCURSE */
-
-                               redraw();
-                               wnoutrefresh(text_win);
-                               break;
-                       case 6:
-                               if (info_window)
-                                       no_info_window();
-                               else
-                                       create_info_window();
-                               break;
-                       case 7:
-                               emacs_keys_mode = !emacs_keys_mode;
-                               if (info_window)
-                                       paint_info_win();
-                               break;
-                       case 8:
-                               string = get_string(margin_prompt, TRUE);
-                               if (string != NULL)
-                               {
-                                       counter = atoi(string);
-                                       if (counter > 0)
-                                               right_margin = counter;
-                                       free(string);
-                               }
-                               break;
-                       case 9:
-                               ee_chinese = !ee_chinese;
-                               if (ee_chinese != FALSE)
-                                       eightbit = TRUE;
-#ifdef NCURSE
-                               if (ee_chinese)
-                                       nc_setattrib(A_NC_BIG5);
-                               else
-                                       nc_clearattrib(A_NC_BIG5);
-#endif /* NCURSE */
-                               redraw();
-                               break;
-                       default:
-                               break;
-               }
-       }
-       while (ret_value != 0);
-}
-
-char *
-is_in_string(char *string, char *substring)
-/* a strchr() look-alike for systems without strchr() */
-{
-       char *full, *sub;
-
-       for (sub = substring; (sub != NULL) && (*sub != 0); sub++)
-       {
-               for (full = string; (full != NULL) && (*full != 0);
-                               full++)
-               {
-                       if (*sub == *full)
-                               return(full);
-               }
-       }
-       return(NULL);
-}
-
-/*
- |     handle names of the form "~/file", "~user/file", 
- |     "$HOME/foo", "~/$FOO", etc.
- */
-
-char *
-resolve_name(char *name)
-{
-       char long_buffer[1024];
-       char short_buffer[128];
-       char *buffer;
-       char *slash;
-       char *tmp;
-       char *start_of_var;
-       int offset;
-       int index;
-       int counter;
-       struct passwd *user;
-
-       if (name[0] == '~') 
-       {
-               if (name[1] == '/')
-               {
-                       index = getuid();
-                       user = (struct passwd *) getpwuid(index);
-                       slash = name + 1;
-               }
-               else
-               {
-                       slash = strchr(name, '/');
-                       if (slash == NULL) 
-                               return(name);
-                       *slash = 0;
-                       user = (struct passwd *) getpwnam((name + 1));
-                       *slash = '/';
-               }
-               if (user == NULL) 
-               {
-                       return(name);
-               }
-               buffer = malloc(strlen(user->pw_dir) + strlen(slash) + 1);
-               strcpy(buffer, user->pw_dir);
-               strcat(buffer, slash);
-       }
-       else
-               buffer = name;
-
-       if (is_in_string(buffer, "$"))
-       {
-               tmp = buffer;
-               index = 0;
-               
-               while ((*tmp != 0) && (index < 1024))
-               {
-
-                       while ((*tmp != 0) && (*tmp != '$') &&
-                               (index < 1024))
-                       {
-                               long_buffer[index] = *tmp;
-                               tmp++;
-                               index++;
-                       }
-
-                       if ((*tmp == '$') && (index < 1024))
-                       {
-                               counter = 0;
-                               start_of_var = tmp;
-                               tmp++;
-                               if (*tmp == '{') /* } */        /* bracketed variable name */
-                               {
-                                       tmp++;                          /* { */
-                                       while ((*tmp != 0) &&
-                                               (*tmp != '}') && 
-                                               (counter < 128))
-                                       {
-                                               short_buffer[counter] = *tmp;
-                                               counter++;
-                                               tmp++;
-                                       }                       /* { */
-                                       if (*tmp == '}')
-                                               tmp++;
-                               }
-                               else
-                               {
-                                       while ((*tmp != 0) &&
-                                              (*tmp != '/') && 
-                                              (*tmp != '$') && 
-                                              (counter < 128))
-                                       {
-                                               short_buffer[counter] = *tmp;
-                                               counter++;
-                                               tmp++;
-                                       }
-                               }
-                               short_buffer[counter] = 0;
-                               if ((slash = getenv(short_buffer)) != NULL)
-                               {
-                                       offset = strlen(slash);
-                                       if ((offset + index) < 1024)
-                                               strcpy(&long_buffer[index], slash);
-                                       index += offset;
-                               }
-                               else
-                               {
-                                       while ((start_of_var != tmp) && (index < 1024))
-                                       {
-                                               long_buffer[index] = *start_of_var;
-                                               start_of_var++;
-                                               index++;
-                                       }
-                               }
-                       }
-               }
-
-               if (index == 1024)
-                       return(buffer);
-               else
-                       long_buffer[index] = 0;
-
-               if (name != buffer)
-                       free(buffer);
-               buffer = malloc(index + 1);
-               strcpy(buffer, long_buffer);
-       }
-
-       return(buffer);
-}
-
-int
-restrict_mode(void)
-{
-       if (!restricted)
-               return(FALSE);
-
-       wmove(com_win, 0, 0);
-       wprintw(com_win, restricted_msg);
-       wclrtoeol(com_win);
-       wrefresh(com_win);
-       clear_com_win = TRUE;
-       return(TRUE);
-}
-
-/*
- |     The following routine tests the input string against the list of 
- |     strings, to determine if the string is a unique match with one of the 
- |     valid values.
- */
-
-int 
-unique_test(char *string, char **list)
-{
-       int counter;
-       int num_match;
-       int result;
-
-       num_match = 0;
-       counter = 0;
-       while (list[counter] != NULL)
-       {
-               result = compare(string, list[counter], FALSE);
-               if (result)
-                       num_match++;
-               counter++;
-       }
-       return(num_match);
-}
-
-void
-renumber_lines(struct text *firstline, int startnumber)
-{
-       struct text *lineptr;
-       int i;
-       
-       i = startnumber;
-       for (lineptr = firstline; lineptr != NULL; lineptr = lineptr->next_line)
-               lineptr->line_number = i++;
-}
-
-#ifndef NO_CATGETS
-/*
- |     Get the catalog entry, and if it got it from the catalog, 
- |     make a copy, since the buffer will be overwritten by the 
- |     next call to catgets().
- */
-
-char *
-catgetlocal(int number, char *string)
-{
-       char *temp1;
-       char *temp2;
-
-       temp1 = catgets(catalog, 1, number, string);
-       if (temp1 != string)
-       {
-               temp2 = malloc(strlen(temp1) + 1);
-               strcpy(temp2, temp1);
-               temp1 = temp2;
-       }
-       return(temp1);
-}
-#endif /* NO_CATGETS */
-
-/*
- |     The following is to allow for using message catalogs which allow 
- |     the software to be 'localized', that is, to use different languages 
- |     all with the same binary.  For more information, see your system 
- |     documentation, or the X/Open Internationalization Guide.
- */
-
-void 
-strings_init(void)
-{
-       int counter;
-
-#ifndef NO_CATGETS
-       setlocale(LC_ALL, "");
-       catalog = catopen("ee", NL_CAT_LOCALE);
-#endif /* NO_CATGETS */
-
-       modes_menu[0].item_string = catgetlocal( 1, "modes menu");
-       mode_strings[1]  = catgetlocal( 2, "tabs to spaces       "); 
-       mode_strings[2]  = catgetlocal( 3, "case sensitive search"); 
-       mode_strings[3]  = catgetlocal( 4, "margins observed     "); 
-       mode_strings[4]  = catgetlocal( 5, "auto-paragraph format"); 
-       mode_strings[5]  = catgetlocal( 6, "eightbit characters  "); 
-       mode_strings[6]  = catgetlocal( 7, "info window          "); 
-       mode_strings[8]  = catgetlocal( 8, "right margin         ");
-       leave_menu[0].item_string  = catgetlocal( 9, "leave menu");
-       leave_menu[1].item_string  = catgetlocal( 10, "save changes");
-       leave_menu[2].item_string  = catgetlocal( 11, "no save");
-       file_menu[0].item_string  = catgetlocal( 12, "file menu");
-       file_menu[1].item_string  = catgetlocal( 13, "read a file");
-       file_menu[2].item_string  = catgetlocal( 14, "write a file");
-       file_menu[3].item_string  = catgetlocal( 15, "save file");
-       file_menu[4].item_string  = catgetlocal( 16, "print editor contents");
-       search_menu[0].item_string = catgetlocal( 17, "search menu");
-       search_menu[1].item_string = catgetlocal( 18, "search for ...");
-       search_menu[2].item_string = catgetlocal( 19, "search");
-       spell_menu[0].item_string = catgetlocal( 20, "spell menu");
-       spell_menu[1].item_string = catgetlocal( 21, "use 'spell'");
-       spell_menu[2].item_string = catgetlocal( 22, "use 'ispell'");
-       misc_menu[0].item_string = catgetlocal( 23, "miscellaneous menu");
-       misc_menu[1].item_string = catgetlocal( 24, "format paragraph");
-       misc_menu[2].item_string = catgetlocal( 25, "shell command");
-       misc_menu[3].item_string = catgetlocal( 26, "check spelling");
-       main_menu[0].item_string  = catgetlocal( 27, "main menu");
-       main_menu[1].item_string  = catgetlocal( 28, "leave editor");
-       main_menu[2].item_string  = catgetlocal( 29, "help");
-       main_menu[3].item_string  = catgetlocal( 30, "file operations");
-       main_menu[4].item_string  = catgetlocal( 31, "redraw screen");
-       main_menu[5].item_string  = catgetlocal( 32, "settings");
-       main_menu[6].item_string  = catgetlocal( 33, "search");
-       main_menu[7].item_string  = catgetlocal( 34, "miscellaneous");
-       help_text[0] = catgetlocal( 35, "Control keys:                                                              "); 
-       help_text[1] = catgetlocal( 36, "^a ascii code           ^i tab                  ^r right                   ");
-       help_text[2] = catgetlocal( 37, "^b bottom of text       ^j newline              ^t top of text             ");
-       help_text[3] = catgetlocal( 38, "^c command              ^k delete char          ^u up                      ");
-       help_text[4] = catgetlocal( 39, "^d down                 ^l left                 ^v undelete word           ");
-       help_text[5] = catgetlocal( 40, "^e search prompt        ^m newline              ^w delete word             ");
-       help_text[6] = catgetlocal( 41, "^f undelete char        ^n next page            ^x search                  ");
-       help_text[7] = catgetlocal( 42, "^g begin of line        ^o end of line          ^y delete line             ");
-       help_text[8] = catgetlocal( 43, "^h backspace            ^p prev page            ^z undelete line           ");
-       help_text[9] = catgetlocal( 44, "^[ (escape) menu        ESC-Enter: exit ee                                 ");
-       help_text[10] = catgetlocal( 45, "                                                                           ");
-       help_text[11] = catgetlocal( 46, "Commands:                                                                  ");
-       help_text[12] = catgetlocal( 47, "help    : get this info                 file    : print file name          ");
-       help_text[13] = catgetlocal( 48, "read    : read a file                   char    : ascii code of char       ");
-       help_text[14] = catgetlocal( 49, "write   : write a file                  case    : case sensitive search    ");
-       help_text[15] = catgetlocal( 50, "exit    : leave and save                nocase  : case insensitive search  ");
-       help_text[16] = catgetlocal( 51, "quit    : leave, no save                !cmd    : execute \"cmd\" in shell   ");
-       help_text[17] = catgetlocal( 52, "line    : display line #                0-9     : go to line \"#\"           ");
-       help_text[18] = catgetlocal( 53, "expand  : expand tabs                   noexpand: do not expand tabs         ");
-       help_text[19] = catgetlocal( 54, "                                                                             ");
-       help_text[20] = catgetlocal( 55, "  ee [+#] [-i] [-e] [-h] [file(s)]                                            ");
-       help_text[21] = catgetlocal( 56, "+# :go to line #  -i :no info window  -e : don't expand tabs  -h :no highlight");
-       control_keys[0] = catgetlocal( 57, "^[ (escape) menu  ^e search prompt  ^y delete line    ^u up     ^p prev page  ");
-       control_keys[1] = catgetlocal( 58, "^a ascii code     ^x search         ^z undelete line  ^d down   ^n next page  ");
-       control_keys[2] = catgetlocal( 59, "^b bottom of text ^g begin of line  ^w delete word    ^l left                 ");
-       control_keys[3] = catgetlocal( 60, "^t top of text    ^o end of line    ^v undelete word  ^r right                ");
-       control_keys[4] = catgetlocal( 61, "^c command        ^k delete char    ^f undelete char      ESC-Enter: exit ee  ");
-       command_strings[0] = catgetlocal( 62, "help : get help info  |file  : print file name         |line : print line # ");
-       command_strings[1] = catgetlocal( 63, "read : read a file    |char  : ascii code of char      |0-9 : go to line \"#\"");
-       command_strings[2] = catgetlocal( 64, "write: write a file   |case  : case sensitive search   |exit : leave and save ");
-       command_strings[3] = catgetlocal( 65, "!cmd : shell \"cmd\"    |nocase: ignore case in search   |quit : leave, no save");
-       command_strings[4] = catgetlocal( 66, "expand: expand tabs   |noexpand: do not expand tabs                           ");
-       com_win_message = catgetlocal( 67, "    press Escape (^[) for menu");
-       no_file_string = catgetlocal( 68, "no file");
-       ascii_code_str = catgetlocal( 69, "ascii code: ");
-       printer_msg_str = catgetlocal( 70, "sending contents of buffer to \"%s\" ");
-       command_str = catgetlocal( 71, "command: ");
-       file_write_prompt_str = catgetlocal( 72, "name of file to write: ");
-       file_read_prompt_str = catgetlocal( 73, "name of file to read: ");
-       char_str = catgetlocal( 74, "character = %d");
-       unkn_cmd_str = catgetlocal( 75, "unknown command \"%s\"");
-       non_unique_cmd_msg = catgetlocal( 76, "entered command is not unique");
-       line_num_str = catgetlocal( 77, "line %d  ");
-       line_len_str = catgetlocal( 78, "length = %d");
-       current_file_str = catgetlocal( 79, "current file is \"%s\" ");
-       usage0 = catgetlocal( 80, "usage: %s [-i] [-e] [-h] [+line_number] [file(s)]\n");
-       usage1 = catgetlocal( 81, "       -i   turn off info window\n");
-       usage2 = catgetlocal( 82, "       -e   do not convert tabs to spaces\n");
-       usage3 = catgetlocal( 83, "       -h   do not use highlighting\n");
-       file_is_dir_msg = catgetlocal( 84, "file \"%s\" is a directory");
-       new_file_msg = catgetlocal( 85, "new file \"%s\"");
-       cant_open_msg = catgetlocal( 86, "can't open \"%s\"");
-       open_file_msg = catgetlocal( 87, "file \"%s\", %d lines");
-       file_read_fin_msg = catgetlocal( 88, "finished reading file \"%s\"");
-       reading_file_msg = catgetlocal( 89, "reading file \"%s\"");
-       read_only_msg = catgetlocal( 90, ", read only");
-       file_read_lines_msg = catgetlocal( 91, "file \"%s\", %d lines");
-       save_file_name_prompt = catgetlocal( 92, "enter name of file: ");
-       file_not_saved_msg = catgetlocal( 93, "no filename entered: file not saved");
-       changes_made_prompt = catgetlocal( 94, "changes have been made, are you sure? (y/n [n]) ");
-       yes_char = catgetlocal( 95, "y");
-       file_exists_prompt = catgetlocal( 96, "file already exists, overwrite? (y/n) [n] ");
-       create_file_fail_msg = catgetlocal( 97, "unable to create file \"%s\"");
-       writing_file_msg = catgetlocal( 98, "writing file \"%s\"");
-       file_written_msg = catgetlocal( 99, "\"%s\" %d lines, %d characters");
-       searching_msg = catgetlocal( 100, "           ...searching");
-       str_not_found_msg = catgetlocal( 101, "string \"%s\" not found");
-       search_prompt_str = catgetlocal( 102, "search for: ");
-       exec_err_msg = catgetlocal( 103, "could not exec %s");
-       continue_msg = catgetlocal( 104, "press return to continue ");
-       menu_cancel_msg = catgetlocal( 105, "press Esc to cancel");
-       menu_size_err_msg = catgetlocal( 106, "menu too large for window");
-       press_any_key_msg = catgetlocal( 107, "press any key to continue ");
-       shell_prompt = catgetlocal( 108, "shell command: ");
-       formatting_msg = catgetlocal( 109, "...formatting paragraph...");
-       shell_echo_msg = catgetlocal( 110, "<!echo 'list of unrecognized words'; echo -=-=-=-=-=-");
-       spell_in_prog_msg = catgetlocal( 111, "sending contents of edit buffer to 'spell'");
-       margin_prompt = catgetlocal( 112, "right margin is: ");
-       restricted_msg = catgetlocal( 113, "restricted mode: unable to perform requested operation");
-       ON = catgetlocal( 114, "ON");
-       OFF = catgetlocal( 115, "OFF");
-       HELP = catgetlocal( 116, "HELP");
-       WRITE = catgetlocal( 117, "WRITE");
-       READ = catgetlocal( 118, "READ");
-       LINE = catgetlocal( 119, "LINE");
-       FILE_str = catgetlocal( 120, "FILE");
-       CHARACTER = catgetlocal( 121, "CHARACTER");
-       REDRAW = catgetlocal( 122, "REDRAW");
-       RESEQUENCE = catgetlocal( 123, "RESEQUENCE");
-       AUTHOR = catgetlocal( 124, "AUTHOR");
-       VERSION = catgetlocal( 125, "VERSION");
-       CASE = catgetlocal( 126, "CASE");
-       NOCASE = catgetlocal( 127, "NOCASE");
-       EXPAND = catgetlocal( 128, "EXPAND");
-       NOEXPAND = catgetlocal( 129, "NOEXPAND");
-       Exit_string = catgetlocal( 130, "EXIT");
-       QUIT_string = catgetlocal( 131, "QUIT");
-       INFO = catgetlocal( 132, "INFO");
-       NOINFO = catgetlocal( 133, "NOINFO");
-       MARGINS = catgetlocal( 134, "MARGINS");
-       NOMARGINS = catgetlocal( 135, "NOMARGINS");
-       AUTOFORMAT = catgetlocal( 136, "AUTOFORMAT");
-       NOAUTOFORMAT = catgetlocal( 137, "NOAUTOFORMAT");
-       Echo = catgetlocal( 138, "ECHO");
-       PRINTCOMMAND = catgetlocal( 139, "PRINTCOMMAND");
-       RIGHTMARGIN = catgetlocal( 140, "RIGHTMARGIN");
-       HIGHLIGHT = catgetlocal( 141, "HIGHLIGHT");
-       NOHIGHLIGHT = catgetlocal( 142, "NOHIGHLIGHT");
-       EIGHTBIT = catgetlocal( 143, "EIGHTBIT");
-       NOEIGHTBIT = catgetlocal( 144, "NOEIGHTBIT");
-       /*
-        |      additions
-        */
-       mode_strings[7] = catgetlocal( 145, "emacs key bindings   ");
-       emacs_help_text[0] = help_text[0];
-       emacs_help_text[1] = catgetlocal( 146, "^a beginning of line    ^i tab                  ^r restore word            ");
-       emacs_help_text[2] = catgetlocal( 147, "^b back 1 char          ^j undel char           ^t begin of file           ");
-       emacs_help_text[3] = catgetlocal( 148, "^c command              ^k delete line          ^u end of file             ");
-       emacs_help_text[4] = catgetlocal( 149, "^d delete char          ^l undelete line        ^v next page               ");
-       emacs_help_text[5] = catgetlocal( 150, "^e end of line          ^m newline              ^w delete word             ");
-       emacs_help_text[6] = catgetlocal( 151, "^f forward 1 char       ^n next line            ^x search                  ");
-       emacs_help_text[7] = catgetlocal( 152, "^g go back 1 page       ^o ascii char insert    ^y search prompt           ");
-       emacs_help_text[8] = catgetlocal( 153, "^h backspace            ^p prev line            ^z next word               ");
-       emacs_help_text[9] = help_text[9];
-       emacs_help_text[10] = help_text[10];
-       emacs_help_text[11] = help_text[11];
-       emacs_help_text[12] = help_text[12];
-       emacs_help_text[13] = help_text[13];
-       emacs_help_text[14] = help_text[14];
-       emacs_help_text[15] = help_text[15];
-       emacs_help_text[16] = help_text[16];
-       emacs_help_text[17] = help_text[17];
-       emacs_help_text[18] = help_text[18];
-       emacs_help_text[19] = help_text[19];
-       emacs_help_text[20] = help_text[20];
-       emacs_help_text[21] = help_text[21];
-       emacs_control_keys[0] = catgetlocal( 154, "^[ (escape) menu ^y search prompt ^k delete line    ^p prev line  ^g prev page");
-       emacs_control_keys[1] = catgetlocal( 155, "^o ascii code    ^x search        ^l undelete line  ^n next line  ^v next page");
-       emacs_control_keys[2] = catgetlocal( 156, "^u end of file   ^a begin of line ^w delete word    ^b back char  ^z next word");
-       emacs_control_keys[3] = catgetlocal( 157, "^t begin of file ^e end of line   ^r restore word   ^f forward char           ");
-       emacs_control_keys[4] = catgetlocal( 158, "^c command       ^d delete char   ^j undelete char              ESC-Enter: exit");
-       EMACS_string = catgetlocal( 159, "EMACS");
-       NOEMACS_string = catgetlocal( 160, "NOEMACS");
-       usage4 = catgetlocal( 161, "       +#   put cursor at line #\n");
-       conf_dump_err_msg = catgetlocal( 162, "unable to open .init.ee for writing, no configuration saved!");
-       conf_dump_success_msg = catgetlocal( 163, "ee configuration saved in file %s");
-       modes_menu[10].item_string = catgetlocal( 164, "save editor configuration");
-       config_dump_menu[0].item_string = catgetlocal( 165, "save ee configuration");
-       config_dump_menu[1].item_string = catgetlocal( 166, "save in current directory");
-       config_dump_menu[2].item_string = catgetlocal( 167, "save in home directory");
-       conf_not_saved_msg = catgetlocal( 168, "ee configuration not saved");
-       ree_no_file_msg = catgetlocal( 169, "must specify a file when invoking ree");
-       menu_too_lrg_msg = catgetlocal( 180, "menu too large for window");
-       more_above_str = catgetlocal( 181, "^^more^^");
-       more_below_str = catgetlocal( 182, "VVmoreVV");
-       mode_strings[9] = catgetlocal( 183, "16 bit characters    ");
-       chinese_cmd = catgetlocal( 184, "16BIT");
-       nochinese_cmd = catgetlocal( 185, "NO16BIT");
-
-       commands[0] = HELP;
-       commands[1] = WRITE;
-       commands[2] = READ;
-       commands[3] = LINE;
-       commands[4] = FILE_str;
-       commands[5] = REDRAW;
-       commands[6] = RESEQUENCE;
-       commands[7] = AUTHOR;
-       commands[8] = VERSION;
-       commands[9] = CASE;
-       commands[10] = NOCASE;
-       commands[11] = EXPAND;
-       commands[12] = NOEXPAND;
-       commands[13] = Exit_string;
-       commands[14] = QUIT_string;
-       commands[15] = "<";
-       commands[16] = ">";
-       commands[17] = "!";
-       commands[18] = "0";
-       commands[19] = "1";
-       commands[20] = "2";
-       commands[21] = "3";
-       commands[22] = "4";
-       commands[23] = "5";
-       commands[24] = "6";
-       commands[25] = "7";
-       commands[26] = "8";
-       commands[27] = "9";
-       commands[28] = CHARACTER;
-       commands[29] = chinese_cmd;
-       commands[30] = nochinese_cmd;
-       commands[31] = NULL;
-       init_strings[0] = CASE;
-       init_strings[1] = NOCASE;
-       init_strings[2] = EXPAND;
-       init_strings[3] = NOEXPAND;
-       init_strings[4] = INFO;
-       init_strings[5] = NOINFO;
-       init_strings[6] = MARGINS;
-       init_strings[7] = NOMARGINS;
-       init_strings[8] = AUTOFORMAT;
-       init_strings[9] = NOAUTOFORMAT;
-       init_strings[10] = Echo;
-       init_strings[11] = PRINTCOMMAND;
-       init_strings[12] = RIGHTMARGIN;
-       init_strings[13] = HIGHLIGHT;
-       init_strings[14] = NOHIGHLIGHT;
-       init_strings[15] = EIGHTBIT;
-       init_strings[16] = NOEIGHTBIT;
-       init_strings[17] = EMACS_string;
-       init_strings[18] = NOEMACS_string;
-       init_strings[19] = chinese_cmd;
-       init_strings[20] = nochinese_cmd;
-       init_strings[21] = NULL;
-
-       /*
-        |      allocate space for strings here for settings menu
-        */
-
-       for (counter = 1; counter < NUM_MODES_ITEMS; counter++)
-       {
-               modes_menu[counter].item_string = malloc(80);
-       }
-
-#ifndef NO_CATGETS
-       catclose(catalog);
-#endif /* NO_CATGETS */
-}
-
diff --git a/usr.bin/ee/ee.i18n.guide b/usr.bin/ee/ee.i18n.guide
deleted file mode 100644 (file)
index 24ee33e..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-$FreeBSD: src/usr.bin/ee/ee.i18n.guide,v 1.1.1.1.8.1 2001/06/10 11:06:06 sobomax Exp $
-$DragonFly: src/usr.bin/ee/ee.i18n.guide,v 1.2 2003/06/17 04:29:26 dillon Exp $
-
-Easy Editor ("ee") provides the ability to translate the messages 
-displayed to the user and the commands entered.  This is done via message 
-catalogs, following X/Open standards.  ee supports eight bit characters, 
-as well as 16-bit characters.  The Chinese Big 5 code set is the 16-bit 
-code set that ee was modified to handle, as it is relatively easy to 
-support since two byte characters also take up two columns on the screen, 
-thereby simplifying the screen position calculations.  Other multibyte 
-code sets may function, but have not been tested. 
-
-(The name ee.i18n.guide is for "ee internationalization guide".  The i18n 
-abbreviation is used because there are 18 characters between the first 
-letter ("i") and last ("n") of "internationalization".) 
-
-All of the messages, warnings, information, and commands, are contained 
-in the message catalog.  Each numbered entry represents an individual 
-string used by ee.  Some strings contain formatting information for 
-formatted print statements, which are of the form "%s", or "%d", these 
-must be preserved in the translation, or the correct information will not 
-be displayed.  For those strings containing multiple formatting codes, 
-the order of each item must be preserved as well. 
-
-Message                content 
-1              title for modes, or settings menu
-2 - 8          entries for modes menu, each line should be the same length 
-                (padded with spaces)
-9 - 34         other menu titles and entries
-35 - 56        help screen 
-57 - 61        actions assigned to control keys 
-62 - 66        commands information 
-67             message displayed when info window turned off
-68             indication that no file name was entered when invoking ee
-69             prompt for decimal value of character to be entered
-70             message displaying the print command being invoked
-71             prompt for command 
-72             prompt for name of file to be written 
-73             prompt for name of file to be read 
-74             string used to display the decimal value of the character 
-                the cursor is on 
-75             string displaying an unrecognized command 
-76             string indicating that the command entered is not a unique 
-                substring of a valid command
-77             string indicating the current line number 
-78             string for displaying the length of the line 
-79             string for displaying the name of the file 
-80 - 83                strings showing how to invoke ee, and its options
-84             message indicating that the file entered is a directory, not a 
-                text file
-85             message informing that the entered file does not yet exist 
-86             message informing that the file can't be opened (because of 
-                permission problems)
-87             message after file has been read with the file name and number 
-                of lines read
-88             message indicating that the file has been read
-89             message indicating that the file is being read
-90             message indicating that permissions only allow the file to be 
-                read, not written
-91             message after file has been read with the file name and number 
-                of lines read
-92             prompt for name of file to be saved (used when no name was 
-                entered for a file to edit)
-93             message indicating that the file was not written, since no 
-                name was entered at the prompt
-94             prompt asking user if changes should not be saved ("yes_char" 
-                will be expected for affirmative response)
-95             "yes" character, single character expected to confirm action 
-                (can be upper or lower case, will be converted to upper-case 
-                during test)
-96             prompt
-97             error message
-98             message indicating that the named file is being written
-99             message indicating the name of the file written, the number of 
-                lines, and the number of characters (order of items must be 
-                maintained)
-100            search in progress message
-101            message that the string was not found
-102            prompt for search
-103            message that string could not be executed
-104            self-explanatory
-105            message for menus, indicating that the Escape character will 
-                allow the user to exit the menu
-106            error message indicating the menu won't fit on the screen
-107            self-explanatory
-108            prompt for shell command
-109            message displayed while formatting a paragraph
-110            string which places message for spell checking at top of 
-                buffer (the portions 'list of unrecognized words' and 
-                '-=-=-=-=-=-' may be replaced, but the rest must remain the 
-                same)
-111            message informing that spell checking is in progress
-112            prompt for right margin
-113            error informing user that operation is not permitted in ree
-114            string indicating mode is turned 'on' in modes menu
-115            string indicating mode is turned 'off' in modes menu
-116 - 131      strings used for commands (some also used for initialization)
-132 - 144      strings used for initialization
-145            entry for settings menu for emacs key bindings settings
-146 - 153      help screen entries for emacs key bindings info
-154 - 158      info window entries for emacs key bindings info
-159            string for turning on emacs key bindings in the init file
-160            string for turning off emacs key bindings in the init file
-161            fifth line of usage statement
-162            error message when unable to save configuration file
-163            positive feedback about saving the configuration file
-164 - 167      menu items for saving editor configuration
-168            error message when unable to save configuration file
-169            error message for ree when not specifying the file
-180            self-explanatory
-181 - 182      indicators of more information in menu (for when scrolling 
-                menus because menu contents won't fit vertically on screen)
-183            menu entry for modes menu for 16 bit characters
-184 - 185      strings for initialization to turn on or off 16 bit 
-               character handling
-
-Care should be taken when translating commands and initialization keywords 
-because the algorithm used for detecting uniqueness of entered commands 
-will not be able to distinguish words that are not unique before the end 
-of the shorter word, for example, it would not be able to distinguish the 
-command 'abcd' from 'abcde'.
-
-After translating the messages, use the 'gencat' command to create the compiled 
-catalog used when running the software.  The standard syntax would be:
-
-       gencat ee.cat ee.msg
-
-Where ee.msg is the file containing the translations, and ee.cat is the 
-compiled catalog.  If the file ee.cat does not exist, it will be created.  
-Check the documentation for your system for proper syntax.  
-
-Message catalog placement varies from system to system.  A common location 
-for message catalogs is in /usr/lib/nls.  In this directory are 
-directories with the names of other languages.  The default language is 
-'C'.  There is also an environment variable, named NLSPATH used to 
-determine where message catalogs can be found.  This variable is similar 
-to the PATH variable used for commands, but with some differences.  The 
-NLSPATH variable must have the ability to handle different names for 
-languages and the catalog files, so it has field descriptors for these.  A 
-typical setting for NLSPATH could be:
-
-       NLSPATH=/usr/lib/nls/%L/%N.cat:/usr/local/lib/nls/%L/%N.cat
-
-Where "%L" is the field descriptor for the language (obtained from the 
-LANG environment variable) and "%N" is the name of the file (with the 
-".cat" appended by the path variable, it is not passed from the requesting 
-program).  The colon (:) is used to separate paths, so in the above 
-example there are two paths possible for message catalogs.  You may wish 
-to maintain catalogs for applications that are not supported by your 
-system vendor in a location unique for you, and this is facilitated by the 
-NLSPATH variable.  Remember to set and export both the LANG and NLSPATH 
-variables for each user that expects to use localization either in a 
-system-wide profile or in each user's profile.  See your system 
-documentation for more information.
-
-The message catalog supplied with ee also uses the '$quote' directive to 
-specify a quote around strings to ensure proper padding.  This directive 
-may not be supported on all systems, and lead to quotes being included in 
-the string used in ee, which will cause incorrect behavior.  If the 
-'$quote' directive is not supported by your system's gencat command, edit 
-the msg file to remove the leading and trailing quotation marks.
index 87462f8..f88f3cc 100644 (file)
@@ -3,8 +3,7 @@ $ ee.i18n.guide for more information
 $ 
 $ For ee patchlevel 3
 $ 
-$ $FreeBSD: src/usr.bin/ee/nls/de_DE.ISO8859-1/ee.msg,v 1.9.2.1 2002/01/05 15:47:13 phantom Exp $
-$ $DragonFly: src/usr.bin/ee/nls/de_DE.ISO8859-1/ee.msg,v 1.3 2003/10/05 16:51:38 drhodus Exp $
+$ $FreeBSD: head/usr.bin/ee/nls/de_DE.ISO8859-1/ee.msg 192914 2009-05-27 17:27:03Z ed $
 $ 
 $ 
 $set 1
@@ -111,7 +110,7 @@ $quote "
 100 "           ...Suche läuft"
 101 "Zeichenfolge \"%s\" nicht gefunden"
 102 "Suchen nach: "
-103 "Kann %s nicht ausführen"
+103 "Kann %s nicht ausführen\n"
 104 "Bitte die Eingabetaste drücken "
 105 "Escape zum Beenden"
 106 "Menü ist zu groß für das Fenster"
diff --git a/usr.bin/ee/nls/en_US.US-ASCII/ee.msg b/usr.bin/ee/nls/en_US.US-ASCII/ee.msg
deleted file mode 100644 (file)
index d210bf8..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-$ This file contains the messages for ee ("easy editor").  See the file 
-$ ee.i18n.guide for more information
-$ 
-$ For ee patchlevel 3
-$ 
-$ $FreeBSD: src/usr.bin/ee/nls/en_US.US-ASCII/ee.msg,v 1.7.2.1 2002/01/05 15:47:13 phantom Exp $
-$ $DragonFly: src/usr.bin/ee/nls/en_US.US-ASCII/ee.msg,v 1.3 2003/10/05 16:51:38 drhodus Exp $
-$ 
-$ 
-$set 1
-$quote "
-1 "modes menu"
-2 "tabs to spaces       " 
-3 "case sensitive search" 
-4 "margins observed     " 
-5 "auto-paragraph format" 
-6 "eightbit characters  " 
-7 "info window          " 
-8 "right margin         "
-9 "leave menu"
-10 "save changes"
-11 "no save"
-12 "file menu"
-13 "read a file"
-14 "write a file"
-15 "save file"
-16 "print editor contents"
-17 "search menu"
-18 "search for ..."
-19 "search"
-20 "spell menu"
-21 "use 'spell'"
-22 "use 'ispell'"
-23 "miscellaneous menu"
-24 "format paragraph"
-25 "shell command"
-26 "check spelling"
-27 "main menu"
-28 "leave editor"
-29 "help"
-30 "file operations"
-31 "redraw screen"
-32 "settings"
-33 "search"
-34 "miscellaneous"
-35 "Control keys:                                                              " 
-36 "^a ascii code           ^i tab                  ^r right                   "
-37 "^b bottom of text       ^j newline              ^t top of text             "
-38 "^c command              ^k delete char          ^u up                      "
-39 "^d down                 ^l left                 ^v undelete word           "
-40 "^e search prompt        ^m newline              ^w delete word             "
-41 "^f undelete char        ^n next page            ^x search                  "
-42 "^g begin of line        ^o end of line          ^y delete line             "
-43 "^h backspace            ^p prev page            ^z undelete line           "
-44 "^[ (escape) menu        ESC-Enter: exit ee                                 "
-45 "                                                                           "
-46 "Commands:                                                                  "
-47 "help    : get this info                 file    : print file name          "
-48 "read    : read a file                   char    : ascii code of char       "
-49 "write   : write a file                  case    : case sensitive search    "
-50 "exit    : leave and save                nocase  : case insensitive search  "
-51 "quit    : leave, no save                !cmd    : execute \"cmd\" in shell   "
-52 "line    : display line #                0-9     : go to line \"#\"           "
-53 "expand  : expand tabs                   noexpand: do not expand tabs         "
-54 "                                                                             "
-55 "  ee [+#] [-i] [-e] [-h] [file(s)]                                            "
-56 "+# :go to line #  -i :no info window  -e : don't expand tabs  -h :no highlight"
-57 "^[ (escape) menu  ^e search prompt  ^y delete line    ^u up     ^p prev page  "
-58 "^a ascii code     ^x search         ^z undelete line  ^d down   ^n next page  "
-59 "^b bottom of text ^g begin of line  ^w delete word    ^l left                 "
-60 "^t top of text    ^o end of line    ^v undelete word  ^r right                "
-61 "^c command        ^k delete char    ^f undelete char      ESC-Enter: exit ee  "
-62 "help : get help info  |file  : print file name         |line : print line # "
-63 "read : read a file    |char  : ascii code of char      |0-9 : go to line \"#\""
-64 "write: write a file   |case  : case sensitive search   |exit : leave and save "
-65 "!cmd : shell \"cmd\"    |nocase: ignore case in search   |quit : leave, no save"
-66 "expand: expand tabs   |noexpand: do not expand tabs                           "
-67 "    press Escape (^[) for menu"
-68 "no file"
-69 "ascii code: "
-70 "sending contents of buffer to \"%s\" "
-71 "command: "
-72 "name of file to write: "
-73 "name of file to read: "
-74 "character = %d"
-75 "unknown command \"%s\""
-76 "entered command is not unique"
-77 "line %d  "
-78 "length = %d"
-79 "current file is \"%s\" "
-80 "usage: %s [-i] [-e] [-h] [+line_number] [file(s)]\n"
-81 "       -i   turn off info window\n"
-82 "       -e   do not convert tabs to spaces\n"
-83 "       -h   do not use highlighting\n"
-84 "file \"%s\" is a directory"
-85 "new file \"%s\""
-86 "can't open \"%s\""
-87 "file \"%s\", %d lines"
-88 "finished reading file \"%s\""
-89 "reading file \"%s\""
-90 ", read only"
-91 "file \"%s\", %d lines"
-92 "enter name of file: "
-93 "no filename entered: file not saved"
-94 "changes have been made, are you sure? (y/n [n]) "
-95 "y"
-96 "file already exists, overwrite? (y/n) [n] "
-97 "unable to create file \"%s\""
-98 "writing file \"%s\""
-99 "\"%s\" %d lines, %d characters"
-100 "           ...searching"
-101 "string \"%s\" not found"
-102 "search for: "
-103 "could not exec %s"
-104 "press return to continue "
-105 "press Esc to cancel"
-106 "menu too large for window"
-107 "press any key to continue "
-108 "shell command: "
-109 "...formatting paragraph..."
-110 "<!echo 'list of unrecognized words'; echo -=-=-=-=-=-"
-111 "sending contents of edit buffer to 'spell'"
-112 "right margin is: "
-113 "restricted mode: unable to perform requested operation"
-114 "ON"
-115 "OFF"
-116 "HELP"
-117 "WRITE"
-118 "READ"
-119 "LINE"
-120 "FILE"
-121 "CHARACTER"
-122 "REDRAW"
-123 "RESEQUENCE"
-124 "AUTHOR"
-125 "VERSION"
-126 "CASE"
-127 "NOCASE"
-128 "EXPAND"
-129 "NOEXPAND"
-130 "EXIT"
-131 "QUIT"
-132 "INFO"
-133 "NOINFO"
-134 "MARGINS"
-135 "NOMARGINS"
-136 "AUTOFORMAT"
-137 "NOAUTOFORMAT"
-138 "ECHO"
-139 "PRINTCOMMAND"
-140 "RIGHTMARGIN"
-141 "HIGHLIGHT"
-142 "NOHIGHLIGHT"
-143 "EIGHTBIT"
-144 "NOEIGHTBIT"
-145 "emacs key bindings   "
-146 "^a beginning of line    ^i tab                  ^r restore word            "
-147 "^b back 1 char          ^j undel char           ^t begin of file           "
-148 "^c command              ^k delete line          ^u end of file             "
-149 "^d delete char          ^l undelete line        ^v next page               "
-150 "^e end of line          ^m newline              ^w delete word             "
-151 "^f forward 1 char       ^n next line            ^x search                  "
-152 "^g go back 1 page       ^o ascii char insert    ^y search prompt           "
-153 "^h backspace            ^p prev line            ^z next word               "
-154 "^[ (escape) menu  ^y search prompt  ^k delete line   ^p prev li   ^g prev page"
-155 "^o ascii code     ^x search         ^l undelete line ^n next li   ^v next page"
-156 "^u end of file    ^a begin of line  ^w delete word   ^b back 1 char           "
-157 "^t begin of file  ^e end of line    ^r restore word  ^f forward 1 char        "
-158 "^c command        ^d delete char    ^j undelete char ^z next word              "
-159 "EMACS"
-160 "NOEMACS"
-161 "       +#   put cursor at line #\n"
-162 "unable to open .init.ee for writing, no configuration saved!"
-163 "ee configuration saved in file %s"
-164 "save editor configuration"
-165 "save ee configuration"
-166 "save in current directory"
-167 "save in home directory"
-168 "ee configuration not saved"
-169 "must specify a file when invoking ree"
-180 "menu too large for window"
-181 "^^more^^"
-182 "VVmoreVV"
-183 "16 bit characters    "
-184 "16BIT"
-185 "NO16BIT"
index 7cb4602..4786135 100644 (file)
@@ -3,8 +3,7 @@ $ ee.i18n.guide for more information
 $ 
 $ For ee patchlevel 3
 $
-$ $FreeBSD: src/usr.bin/ee/nls/fr_FR.ISO8859-1/ee.msg,v 1.10.2.1 2002/01/05 15:47:14 phantom Exp $
-$ $DragonFly: src/usr.bin/ee/nls/fr_FR.ISO8859-1/ee.msg,v 1.3 2003/10/05 16:51:39 drhodus Exp $
+$ $FreeBSD: head/usr.bin/ee/nls/fr_FR.ISO8859-1/ee.msg 192914 2009-05-27 17:27:03Z ed $
 $ 
 $ 
 $set 1
@@ -111,7 +110,7 @@ $quote "
 100 "           ...recherche"
 101 "chaîne \"%s\" non trouvée"
 102 "rechercher : "
-103 "impossible d'exécuter %s"
+103 "impossible d'exécuter %s\n"
 104 "tapez entrée pour continuer "
 105 "pressez sur échap. pour annuler"
 106 "menu trop grand pour la fenêtre"
diff --git a/usr.bin/ee/nls/hu_HU.ISO8859-2/ee.msg b/usr.bin/ee/nls/hu_HU.ISO8859-2/ee.msg
new file mode 100644 (file)
index 0000000..624cca5
--- /dev/null
@@ -0,0 +1,185 @@
+$ This file contains the messages for ee ("easy editor").  See the file 
+$ ee.i18n.guide for more information
+$ 
+$ For ee patchlevel 3
+$ 
+$ $FreeBSD: head/usr.bin/ee/nls/hu_HU.ISO8859-2/ee.msg 193279 2009-06-01 21:54:59Z gabor $
+$ 
+$ 
+$set 1
+$quote "
+1 "üzemmód menü"
+2 "tabulátorok szóközzé                 "
+3 "kis- és nagybetû érzékeny keresés    "
+4 "margók megfigyelésre                 "
+5 "automatikus bekezdésformázás         " 
+6 "nyolcbites karakterek                " 
+7 "info ablak                           " 
+8 "jobb margó                           "
+9 "kilépés a menübõl                    "
+10 "változtatások mentése"
+11 "nincs mentés"
+12 "fájl menü"
+13 "fájl olvasása"
+14 "fájl írása"
+15 "fájl mentése"
+16 "a szerkesztõ tartalmának nyomtatása"
+17 "keresés menü"
+18 "keresés erre"
+19 "keresés"
+20 "helyesírás menü"
+21 "'spell' használata"
+22 "'ispell' használata"
+23 "egyéb menü"
+24 "bekezdés formázása"
+25 "shell parancs"
+26 "helyesírás-ellenõrzés"
+27 "fõmenü"
+28 "kilépés a szerkesztõbõl"
+29 "súgó"
+30 "fájlmûveletek"
+31 "képernyõ újrarajzolása"
+32 "beállítások"
+33 "keresés"
+34 "egyéb"
+35 "Vezérlõbillentyûk:                                                          " 
+36 "^a ascii kód             ^i tabulátor            ^r jobb                    "
+37 "^b szöveg alja           ^j újsor                ^t szöveg teteje           "
+38 "^c parancs               ^k karakter törlése     ^u fel                     "
+39 "^d le                    ^l balra                ^v szótörlés vissza        "
+40 "^e keresés prompt        ^m újsor                ^w szó törlése             "
+41 "^f karaktertörlés vissza ^n következõ oldal      ^x keresés                 "
+42 "^g sor eleje             ^o sor vége             ^y sor törlése             "
+43 "^h visszatörlés          ^p elõzõ oldal          ^z sortörlés vissza        "
+44 "^[ (escape) menü                                                            "
+45 "                                                                            "
+46 "Parancsok:                                                                  "
+47 "help    : ez az info                    file    : fájlnév megjelenítése    "
+48 "read    : fájl olvasása                 char    : karakter ascii kódja     "
+49 "write   : fájl írása                    case    : k/n betû érzékeny keresés"
+50 "exit    : kilépés és mentés             nocase  : nem betûérzékeny keresés "
+51 "quit    : kilépés mentés nélkül         !cmd    : \"cmd\" shell parancs    "
+52 "line    : #. sor megjelenítése          0-9     : \"#\" sorra ugrás        "
+53 "expand  : tabok kifejtése               noexpand: ne fejtse ki a tabokat   "
+54 "                                                                             "
+55 "  ee [+#] [-i] [-e] [-h] [fájl(ok)                                           "
+56 "+# :ugrás sorra # -i :info ablak ki -e :tabkifejtés ki -h :kiemelés ki"
+57 "^[ (escape) menü  ^e keresés prompt ^y sor törlése    ^u fel    ^p elõzõ old  "
+58 "^a ascii kód      ^x keresés        ^z sortörl vissza ^d le     ^n köv old    "
+59 "^b szöve alja     ^g sor eleje      ^w szó törlése    ^l bal                  "
+60 "^t szöveg teteje  ^o sor vége       ^v szótörl vissza ^r jobb                 "
+61 "^c parancs        ^k karalter törl  ^f kartörl vissza                         "
+62 "help : súgó           |file  : fájlnév megjelenítése   |line : sor # kiírása  "
+63 "read : fájl olvasása  |char  : ascii kód               |0-9  : # sorra ugrás  "
+64 "write: fájl írása     |case  : k/n érzékeny keresés    |exit : kilép és ment  "
+65 "!cmd : shell parancs  |nocase: nem érzékeny keresés    |quit : kilép, nem ment"
+66 "expand: tabkifejtés   |noexpand: ne legyen tabkifejtés                        "
+67 "    nyomja le az Escape billentyût (^[) a menü eléréséhez"
+68 "nincs fájl"
+69 "ascii kód: "
+70 "a puffer tartalmának küldése -> \"%s\" "
+71 "parancs: "
+72 "a mentendõ fájl neve: "
+73 "az olvasandó fájl neve: "
+74 "karakter = %d"
+75 "ismeretlen parancs: \"%s\""
+76 "a megadott parancs nem egyéni"
+77 "sor %d  "
+78 "hossz = %d"
+79 "az aktuális fájl \"%s\" "
+80 "használat: %s [-i] [-e] [-h] [+sor_száma] [fájl(ok)]\n"
+81 "       -i   info ablak kikapcsolása\n"
+82 "       -e   ne konvertálja a tabokat szóközzé\n"
+83 "       -h   ne használjon kiemelést\n"
+84 "\"%s\" egy könyvtár"
+85 "új fájl: \"%s\""
+86 "\"%s\" nem nyitható meg"
+87 "\"%s\" fájl, %d sor"
+88 "\"%s\" fájl olvasása befejezõdött"
+89 "\"%s\" fájl olvasása"
+90 ", csak olvasható"
+91 "\"%s\" fájl, %d sor"
+92 "adja meg a fájlnevet: "
+93 "nem adott meg fájlnevet: a fájl nem lett elmentve"
+94 "változások történtek, biztos benne? (i/n [n]) "
+95 "i"
+96 "a fájl már létezik, felülírjam? (i/n) [n] "
+97 "\"%s\" fájl nem hozható létre"
+98 "\"%s\" fájl írása"
+99 "\"%s\" %d sor, %d karakter"
+100 "           ...keresés"
+101 "\"%s\" karakterlánc nem található"
+102 "keresés erre: "
+103 "%s nem hajtható végre\n"
+104 "nyomjon entert a folytatáshoz"
+105 "nyomja le az Esc billentyût a visszalépéshez"
+106 "a menü túl nagy az ablakhoz"
+107 "nyomjon le egy billentyût a folytatáshoz"
+108 "shell parancs: "
+109 "...bekezdés formázása..."
+110 "<!echo 'felismerhetetlen szavak listája'; echo -=-=-=-=-=-"
+111 "a szerkesztési puffer küldése a 'spell' programhoz"
+112 "jobb margó: "
+113 "korlátozott mód: a kért mûvelet nem hajtható végre"
+114 "ON"
+115 "OFF"
+116 "HELP"
+117 "WRITE"
+118 "READ"
+119 "LINE"
+120 "FILE"
+121 "CHARACTER"
+122 "REDRAW"
+123 "RESEQUENCE"
+124 "AUTHOR"
+125 "VERSION"
+126 "CASE"
+127 "NOCASE"
+128 "EXPAND"
+129 "NOEXPAND"
+130 "EXIT"
+131 "QUIT"
+132 "INFO"
+133 "NOINFO"
+134 "MARGINS"
+135 "NOMARGINS"
+136 "AUTOFORMAT"
+137 "NOAUTOFORMAT"
+138 "ECHO"
+139 "PRINTCOMMAND"
+140 "RIGHTMARGIN"
+141 "HIGHLIGHT"
+142 "NOHIGHLIGHT"
+143 "EIGHTBIT"
+144 "NOEIGHTBIT"
+145 "emacs gomb kiosztás                "
+146 "^a sor eleje            ^i tab                  ^r szó visszaállítása      "
+147 "^b vissza 1 karaktert   ^j karaktertörl vissza  ^t fájl eleje              "
+148 "^c parancs              ^k sor törlése          ^u fájl vége               "
+149 "^d karakter törlése     ^l sortérlés vissza     ^v következõ oldal         "
+150 "^e sor vége             ^m újsor                ^w szó törlése             "
+151 "^f elõre 1 karaktert    ^n következõ sor        ^x keresés                 "
+152 "^g vissza 1 oldalt      ^o ascii kar beszúrása  ^y keresés prompt          "
+153 "^h visszatörlés         ^p elõzõ sor            ^z következõ sor           "
+154 "^[ (escape) menü  ^y keresés prompt ^k sor törlése   ^p el sor    ^g elõzõ old"
+155 "^o ascii kód      ^x keresés        ^l sortörl vissz ^n köv sor   ^v köv old  "
+156 "^u fájl vége      ^a sor eleje      ^w szó törlése   ^b vissza 1 kar          "
+157 "^t fájl eleje     ^e sor vége       ^r szótörl vissz ^f elõre 1 kar           "
+158 "^c parancs        ^d kar törlése    ^j kartörl vissz ^z köv szó               "
+159 "EMACS"
+160 "NOEMACS"
+161 "       +#   kurzor mozgatása a sorra #\n"
+162 ".init.ee nem nyitható meg írásra, konfiguráció nem lett mentve!"
+163 "ee konfiguráció elmentve a %s fájlban"
+164 "szerkesztõ konfigurációjának mentése"
+165 "ee konfiguráció mentése"
+166 "mentés az aktuális könyvtárba"
+167 "mentés a home könyvtárba"
+168 "ee konfiguráció nem lett mentve"
+169 "ree hívásához meg kell adni egy fájlnevet"
+180 "a menü túl nagy az ablakhoz"
+181 "^^több^^"
+182 "VVtöbbVV"
+183 "16 bites karakterek                "
+184 "16BIT"
+185 "NO16BIT"
index c8851d8..27c68b5 100644 (file)
@@ -3,8 +3,7 @@ $ ee.i18n.guide for more information
 $ 
 $ For ee patchlevel 3
 $ 
-$ $FreeBSD: src/usr.bin/ee/nls/pl_PL.ISO8859-2/ee.msg,v 1.5.2.1 2002/01/05 15:47:14 phantom Exp $
-$ $DragonFly: src/usr.bin/ee/nls/pl_PL.ISO8859-2/ee.msg,v 1.4 2005/03/03 19:07:29 joerg Exp $
+$ $FreeBSD: head/usr.bin/ee/nls/pl_PL.ISO8859-2/ee.msg 192914 2009-05-27 17:27:03Z ed $
 $ 
 $ 
 $set 1
@@ -59,7 +58,7 @@ $quote "
 48 "read    : wczytaj plik                  char    : kod ASCII znaku          "
 49 "write   : zapisz do pliku               case    : szukaj (ma³e!=du¿e)      "
 50 "exit    : zachowaj i wyjd¼              nocase  : szukaj (ma³e==du¿e)      "
-51 "quit    : wyjd¼ bez zachowania          !cmd    : wykonaj \"cmd\" w shellu"
+51 "quit    : wyjd¼ bez zachowania          !cmd    : wykonaj \"cmd\" w shellu   "
 52 "line    : wy¶wietl numer wiersza        0-9     : id¼ do wiersza \"#\"       "
 53 "expand  : rozwiñ tabulacje na spacje    noexpand: nie rozwijaj tabulacji   "
 54 "                                                                             "
@@ -111,7 +110,7 @@ $quote "
 100 "           ...szukam"
 101 "napis \"%s\" nie zosta³ znaleziony"
 102 "szukaj: "
-103 "nie mo¿na wykonaæ %s"
+103 "nie mo¿na wykonaæ %s\n"
 104 "naci¶nij Enter ¿eby kontynuowaæ "
 105 "naci¶nij Esc ¿eby anulowaæ"
 106 "menu zbyt du¿e dla tego okna"
diff --git a/usr.bin/ee/nls/pt_BR.ISO8859-1/ee.msg b/usr.bin/ee/nls/pt_BR.ISO8859-1/ee.msg
new file mode 100644 (file)
index 0000000..b2cb255
--- /dev/null
@@ -0,0 +1,186 @@
+$ This file contains the messages for ee ("easy editor").  See the file 
+$ ee.i18n.guide for more information
+$ 
+$ For ee patchlevel 3
+$ 
+$ $Header: /home/hugh/sources/old_ae/RCS/ee.msg,v 1.8 1996/11/30 03:23:40 hugh Exp $
+$ $FreeBSD: head/usr.bin/ee/nls/pt_BR.ISO8859-1/ee.msg 203699 2010-02-09 10:47:44Z gabor $
+$ 
+$ 
+$set 1
+$quote "
+1 "modo menu"
+2 "tabs para espaços           " 
+3 "busca com case sensitive    " 
+4 "observar margens            " 
+5 "formatação de auto-parágrafo" 
+6 "caracteres de oito bits     " 
+7 "informação da janela        " 
+8 "margem direita              "
+9 "deixar o menu"
+10 "salvar mudanças"
+11 "sem salvar"
+12 "menu arquivo"
+13 "ler um arquivo"
+14 "escrever uma arquivo"
+15 "salvar arquivo"
+16 "editar conteúdo de impressão"
+17 "menu localizar"
+18 "localizar por ..."
+19 "localizar"
+20 "menu dicionário"
+21 "usar 'spell'"
+22 "usar 'ispell'"
+23 "menu diversos"
+24 "formatação de parágrafo"
+25 "comando shell"
+26 "checar dicionário"
+27 "menu principal"
+28 "deixar editor"
+29 "ajuda"
+30 "operações com arquivos"
+31 "redesenhar tela"
+32 "configurações"
+33 "localizar"
+34 "diversos"
+35 "Teclas de controle:                                                        " 
+36 "^a código ascii         ^i tab                  ^r direita                 "
+37 "^b botão de texto       ^j nova linha           ^t início do texto         "
+38 "^c comando              ^k deletar caracter     ^u para acima              "
+39 "^d para baixo           ^l esquerda             ^v restaurar palavra       "
+40 "^e localizar prompt     ^m nova linha           ^w deletar palavra         "
+41 "^f restaurar caracter   ^n próxima página       ^x localizar               "
+42 "^g início da linha      ^o fim da linha         ^y deletar linha           "
+43 "^h backspace            ^p página anterior      ^z restaurar linha         "
+44 "^[ (escape) menu                                                           "
+45 "                                                                           "
+46 "Comandos:                                                                  "
+47 "help    : obter esta informação         file    : imprimir nome do arquivo "
+48 "read    : ler um arquivo                char    : código ascii de caracter        "
+49 "write   : escrever a arquivo            case    : localizar com case sensitive  "
+50 "exit    : salva e sair                  nocase  : localizar sem case insensitive  "
+51 "quit    : sair, sem salvar              !cmd    : executar \"cmd\" no shell   "
+52 "line    : visualizar linhas #           0-9     : ir para linha \"#\"           "
+53 "expand  : expandir tabs                 noexpand: não expande tabs         "
+54 "                                                                             "
+55 "  ee [+#] [-i] [-e] [-h] [arquivos(s)]                                        "
+56 "+# :ir para linha    #  -i :sem informação da janela  -e : não expandir tabs  -h :sem destaque          "
+57 "^[ (escape) menu         ^e prompt localizar  ^y deletar linha      ^u para cima     ^p página anterior "
+58 "^a código ascii          ^x localizar         ^z restaurar linha    ^d para baixo    ^n próxima página  "
+59 "^b botão de texto        ^g início da linha   ^w deletar palavra    ^l esquerda                         "
+60 "^t início do texto       ^o fim da linha      ^v restaurar palavra  ^r direita                          "
+61 "^c comando               ^k deletar caracter  ^f restaurar caracter                                     "
+62 "help : obter ajuda         |file  : imprimir nome do arquivo         |line : imprimir linha # "
+63 "read : ler um arquivo      |char  : código ascii de caracter         |0-9 : ir para linha \"#\""
+64 "write: escrever um arquivo |case  : localizar com case sensitive     |exit : salvar e sair "
+65 "!cmd : shell \"cmd\"    |nocase: ignorar case na busca               |quit : sair, sem salvar"
+66 "expand: expandir tabs   |noexpand: não expandir tabs                            "
+67 "    pressione Escape (^[) para menu"
+68 "sem arquivo"
+69 "código ascii: "
+70 "enviar conteúdo do buffer para \"%s\" "
+71 "comando: "
+72 "nome do arquivo para escrever: "
+73 "nome do arquivo para leitura: "
+74 "caracter = %d"
+75 "comando desconhecido \"%s\""
+76 "mais de um comando digitado"
+77 "linha %d  "
+78 "comprimento = %d"
+79 "arquivo atual \"%s\" "
+80 "uso: %s [-i] [-e] [-h] [+número_da_linha] [arquivo(s)]\n"
+81 "       -i   desligar informações da janela\n"
+82 "       -e   não converter tabs para espaços\n"
+83 "       -h   não usar destaque\n"
+84 "arquivo \"%s\" é um diretório"
+85 "novo arquivo \"%s\""
+86 "não posso abrir \"%s\""
+87 "arquivos \"%s\", %d linhas"
+88 "finalizar leitura de arquivo \"%s\""
+89 "lendo arquivo \"%s\""
+90 ", somente leitura"
+91 "arquivo \"%s\", %d linhas"
+92 "digite o nome do arquivo: "
+93 "nenhum arquivo digitado: arquivo não foi salvo"
+94 "Foram feitas alterações, você tem certeza? (y/n [n]) "
+95 "y"
+96 "arquivo já existe, sobrescrever? (y/n) [n] "
+97 "impossível criar arquivo \"%s\""
+98 "escrevendo arquivo \"%s\""
+99 "\"%s\" %d linhas, %d caracteres"
+100 "           ...localizando"
+101 "string \"%s\" não encontrada"
+102 "localizar por: "
+103 "execução não permitida %s\n"
+104 "pressione enter para continuar "
+105 "pressione Esc para cancelar"
+106 "menu muito grande para a janela"
+107 "pressione qualquer tecla para continuar "
+108 "comando shell: "
+109 "...formatando parágrafo..."
+110 "<!echo 'lista de palavras não reconhecidas'; echo -=-=-=-=-=-"
+111 "enviando conteúdo no buffer do editor para 'correção'"
+112 "margem direita é: "
+113 "modo restrito: incapaz de executar a operação solicitada"
+114 "LIGADO"
+115 "DESLIGADO"
+116 "AJUDA"
+117 "ESCRITA"
+118 "LEITURA"
+119 "LINHA"
+120 "ARQUIVO"
+121 "CARACTER"
+122 "REDESENHAR"
+123 "RESEQUENCIA"
+124 "AUTOR"
+125 "VERSÃO"
+126 "CASE"
+127 "SEMCASE"
+128 "EXPANDIR"
+129 "NÃOEXPANDIR"
+130 "SAIRSALVANDO"
+131 "SAIRSEMSALVAR"
+132 "INFO"
+133 "SEMINFO"
+134 "MARGENS"
+135 "SEMMARGENS"
+136 "AUTOFORMATAÇÃO"
+137 "SEMAUTOFORMATAÇÃO"
+138 "ECHO"
+139 "IMPRIMIRCOMANDO"
+140 "MARGEMDIREITA"
+141 "DESTAQUE"
+142 "SEMDESTAQUE"
+143 "OITOBIT"
+144 "SEMOITOBIT"
+145 "vínculo com teclas emacs   "
+146 "^a início da linha      ^i tab                    ^r restaurar palavra       "
+147 "^b voltar 1 caracter    ^j resturar caracter      ^t início do texto         "
+148 "^c comando              ^k deletar linha          ^u botão de texto          "
+149 "^d deletar caracter     ^l restaurar linha        ^v próxima página          "
+150 "^e fim da linha         ^m nova linha             ^w deletar palavra         "
+151 "^f avançar 1 caracter   ^n próxima linha          ^x localizar               "
+152 "^g voltar 1 página      ^o inserir caracter ascii ^y prompt localizar        "
+153 "^h backspace            ^p linha anterior         ^z próxima palavra         "
+154 "^[ (escape) menu    ^y prompt localizar  ^k deletar linha      ^p linha anterior   ^g página anterior"
+155 "^o código ascii     ^x localizar         ^l restaurar linha    ^n próxima linha    ^v próxima página "
+156 "^u fim do arquivo   ^a início da linha   ^w deletar palavra    ^b regressar 1 caracter  "
+157 "^t início do texto  ^e fim da linha      ^r restaurar palavra  ^f avançar 1 caracter    "
+158 "^c comando          ^d deletar caracter  ^j restaurar caracter ^z próxima palavra       "
+159 "EMACS"
+160 "SEMEMACS"
+161 "       +#   colocar cursor na linha #\n"
+162 "impossível abrir .init.ee para escrita, nenhuma configuração salva!"
+163 "ee configuração salva no arquivo %s"
+164 "salvar configurações do editor"
+165 "salvar configurações do ee"
+166 "salvar no diretório corrente"
+167 "salvar no diretório home"
+168 "configurações do ee não salvas"
+169 "ao invocar ree, deve-se especificar um arquivo"
+180 "menu muito grande para a janela"
+181 "^^mais^^"
+182 "VVmaisVV"
+183 "caracteres de 16 bit    "
+184 "16BIT"
+185 "SEM16BIT"
index 2c34036..092cdf4 100644 (file)
@@ -5,8 +5,7 @@ $ Based on uk_UA.KOI8-U translation by Olexander Kunytsa <kunia@istc.kiev.ua>
 $
 $ For ee patchlevel 3
 $
-$ $FreeBSD: src/usr.bin/ee/nls/ru_RU.KOI8-R/ee.msg,v 1.1.2.1 2001/06/10 11:06:11 sobomax Exp $
-$ $DragonFly: src/usr.bin/ee/nls/ru_RU.KOI8-R/ee.msg,v 1.3 2003/10/05 16:51:39 drhodus Exp $
+$ $FreeBSD: head/usr.bin/ee/nls/ru_RU.KOI8-R/ee.msg 248160 2013-03-11 13:08:32Z glebius $
 $
 $
 $set 1
@@ -65,7 +64,7 @@ $quote "
 52 "line    : ÐÏËÁÚÁÔØ ÎÏÍÅÒ ÓÔÒÏËÉ         0-9     : ÐÅÒÅÊÔÉ Ë ÓÔÒÏËÅ N       "
 53 "expand  : ÚÁÍÅÎÑÔØ ÔÁÂÕÌÑÃÉÀ ÐÒÏÂÅÌÁÍÉ  noexpand: ÎÅ ÚÁÍÅÎÑÔØ ÔÁÂÕÌÑÃÉÀ    "
 54 "                                                                           "
-55 "  ee [+#] [-i] [-e] [-h] [ÆÁÊÌÙ(Ù)]                                        "
+55 "  ee [+#] [-i] [-e] [-h] [ÆÁÊÌ(Ù)]                                         "
 56 "+# :Ë ÓÔÒÏËÅ N -i :ÂÅÚ ÉÎÆÏ-ÏËÎÁ -e :ÎÅ ÚÁÍÅÎÑÔØ ÔÁÂÙ -h :ÂÅÚ ×ÙÄÅÌÅÎÉÑ ÒÁÍÏË "
 57 "^[ (Esc) ÍÅÎÀ    ^e ÐÏÉÓË           ^y ÕÄÁÌÉÔØ ÓÔÒÏËÕ ^u ××ÅÒÈ  ^p ÐÒÅÄ. ÓÔÒ. "
 58 "^a ascii-ËÏÄ     ^x ÐÏ×ÔÏÒ ÐÏÉÓËÁ   ^z ×ÅÒÎÕÔØ ÓÔÒÏËÕ ^d ×ÎÉÚ   ^n ÓÌÅÄ. ÓÔÒ. "
@@ -113,7 +112,7 @@ $quote "
 100 "           ...ÉÄ£Ô ÐÏÉÓË"
 101 "ÐÏÄÓÔÒÏËÁ \"%s\" ÎÅ ÎÁÊÄÅÎÁ"
 102 "ÞÔÏ ÉÓËÁÔØ: "
-103 "ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ %s"
+103 "ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ %s\n"
 104 "ÄÌÑ ÐÒÏÄÏÌÖÅÎÉÑ ÎÁÖÍÉÔÅ Enter"
 105 "ÄÌÑ ÏÔÍÅÎÙ ÎÁÖÍÉÔÅ Esc"
 106 "ÓÌÉÛËÏÍ ÂÏÌØÛÏÅ ÍÅÎÀ - ÎÅ ÐÏÍÅÝÁÅÔÓÑ × ÜËÒÁÎ"
@@ -155,7 +154,7 @@ $quote "
 142 "NOHIGHLIGHT"
 143 "EIGHTBIT"
 144 "NOEIGHTBIT"
-145 "ËÌÁ×ÉÛÙ ËÁË × Emacs      "
+145 "ËÌÁ×ÉÛÉ ËÁË × Emacs      "
 146 "^a × ÎÁÞÁÌÏ ÓÔÒÏËÉ      ^i ÔÁÂÕÌÑÃÉÑ            ^r ×ÅÒÎÕÔØ ÓÌÏ×Ï           "
 147 "^b ×ÌÅ×Ï                ^j ×ÅÒÎÕÔØ ÓÉÍ×ÏÌ       ^t × ÓÁÍÙÊ ×ÅÒÈ            "
 148 "^c ËÏÍÁÎÄÁ              ^k ÕÄÁÌÉÔØ ÓÔÒÏËÕ       ^u × ÓÁÍÙÊ ÎÉÚ             "
index 5a833de..dcc3688 100644 (file)
@@ -3,8 +3,7 @@ $ ee.i18n.guide for more information
 $ 
 $ For ee patchlevel 3
 $ 
-$ $FreeBSD: src/usr.bin/ee/nls/uk_UA.KOI8-U/ee.msg,v 1.1.2.1 2001/06/10 11:06:11 sobomax Exp $
-$ $DragonFly: src/usr.bin/ee/nls/uk_UA.KOI8-U/ee.msg,v 1.3 2003/10/05 16:51:39 drhodus Exp $
+$ $FreeBSD: head/usr.bin/ee/nls/uk_UA.KOI8-U/ee.msg 192914 2009-05-27 17:27:03Z ed $
 $ 
 $ 
 $set 1
@@ -111,7 +110,7 @@ $quote "
 100 "           ...ÐÏÛÕË"
 101 "ÒÑÄÏË \"%s\" ÎÅ ÚÎÁÊÄÅÎÏ"
 102 "ÝÏ ÛÕËÁÔÉ: "
-103 "ÎÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ %s"
+103 "ÎÅ ÍÏÖÕ ×ÉËÏÎÁÔÉ %s\n"
 104 "ÎÁÔÉÓΦÔØ <enter> ÄÌÑ ÐÒÏÄÏ×ÖÅÎÎÑ..."
 105 "Esc - ×¦ÄͦÎÁ"
 106 "ÍÅÎÀ ÚÁ×ÅÌÉËÅ ÄÌÑ ÅËÒÁÎÕ"