Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 May 2009 17:27:03 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r192914 - in head: contrib/ee usr.bin/ee usr.bin/ee/nls/de_DE.ISO8859-1 usr.bin/ee/nls/fr_FR.ISO8859-1 usr.bin/ee/nls/pl_PL.ISO8859-2 usr.bin/ee/nls/ru_RU.KOI8-R usr.bin/ee/nls/uk_UA.KO...
Message-ID:  <200905271727.n4RHR3qm005592@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Wed May 27 17:27:03 2009
New Revision: 192914
URL: http://svn.freebsd.org/changeset/base/192914

Log:
  Update ee(1) in the base system to version 1.5.0.
  
  This version is now licensed under a 2-clause BSD license, instead of
  the Artistic license. I've reverted a lot of local modifications we made
  to ee, because they have been integrated upstream as well.
  
  Only local modifications include:
  
  - $FreeBSD$ ID.
  - Pathname to init.ee.
  - catopen() call, to honor LC_MESSAGES instead of LANG.
  
  To keep SVN happy, I'm putting an application/octet-stream mime type on
  the KOI8 translations.
  
  Reviewed by:	current@

Added:
  head/contrib/ee/Changes
     - copied unchanged from r192856, vendor/ee/dist/Changes
  head/contrib/ee/ee_version.h
     - copied unchanged from r192856, vendor/ee/dist/ee_version.h
Deleted:
  head/contrib/ee/Artistic
Modified:
  head/contrib/ee/   (props changed)
  head/contrib/ee/README.ee
  head/contrib/ee/create.make
  head/contrib/ee/ee.1
  head/contrib/ee/ee.c
  head/contrib/ee/ee.msg
  head/contrib/ee/new_curse.c
  head/usr.bin/ee/Makefile
  head/usr.bin/ee/nls/de_DE.ISO8859-1/ee.msg
  head/usr.bin/ee/nls/fr_FR.ISO8859-1/ee.msg
  head/usr.bin/ee/nls/pl_PL.ISO8859-2/ee.msg
  head/usr.bin/ee/nls/ru_RU.KOI8-R/ee.msg   (contents, props changed)
  head/usr.bin/ee/nls/uk_UA.KOI8-U/ee.msg   (contents, props changed)

Copied: head/contrib/ee/Changes (from r192856, vendor/ee/dist/Changes)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/contrib/ee/Changes	Wed May 27 17:27:03 2009	(r192914, copy of r192856, vendor/ee/dist/Changes)
@@ -0,0 +1,40 @@
+version 1.5.0 (2/16/2009)
+- added display of line number, column, and lines from top to separator line 
+  for info window
+- minor changes to reduce number of warnings when using -pedantic option
+
+version 1.4.7 (2/10/2009)
+- changed how strings are terminated from the old usage of NULL to the current 
+  use of character zero, '\0'
+- changed the licensing since the Artistic License is now considered 
+  restrictive
+
+version 1.4.6
+- modified new_curse.c to handle different subdirectory naming in terminfo 
+  directory; first noted on Mac OS 10.2
+
+version 1.4.5a (12/23/2001)
+- modified get_options to be cleaner for arg handling
+
+version 1.4.5 (12/15/2001)
+- made changes to check usage of arguments provided so that if a file is
+  specified options are no longer accepted (that is, they are treated as file
+  names)
+- changed to use ee_version.h to allow changing version number without need
+  to change ee.c directly
+
+version 1.4.4 (8/17/2001)
+- added code to check if the parent process has died, and if so to exit 
+  gracefully
+
+version 1.4.3 (6/25/2001)
+- modified create.make and new_curse.c to allow defining TERMCAP file 
+  location (since some distributions move the file)
+- source directory now has version number attached to directory name
+
+version 1.4.2 (1/19/2001)
+- change to create.make script to add unistd.h to files to search for 
+  select() declaration
+- change to new_curse.c for proper raw mode operation
+
+

Modified: head/contrib/ee/README.ee
==============================================================================
--- head/contrib/ee/README.ee	Wed May 27 17:02:15 2009	(r192913)
+++ head/contrib/ee/README.ee	Wed May 27 17:27:03 2009	(r192914)
@@ -1,26 +1,29 @@
-          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. 
+Copyright (c) 2009, Hugh Mahon
+All rights reserved.
 
-      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. 
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
 
 
 The editor 'ee' (easy editor) is intended to be a simple, easy to use 
@@ -51,7 +54,7 @@ completely replaced by graphical user in
 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.  
+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 
@@ -110,7 +113,7 @@ are: 
            people.
 
 Hugh Mahon              |___|     
-h_mahon@fc.hp.com       |   |     
+hugh4242@yahoo.com      |   |     
                             |\  /|
                             | \/ |
 

Modified: head/contrib/ee/create.make
==============================================================================
--- head/contrib/ee/create.make	Wed May 27 17:02:15 2009	(r192913)
+++ head/contrib/ee/create.make	Wed May 27 17:27:03 2009	(r192914)
@@ -4,14 +4,27 @@
 #	This script will determine if the system is a System V or BSD based
 #	UNIX system and create a makefile for ee appropriate for the system.
 #
-# $Header: /home/hugh/sources/old_ae/RCS/create.make,v 1.7 2001/01/20 04:57:17 hugh Exp hugh $
+# $Header: /home/hugh/sources/old_ae/RCS/create.make,v 1.13 2002/09/23 04:18:13 hugh Exp $
 #
 
+#set -x
+
+name_string="`uname`"
+
 # test for existence of termcap (exists on both BSD and SysV systems)
 
 if [ -f /etc/termcap -o -f /usr/share/lib/termcap -o -f /usr/share/misc/termcap ]
 then
-	termcap_exists="TRUE"
+	if [ -f /usr/share/lib/termcap ]
+	then
+		termcap_exists="-DTERMCAP=\"\\\"/usr/share/lib/termcap\\\"\""
+	elif [ -f /usr/share/misc/termcap ]
+	then
+		termcap_exists="-DTERMCAP=\"\\\"/usr/share/misc/termcap\\\"\""
+	elif [ -f /etc/termcap ]
+	then
+		termcap_exists="-DTERMCAP=\"\\\"/etc/termcap\\\"\""
+	fi
 else
 	termcap_exists=""
 fi
@@ -212,16 +225,27 @@ else
 fi
 
 
-if [ -n "$CFLAGS" ]
+if [ "$name_string" = "Darwin" ]
 then
-	if [ -z "`echo $CFLAGS | grep '[-]g'`" ]
+	if [ -n "$CFLAGS" ]
 	then
-		other_cflags="${CFLAGS} -s"
+		other_cflags="${CFLAGS} -DNO_CATGETS"
 	else
-		other_cflags="${CFLAGS}"
+		other_cflags="-DNO_CATGETS"
 	fi
 else
-	other_cflags="-s"
+
+	if [ -n "$CFLAGS" ]
+	then
+		if [ -z "`echo $CFLAGS | grep '[-]g'`" ]
+		then
+			other_cflags="${CFLAGS} -s"
+		else
+			other_cflags="${CFLAGS}"
+		fi
+	else
+		other_cflags="-s"
+	fi
 fi
 
 # time to write the makefile
@@ -235,7 +259,7 @@ fi
 
 echo "DEFINES =	$termio $terminfo_exists $BSD_SELECT $catgets $select $curses " > make.local
 echo "" >> make.local
-echo "CFLAGS =	$HAS_UNISTD $HAS_STDARG $HAS_STDLIB $HAS_CTYPE $HAS_SYS_IOCTL $HAS_SYS_WAIT $five_lib $five_include $select_hdr $other_cflags" >> make.local
+echo "CFLAGS =	$HAS_UNISTD $HAS_STDARG $HAS_STDLIB $HAS_CTYPE $HAS_SYS_IOCTL $HAS_SYS_WAIT $five_lib $five_include $select_hdr $other_cflags $termcap_exists" >> make.local
 echo "" >> make.local
 echo "" >> make.local
 echo "all :	$TARGET" >> make.local

Modified: head/contrib/ee/ee.1
==============================================================================
--- head/contrib/ee/ee.1	Wed May 27 17:02:15 2009	(r192913)
+++ head/contrib/ee/ee.1	Wed May 27 17:27:03 2009	(r192914)
@@ -4,7 +4,7 @@
 .\"
 .\"    nroff -man ee.1
 .\"
-.\"  $Header: /home/hugh/sources/old_ae/RCS/ee.1,v 1.19 1995/11/29 04:03:15 hugh Exp hugh $
+.\"  $Header: /home/hugh/sources/old_ae/RCS/ee.1,v 1.22 2001/12/16 04:49:27 hugh Exp $
 .\"
 .\"
 .TH ee 1 "" "" "" ""
@@ -29,6 +29,10 @@ is the same as 
 but restricted to editing the named 
 file (no file operations, or shell escapes are allowed).
 .PP
+An editor with similar user-friendly qualities but more features is available 
+and is called 
+.I aee.
+.PP
 For 
 .I ee
 to work properly, the environment variable 
@@ -402,7 +406,7 @@ cursor location.  The old information wo
 .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 
@@ -410,7 +414,7 @@ the users on a system-wide basis (for ex
 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
@@ -517,7 +521,7 @@ The automatic paragraph formatting opera
 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
@@ -532,8 +536,8 @@ 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.
+Copyright (c) 1990, 1991, 1992, 1993, 1995, 1996, 2001 Hugh Mahon.
 .SH "SEE ALSO"
 .PP
-termcap(4), terminfo(4), environ(5), spell(1), ispell(1), lp(1)
+termcap(4), terminfo(4), environ(5), spell(1), ispell(1), lp(1), aee(1)
 

Modified: head/contrib/ee/ee.c
==============================================================================
--- head/contrib/ee/ee.c	Wed May 27 17:02:15 2009	(r192913)
+++ head/contrib/ee/ee.c	Wed May 27 17:27:03 2009	(r192914)
@@ -5,34 +5,35 @@
  |
  |	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.
+ |      Copyright (c) 2009, Hugh Mahon
+ |      All rights reserved.
+ |      
+ |      Redistribution and use in source and binary forms, with or without
+ |      modification, are permitted provided that the following conditions
+ |      are met:
+ |      
+ |          * Redistributions of source code must retain the above copyright
+ |            notice, this list of conditions and the following disclaimer.
+ |          * Redistributions in binary form must reproduce the above
+ |            copyright notice, this list of conditions and the following
+ |            disclaimer in the documentation and/or other materials provided
+ |            with the distribution.
+ |      
+ |      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ |      "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ |      LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ |      FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ |      COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ |      INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ |      BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ |      LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ |      CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ |      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ |      ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ |      POSSIBILITY OF SUCH DAMAGE.
  |
- |	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 
@@ -49,7 +50,7 @@
  |	proprietary information which is protected by
  |	copyright.  All rights are reserved.
  |
- |	$Header: /home/hugh/sources/old_ae/RCS/ee.c,v 1.96 1998/07/14 05:02:30 hugh Exp $
+ |	$Header: /home/hugh/sources/old_ae/RCS/ee.c,v 1.102 2009/02/17 03:22:50 hugh Exp hugh $
  |
  */
 
@@ -57,15 +58,11 @@
 __FBSDID("$FreeBSD$");
 
 char *ee_copyright_message = 
-"Copyright (c) 1986, 1990, 1991, 1992, 1993, 1994, 1995, 1996 Hugh Mahon ";
+"Copyright (c) 1986, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 2009 Hugh Mahon ";
 
-char *ee_long_notice[] = {
-	"This software and documentation contains", 
-	"proprietary information which is protected by", 
-	"copyright.  All rights are reserved."
-	};
+#include "ee_version.h"
 
-char *version = "@(#) ee, version 1.4.1  $Revision: 1.96 $";
+char *version = "@(#) ee, version "  EE_VERSION  " $Revision: 1.102 $";
 
 #ifdef NCURSE
 #include "new_curse.h"
@@ -78,28 +75,32 @@ char *version = "@(#) ee, version 1.4.1 
 #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 <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <errno.h>
+#include <string.h>
+#include <pwd.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_STDARG
+#include <stdarg.h>
+#endif
+
 #ifdef HAS_UNISTD
 #include <unistd.h>
 #endif
 
+
 #ifndef NO_CATGETS
 #include <locale.h>
 #include <nl_types.h>
@@ -151,6 +152,7 @@ int position;			/* offset in bytes from 
 int scr_pos;			/* horizontal position			*/
 int scr_vert;			/* vertical position on screen		*/
 int scr_horz;			/* horizontal position on screen	*/
+int absolute_lin;		/* number of lines from top		*/
 int tmp_vert, tmp_horz;
 int input_file;			/* indicate to read input file		*/
 int recv_file;			/* indicate reading a file		*/
@@ -203,11 +205,8 @@ unsigned char *d_char;		/* deleted chara
 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 *print_command = (unsigned char *)"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		*/
@@ -223,7 +222,6 @@ WINDOW *com_win;
 WINDOW *text_win;
 WINDOW *help_win;
 WINDOW *info_win;
-WINDOW *count_win;
 
 #if defined(__STDC__) || defined(__cplusplus)
 #define P_(s) s
@@ -344,7 +342,6 @@ char *is_in_string P_((char *string, cha
 char *resolve_name P_((char *name));
 int restrict_mode P_((void));
 int unique_test P_((char *string, char *list[]));
-void renumber_lines P_((struct text *firstline, int startnumber));
 void strings_init P_((void));
 
 #undef P_
@@ -538,29 +535,35 @@ char *ree_no_file_msg;
 char *cancel_string;
 char *menu_too_lrg_msg;
 char *more_above_str, *more_below_str;
+char *separator = "===============================================================================";
 
 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(argc, argv)		/* beginning of main program		*/
 int argc;
 char *argv[];
 {
-	/* Always read from (and write to) a terminal. */
-	if (!isatty(STDIN_FILENO) || !isatty(STDOUT_FILENO)) {
-		fprintf(stderr, "ee's standard input and output must be a terminal\n");
-		exit(1);
-	}
+	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 = (char) NULL;
+	*d_word = '\0';
 	d_line = NULL;
 	dlt_line = txtalloc();
 	dlt_line->line = d_line;
@@ -578,7 +581,8 @@ char *argv[];
 	scr_pos =0;
 	scr_vert = 0;
 	scr_horz = 0;
-	bit_bucket = fopen(_PATH_DEVNULL, "w");
+	absolute_lin = 1;
+	bit_bucket = fopen("/dev/null", "w");
 	edit = TRUE;
 	gold = case_sen = FALSE;
 	shell_fork = TRUE;
@@ -607,25 +611,32 @@ char *argv[];
 
 	clear_com_win = TRUE;
 
+	counter = 0;
+
 	while(edit) 
 	{
+		/*
+		 |  display line and column information
+		 */
 		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);
+				wstandout(info_win);
+			wmove(info_win, 5, 0);
+			wprintw(info_win, separator);
+			wmove(info_win, 5, 5);
+			wprintw(info_win, "line %d col %d lines from top %d ", 
+			          curr_line->line_number, scr_horz, absolute_lin);
+			wstandend(info_win);
+			wrefresh(info_win);
 		}
 
-		wnoutrefresh(text_win);
-		doupdate();
+		wrefresh(text_win);
 		in = wgetch(text_win);
 		if (in == -1)
-			continue;
+			exit(0);  /* without this exit ee will go into an 
+			             infinite loop if the network 
+			             session detaches */
 
 		resize_check();
 
@@ -800,7 +811,7 @@ int disp;
 				d_char[0] = *point;
 				d_char[1] = *(point + 1);
 			}
-			d_char[del_width] = (unsigned char) NULL;
+			d_char[del_width] = '\0';
 		}
 		while (temp_pos <= curr_line->line_length)
 		{
@@ -817,6 +828,7 @@ int disp;
 	}
 	else if (curr_line->prev_line != NULL)
 	{
+		absolute_lin--;
 		text_changes = TRUE;
 		left(disp);			/* go to previous line	*/
 		temp_buff = curr_line->next_line;
@@ -824,12 +836,11 @@ int disp;
 		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] = (unsigned char) NULL;
+			d_char[1] = '\0';
 		}
 		tp = point;
 		temp_pos = 1;
@@ -841,7 +852,7 @@ int disp;
 			tp++;
 			temp2++;
 		}
-		*tp = (char) NULL;
+		*tp = '\0';
 		free(temp_buff->line);
 		free(temp_buff);
 		temp_buff = curr_line;
@@ -930,7 +941,7 @@ char character;
 int column;
 {
 	int i1, i2;
-	unsigned char *string;
+	char *string;
 	char string2[8];
 
 	if (character == TAB)
@@ -958,16 +969,16 @@ int column;
 		}
 		else
 		{
-			waddch(window, (unsigned char)character );
+			waddch(window, (char)character );
 			return(1);
 		}
 	}
 	else
 	{
-		waddch(window, (unsigned char)character);
+		waddch(window, (char)character);
 		return(1);
 	}
-	for (i2 = 0; (string[i2] != (char) NULL) && (((column+i2+1)-horiz_offset) < last_col); i2++)
+	for (i2 = 0; (string[i2] != '\0') && (((column+i2+1)-horiz_offset) < last_col); i2++)
 		waddch(window, string[i2]);
 	return(strlen(string));
 }
@@ -1069,8 +1080,8 @@ int disp;
 	temp_nod->line = extra= malloc(10);
 	temp_nod->line_length = 1;
 	temp_nod->max_length = 10;
+	temp_nod->line_number = curr_line->line_number + 1;
 	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;
@@ -1092,13 +1103,14 @@ int disp;
 			temp++;
 		}
 		temp=point;
-		*temp = (char) NULL;
+		*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;
+	absolute_lin++;
 	curr_line = temp_nod;
-	*extra = (char) NULL;
+	*extra = '\0';
 	position = 1;
 	point= curr_line->line;
 	if (disp)
@@ -1141,9 +1153,9 @@ struct files *name_alloc()	/* allocate s
 unsigned char *next_word(string)		/* move to next word in string		*/
 unsigned char *string;
 {
-	while ((*string != (char) NULL) && ((*string != 32) && (*string != 9)))
+	while ((*string != '\0') && ((*string != 32) && (*string != 9)))
 		string++;
-	while ((*string != (char) NULL) && ((*string == 32) || (*string == 9)))
+	while ((*string != '\0') && ((*string == 32) || (*string == 9)))
 		string++;
 	return(string);
 }
@@ -1177,7 +1189,7 @@ control()			/* use control for commands	
 	if (in == 1)		/* control a	*/
 	{
 		string = get_string(ascii_code_str, TRUE);
-		if (*string != (char) NULL)
+		if (*string != '\0')
 		{
 			in = atoi(string);
 			wmove(text_win, scr_vert, (scr_horz - horiz_offset));
@@ -1285,7 +1297,7 @@ emacs_control()
 	else if (in == 15)	/* control o	*/
 	{
 		string = get_string(ascii_code_str, TRUE);
-		if (*string != (char) NULL)
+		if (*string != '\0')
 		{
 			in = atoi(string);
 			wmove(text_win, scr_vert, (scr_horz - horiz_offset));
@@ -1325,7 +1337,10 @@ void 
 bottom()			/* go to bottom of file			*/
 {
 	while (curr_line->next_line != NULL)
+	{
 		curr_line = curr_line->next_line;
+		absolute_lin++;
+	}
 	point = curr_line->line;
 	if (horiz_offset)
 		horiz_offset = 0;
@@ -1338,7 +1353,10 @@ void 
 top()				/* go to top of file			*/
 {
 	while (curr_line->prev_line != NULL)
+	{
 		curr_line = curr_line->prev_line;
+		absolute_lin--;
+	}
 	point = curr_line->line;
 	if (horiz_offset)
 		horiz_offset = 0;
@@ -1351,6 +1369,7 @@ void 
 nextline()			/* move pointers to start of next line	*/
 {
 	curr_line = curr_line->next_line;
+	absolute_lin++;
 	point = curr_line->line;
 	position = 1;
 	if (scr_vert == last_line)
@@ -1369,6 +1388,7 @@ void 
 prevline()			/* move pointers to start of previous line*/
 {
 	curr_line = curr_line->prev_line;
+	absolute_lin--;
 	point = curr_line->line;
 	position = 1;
 	if (scr_vert == 0)
@@ -1406,6 +1426,7 @@ int disp;
 	{
 		if (!disp)
 		{
+			absolute_lin--;
 			curr_line = curr_line->prev_line;
 			point = curr_line->line + curr_line->line_length;
 			position = curr_line->line_length;
@@ -1441,6 +1462,7 @@ int disp;
 	{
 		if (!disp)
 		{
+			absolute_lin++;
 			curr_line = curr_line->next_line;
 			point = curr_line->line;
 			position = 1;
@@ -1526,7 +1548,7 @@ function_key()				/* process function ke
 		bol();
 	else if (in == KEY_END)
 		eol();
-	else if ( in == KEY_UP)
+	else if (in == KEY_UP)
 		up();
 	else if (in == KEY_DOWN)
 		down();
@@ -1686,7 +1708,7 @@ char *cmd_str1;
 			return;
 		}
 		cmd_str = next_word(cmd_str);
-		if (*cmd_str == (char) NULL)
+		if (*cmd_str == '\0')
 		{
 			cmd_str = cmd_str2 = get_string(file_write_prompt_str, TRUE);
 		}
@@ -1702,7 +1724,7 @@ char *cmd_str1;
 			return;
 		}
 		cmd_str = next_word(cmd_str);
-		if (*cmd_str == (char) NULL)
+		if (*cmd_str == '\0')
 		{
 			cmd_str = cmd_str2 = get_string(file_read_prompt_str, TRUE);
 		}
@@ -1872,7 +1894,7 @@ int advance;		/* if true, skip leading s
 		esc_flag = FALSE;
 		in = wgetch(com_win);
 		if (in == -1)
-			continue;
+			exit(0);
 		if (((in == 8) || (in == 127) || (in == KEY_BACKSPACE)) && (g_pos > 0))
 		{
 			tmp_int = g_horz;
@@ -1897,7 +1919,7 @@ int advance;		/* if true, skip leading s
 				esc_flag = TRUE;
 				in = wgetch(com_win);
 				if (in == -1)
-					continue;
+					exit(0);
 			}
 			*nam_str = in;
 			g_pos++;
@@ -1913,9 +1935,9 @@ int advance;		/* if true, skip leading s
 		}
 		wrefresh(com_win);
 		if (esc_flag)
-			in = (char) NULL;
+			in = '\0';
 	} while ((in != '\n') && (in != '\r'));
-	*nam_str = (char) NULL;
+	*nam_str = '\0';
 	nam_str = tmp_string;
 	if (((*nam_str == ' ') || (*nam_str == 9)) && (advance))
 		nam_str = next_word(nam_str);
@@ -1940,7 +1962,7 @@ int sensitive;
 	strng1 = string1;
 	strng2 = string2;
 	tmp = 0;
-	if ((strng1 == NULL) || (strng2 == NULL) || (*strng1 == (char) NULL) || (*strng2 == (char) NULL))
+	if ((strng1 == NULL) || (strng2 == NULL) || (*strng1 == '\0') || (*strng2 == '\0'))
 		return(FALSE);
 	equal = TRUE;
 	while (equal)
@@ -1957,7 +1979,7 @@ int sensitive;
 		}
 		strng1++;
 		strng2++;
-		if ((*strng1 == (char) NULL) || (*strng2 == (char) NULL) || (*strng1 == ' ') || (*strng2 == ' '))
+		if ((*strng1 == '\0') || (*strng2 == '\0') || (*strng1 == ' ') || (*strng2 == ' '))
 			break;
 		tmp++;
 	}
@@ -2002,6 +2024,14 @@ char *cmd_str;
 	}
 	else
 	{
+		if (!strcmp(direction, "d"))
+		{
+			absolute_lin += i;
+		}
+		else
+		{
+			absolute_lin -= i;
+		}
 		curr_line = t_line;
 		point = curr_line->line;
 		position = 1;
@@ -2062,7 +2092,7 @@ char *arguments[];
 	input_file = FALSE;
 	recv_file = FALSE;
 	count = 1;
-	while ((count < numargs) && (!no_more_opts))
+	while ((count < numargs)&& (!no_more_opts))
 	{
 		buff = arguments[count];
 		if (!strcmp("-i", buff))
@@ -2086,7 +2116,7 @@ char *arguments[];
 			fprintf(stderr, usage4);
 			exit(1);
 		}
-		else if (*buff == '+')
+		else if ((*buff == '+') && (start_at_line == NULL))
 		{
 			buff++;
 			start_at_line = buff;
@@ -2113,13 +2143,13 @@ char *arguments[];
 			temp_names = temp_names->next_name;
 		}
 		ptr = temp_names->name = malloc(strlen(buff) + 1);
-		while (*buff != (char) NULL)
+		while (*buff != '\0')
 		{
 			*ptr = *buff;
 			buff++;
 			ptr++;
 		}
-		*ptr = (char) NULL;
+		*ptr = '\0';
 		temp_names->next_name = NULL;
 		input_file = TRUE;
 		recv_file = TRUE;
@@ -2201,7 +2231,7 @@ check_fp()		/* open or close files accor
 		wmove(com_win, 0, 0);
 		wclrtoeol(com_win);
 		text_changes = TRUE;
-		if ((tmp_file != NULL) && (*tmp_file != (char) NULL))
+		if ((tmp_file != NULL) && (*tmp_file != '\0'))
 			wprintw(com_win, file_read_fin_msg, tmp_file);
 	}
 	wrefresh(com_win);
@@ -2318,8 +2348,8 @@ int *append;	/* TRUE if must append more
 		if (!(*append))	/* if not append to current line, insert new one */
 		{
 			tline = txtalloc();	/* allocate data structure for next line */
+			tline->line_number = curr_line->line_number + 1;
 			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)
@@ -2340,7 +2370,7 @@ int *append;	/* TRUE if must append more
 			point++;
 			str1++;
 		}
-		*point = (char) NULL;
+		*point = '\0';
 		*append = FALSE;
 		if ((num == length) && (*str2 != '\n'))
 			*append = TRUE;
@@ -2378,10 +2408,10 @@ finish()	/* prepare to exit edit session
 	 |	portion of file_op()
 	 */
 
-	if ((file_name == NULL) || (*file_name == (char) NULL))
+	if ((file_name == NULL) || (*file_name == '\0'))
 		file_name = get_string(save_file_name_prompt, TRUE);
 
-	if ((file_name == NULL) || (*file_name == (char) NULL))
+	if ((file_name == NULL) || (*file_name == '\0'))
 	{
 		wmove(com_win, 0, 0);
 		wprintw(com_win, file_not_saved_msg);
@@ -2438,7 +2468,6 @@ int noverify;
 		recv_file = TRUE;
 		input_file = TRUE;
 		check_fp();
-		text_changes = FALSE;
 	}
 	return(0);
 }
@@ -2463,10 +2492,11 @@ delete_text()
 	{
 		free(curr_line->line);
 		curr_line = curr_line->prev_line;
+		absolute_lin--;
 		free(curr_line->next_line);
 	}
 	curr_line->next_line = NULL;
-	*curr_line->line = (char) NULL;
+	*curr_line->line = '\0';
 	curr_line->line_length = 1;
 	curr_line->line_number = 1;
 	point = curr_line->line;
@@ -2558,7 +2588,7 @@ int display_message;
 	int iter;
 	int found;
 
-	if ((srch_str == NULL) || (*srch_str == (char) NULL))
+	if ((srch_str == NULL) || (*srch_str == '\0'))
 		return(FALSE);
 	if (display_message)
 	{
@@ -2583,7 +2613,7 @@ int display_message;
 			if (case_sen)	/* if case sensitive		*/
 			{
 				srch_3 = srch_str;
-			while ((*srch_2 == *srch_3) && (*srch_3 != (char) NULL))
+			while ((*srch_2 == *srch_3) && (*srch_3 != '\0'))
 				{
 					found = TRUE;
 					srch_2++;
@@ -2593,14 +2623,14 @@ int display_message;
 			else		/* if not case sensitive	*/
 			{
 				srch_3 = u_srch_str;
-			while ((toupper(*srch_2) == *srch_3) && (*srch_3 != (char) NULL))
+			while ((toupper(*srch_2) == *srch_3) && (*srch_3 != '\0'))
 				{
 					found = TRUE;
 					srch_2++;
 					srch_3++;
 				}
 			}	/* end else	*/
-			if (!((*srch_3 == (char) NULL) && (found)))
+			if (!((*srch_3 == '\0') && (found)))
 			{
 				found = FALSE;
 				if (iter < srch_line->line_length)
@@ -2640,6 +2670,7 @@ int display_message;
 			}
 			else 
 			{
+				absolute_lin += lines_moved;
 				curr_line = srch_line;
 				point = srch_1;
 				position = iter;
@@ -2668,19 +2699,19 @@ search_prompt()		/* prompt and read sear
 {
 	if (srch_str != NULL)
 		free(srch_str);
-	if ((u_srch_str != NULL) && (*u_srch_str != (char) NULL))
+	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 != (char) NULL)
+	while (*srch_3 != '\0')
 	{
 		*srch_1 = toupper(*srch_3);
 		srch_1++;
 		srch_3++;
 	}
-	*srch_1 = (char) NULL;
+	*srch_1 = '\0';
 	search(TRUE);
 }
 
@@ -2717,7 +2748,7 @@ undel_char()			/* undelete last deleted 
 	{
 		in = d_char[0];
 		insert(in);
-		if (d_char[1] != (unsigned char) NULL)
+		if (d_char[1] != '\0')
 		{
 			in = d_char[1];
 			insert(in);
@@ -2759,7 +2790,7 @@ del_word()			/* delete word in front of 
 		d_word2++;
 		d_word3++;
 	}
-	*d_word2 = (char) NULL;
+	*d_word2 = '\0';
 	d_wrd_len = difference = d_word2 - d_word;
 	d_word2 = point;
 	while (tposit < curr_line->line_length)
@@ -2770,7 +2801,7 @@ del_word()			/* delete word in front of 
 		d_word3++;
 	}
 	curr_line->line_length -= difference;
-	*d_word2 = (char) NULL;
+	*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];
@@ -2823,7 +2854,7 @@ undel_word()		/* undelete last deleted w
 	}
 	curr_line->line_length += d_wrd_len;
 	tmp_old_ptr = point;
-	*tmp_ptr = (char) NULL;
+	*tmp_ptr = '\0';
 	tmp_ptr = tmp_space;
 	tposit = 1;
 	/*
@@ -2836,7 +2867,7 @@ undel_word()		/* undelete last deleted w
 		tmp_ptr++;
 		tmp_old_ptr++;
 	}
-	*tmp_old_ptr = (char) NULL;
+	*tmp_old_ptr = '\0';
 	free(tmp_space);
 	draw_line(scr_vert, scr_horz, point, position, curr_line->line_length);
 }
@@ -2862,8 +2893,8 @@ del_line()			/* delete from cursor to en
 		tposit++;
 	}
 	dlt_line->line_length = 1 + tposit - position;
-	*dl1 = (char) NULL;
-	*point = (char) NULL;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905271727.n4RHR3qm005592>