Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 May 2009 21:06:51 +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: r192856 - in head: contrib/ee usr.bin/ee usr.bin/ee/nls/en_US.US-ASCII
Message-ID:  <200905262106.n4QL6p6n073700@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Tue May 26 21:06:51 2009
New Revision: 192856
URL: http://svn.freebsd.org/changeset/base/192856

Log:
  Merge local changes to ee(1) into contrib space.
  
  The source file, manual page and English translation are now directly
  obtained from the contrib/ directory. This makes it a lot easier to
  merge a newer version of ee(1) into the tree.
  
  Thanks to:	des and jhb

Deleted:
  head/usr.bin/ee/Artistic
  head/usr.bin/ee/FREEBSD-upgrade
  head/usr.bin/ee/README
  head/usr.bin/ee/ee.1
  head/usr.bin/ee/ee.c
  head/usr.bin/ee/ee.i18n.guide
  head/usr.bin/ee/nls/en_US.US-ASCII/
Modified:
  head/contrib/ee/ee.c   (contents, props changed)
  head/contrib/ee/ee.msg   (contents, props changed)
  head/usr.bin/ee/Makefile

Modified: head/contrib/ee/ee.c
==============================================================================
--- head/contrib/ee/ee.c	Tue May 26 20:57:19 2009	(r192855)
+++ head/contrib/ee/ee.c	Tue May 26 21:06:51 2009	(r192856)
@@ -53,6 +53,9 @@
  |
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
 char *ee_copyright_message = 
 "Copyright (c) 1986, 1990, 1991, 1992, 1993, 1994, 1995, 1996 Hugh Mahon ";
 
@@ -66,39 +69,37 @@ char *version = "@(#) ee, version 1.4.1 
 
 #ifdef NCURSE
 #include "new_curse.h"
+#elif HAS_NCURSES
+#include <ncurses.h>
 #else
 #include <curses.h>
 #endif
 
-#include <signal.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>
-#include <errno.h>
-#include <string.h>
-#include <pwd.h>
-
 #ifdef HAS_SYS_WAIT
 #include <sys/wait.h>
 #endif
-
-#ifdef HAS_STDLIB
-#include <stdlib.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
 
-#ifdef HAS_CTYPE
-#include <ctype.h>
-#endif
-
-
 #ifndef NO_CATGETS
 #include <locale.h>
 #include <nl_types.h>
@@ -202,8 +203,11 @@ 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 = "lp";	/* string to use for the print command 	*/
+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		*/
@@ -219,6 +223,7 @@ WINDOW *com_win;
 WINDOW *text_win;
 WINDOW *help_win;
 WINDOW *info_win;
+WINDOW *count_win;
 
 #if defined(__STDC__) || defined(__cplusplus)
 #define P_(s) s
@@ -298,7 +303,7 @@ void finish P_((void));
 int quit P_((int noverify));
 void edit_abort P_((int arg));
 void delete_text P_((void));
-int write_file P_((char *file_name));
+int write_file P_((char *file_name, int warn_if_exists));
 int search P_((int display_message));
 void search_prompt P_((void));
 void del_char P_((void));
@@ -339,6 +344,7 @@ 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_
@@ -535,28 +541,23 @@ 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(argc, argv)		/* beginning of main program		*/
 int argc;
 char *argv[];
 {
-	int counter;
-
-	for (counter = 1; counter < 24; counter++)
-		signal(counter, SIG_IGN);
+	/* 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);
+	}
 
 	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;
@@ -577,7 +578,7 @@ char *argv[];
 	scr_pos =0;
 	scr_vert = 0;
 	scr_horz = 0;
-	bit_bucket = fopen("/dev/null", "w");
+	bit_bucket = fopen(_PATH_DEVNULL, "w");
 	edit = TRUE;
 	gold = case_sen = FALSE;
 	shell_fork = TRUE;
@@ -608,10 +609,23 @@ char *argv[];
 
 	while(edit) 
 	{
-		wrefresh(text_win);
+		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)
-			exit(0);
+			continue;
 
 		resize_check();
 
@@ -810,6 +824,7 @@ 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)
 		{
@@ -943,13 +958,13 @@ 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] != (char) NULL) && (((column+i2+1)-horiz_offset) < last_col); i2++)
@@ -1054,8 +1069,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;
@@ -1507,8 +1522,10 @@ function_key()				/* process function ke
 		left(TRUE);
 	else if (in == KEY_RIGHT)
 		right(TRUE);
-	else if ( in == KEY_HOME)
-		top();
+	else if (in == KEY_HOME)
+		bol();
+	else if (in == KEY_END)
+		eol();
 	else if ( in == KEY_UP)
 		up();
 	else if (in == KEY_DOWN)
@@ -1674,7 +1691,7 @@ char *cmd_str1;
 			cmd_str = cmd_str2 = get_string(file_write_prompt_str, TRUE);
 		}
 		tmp_file = resolve_name(cmd_str);
-		write_file(tmp_file);
+		write_file(tmp_file, 1);
 		if (tmp_file != cmd_str)
 			free(tmp_file);
 	}
@@ -1855,7 +1872,7 @@ int advance;		/* if true, skip leading s
 		esc_flag = FALSE;
 		in = wgetch(com_win);
 		if (in == -1)
-			exit(0);
+			continue;
 		if (((in == 8) || (in == 127) || (in == KEY_BACKSPACE)) && (g_pos > 0))
 		{
 			tmp_int = g_horz;
@@ -1880,7 +1897,7 @@ int advance;		/* if true, skip leading s
 				esc_flag = TRUE;
 				in = wgetch(com_win);
 				if (in == -1)
-					exit(0);
+					continue;
 			}
 			*nam_str = in;
 			g_pos++;
@@ -1954,7 +1971,7 @@ char *cmd_str;
 	int number;
 	int i;
 	char *ptr;
-	char *direction;
+	char *direction = NULL;
 	struct text *t_line;
 
 	ptr = cmd_str;
@@ -2025,9 +2042,10 @@ char *arguments[];
 {
 	char *buff;
 	int count;
-	struct files *temp_names;
+	struct files *temp_names = NULL;
 	char *name;
 	char *ptr;
+	int no_more_opts = FALSE;
 
 	/*
 	 |	see if editor was invoked as 'ree' (restricted mode)
@@ -2044,7 +2062,7 @@ char *arguments[];
 	input_file = FALSE;
 	recv_file = FALSE;
 	count = 1;
-	while (count < numargs)
+	while ((count < numargs) && (!no_more_opts))
 	{
 		buff = arguments[count];
 		if (!strcmp("-i", buff))
@@ -2073,30 +2091,38 @@ char *arguments[];
 			buff++;
 			start_at_line = buff;
 		}
-
+		else if (!(strcmp("--", buff)))
+			no_more_opts = TRUE;
 		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 != (char) NULL)
-			{
-				*ptr = *buff;
-				buff++;
-				ptr++;
-			}
-			*ptr = (char) NULL;
-			temp_names->next_name = NULL;
-			input_file = TRUE;
-			recv_file = TRUE;
+			count--;
+			no_more_opts = TRUE;
+		}
+		count++;
+	}
+	while (count < numargs)
+	{
+		buff = arguments[count];
+		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 != (char) NULL)
+		{
+			*ptr = *buff;
+			buff++;
+			ptr++;
+		}
+		*ptr = (char) NULL;
+		temp_names->next_name = NULL;
+		input_file = TRUE;
+		recv_file = TRUE;
 		count++;
 	}
 }
@@ -2292,8 +2318,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)
@@ -2372,7 +2398,7 @@ finish()	/* prepare to exit edit session
 		file_name = tmp_file;
 	}
 
-	if (write_file(file_name))
+	if (write_file(file_name, 1))
 	{
 		text_changes = FALSE;
 		quit(0);
@@ -2412,6 +2438,7 @@ int noverify;
 		recv_file = TRUE;
 		input_file = TRUE;
 		check_fp();
+		text_changes = FALSE;
 	}
 	return(0);
 }
@@ -2448,8 +2475,9 @@ delete_text()
 }
 
 int 
-write_file(file_name)
+write_file(file_name, warn_if_exists)
 char *file_name;
+int warn_if_exists;
 {
 	char cr;
 	char *tmp_point;
@@ -2459,7 +2487,8 @@ char *file_name;
 	int write_flag = TRUE;
 
 	charac = lines = 0;
-	if ((in_file_name == NULL) || strcmp(in_file_name, file_name))
+	if (warn_if_exists &&
+	    ((in_file_name == NULL) || strcmp(in_file_name, file_name)))
 	{
 		if ((temp_fp = fopen(file_name, "r")))
 		{
@@ -3125,9 +3154,8 @@ char *string;		/* string containing user
 			}
 			for (value = 1; value < 24; value++)
 				signal(value, SIG_DFL);
-			execl(path, last_slash, "-c", string, NULL);
-			printf(exec_err_msg, path);
-			exit(-1);
+			execl(path, last_slash, "-c", string, (char *)NULL);
+			errx(1, exec_err_msg, path);
 		}
 		else	/* if the parent	*/
 		{
@@ -3170,7 +3198,7 @@ char *string;		/* string containing user
 	}
 	if (shell_fork)
 	{
-		printf(continue_msg);
+		printf("%s", continue_msg);
 		fflush(stdout);
 		while ((in = getchar()) != '\n')
 			;
@@ -3230,9 +3258,12 @@ set_up_term()		/* set up the terminal fo
 	if (info_window)
 	{
 		info_type = CONTROL_KEYS;
-		info_win = newwin(6, COLS, 0, 0);
+		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;
@@ -3257,6 +3288,7 @@ resize_check()
 	delwin(text_win);
 	delwin(com_win);
 	delwin(help_win);
+	delwin(count_win);
 	set_up_term();
 	redraw();
 	wrefresh(text_win);
@@ -3274,7 +3306,7 @@ struct menu_entries menu_list[];
 	int counter;
 	int length;
 	int input;
-	int temp;
+	int temp = 0;
 	int list_size;
 	int top_offset;		/* offset from top where menu items start */
 	int vert_pos;		/* vertical position			  */
@@ -3356,10 +3388,7 @@ struct menu_entries menu_list[];
 			wmove(temp_win, (counter + top_offset - off_start), 3);
 
 		wrefresh(temp_win);
-		in = wgetch(temp_win);
-		input = in;
-		if (input == -1)
-			exit(0);
+		input = wgetch(temp_win);
 
 		if (((tolower(input) >= 'a') && (tolower(input) <= 'z')) || 
 		    ((input >= '0') && (input <= '9')))
@@ -3602,8 +3631,6 @@ help()
 	wprintw(com_win, press_any_key_msg);
 	wrefresh(com_win);
 	counter = wgetch(com_win);
-	if (counter == -1)
-		exit(0);
 	werase(com_win);
 	wmove(com_win, 0, 0);
 	werase(help_win);
@@ -3631,11 +3658,6 @@ paint_info_win()
 		else if (info_type == COMMANDS)
 			waddstr(info_win, command_strings[counter]);
 	}
-	wmove(info_win, 5, 0);
-	if (!nohighlight)
-		wstandout(info_win);
-	waddstr(info_win, "===============================================================================");
-	wstandend(info_win);
 	wrefresh(info_win);
 }
 
@@ -3669,12 +3691,15 @@ create_info_window()
 	idlok(text_win, TRUE);
 	werase(text_win);
 	info_window = TRUE;
-	info_win = newwin(6, COLS, 0, 0);
+	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;
 }
@@ -3705,7 +3730,7 @@ int arg;
 	{
 		string = get_string(file_write_prompt_str, TRUE);
 		tmp_file = resolve_name(string);
-		write_file(tmp_file);
+		write_file(tmp_file, 1);
 		if (tmp_file != string)
 			free(tmp_file);
 		free(string);
@@ -3742,7 +3767,7 @@ int arg;
 				string = tmp_file;
 			}
 		}
-		if (write_file(string))
+		if (write_file(string, 1))
 		{
 			in_file_name = string;
 			text_changes = FALSE;
@@ -4051,7 +4076,7 @@ Format()	/* format the paragraph accordi
 }
 
 unsigned char *init_name[3] = {
-	"/usr/local/lib/init.ee", 
+	"/usr/share/misc/init.ee", 
 	NULL, 
 	".init.ee"
 	};
@@ -4068,6 +4093,8 @@ ee_init()	/* check for init file and rea
 	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");
@@ -4353,17 +4380,25 @@ spell_op()	/* check spelling of words in
 void 
 ispell_op()
 {
-	char name[128];
+	char template[128], *name;
 	char string[256];
-	int pid;
+	int fd;
 
 	if (restrict_mode())
 	{
 		return;
 	}
-	pid = getpid();
-	sprintf(name, "/tmp/ee.%d", pid);
-	if (write_file(name))
+	(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);
@@ -4961,6 +4996,19 @@ char *list[];
 	return(num_match);
 }
 
+void
+renumber_lines(firstline, startnumber)
+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, 
@@ -5001,7 +5049,7 @@ strings_init()
 
 #ifndef NO_CATGETS
 	setlocale(LC_ALL, "");
-	catalog = catopen("ee", 0);
+	catalog = catopen("ee", NL_CAT_LOCALE);
 #endif /* NO_CATGETS */
 
 	modes_menu[0].item_string = catgetlocal( 1, "modes menu");
@@ -5047,7 +5095,7 @@ strings_init()
 	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                                                           ");
+	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          ");
@@ -5064,7 +5112,7 @@ strings_init()
 	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                          ");
+	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 ");
@@ -5106,7 +5154,7 @@ strings_init()
 	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\n");
+	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");
@@ -5154,8 +5202,8 @@ strings_init()
 	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 top of text             ");
-	emacs_help_text[3] = catgetlocal( 148, "^c command              ^k delete line          ^u bottom of text          ");
+	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                  ");
@@ -5174,11 +5222,11 @@ strings_init()
 	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 li   ^g prev page");
-	emacs_control_keys[1] = catgetlocal( 155, "^o ascii code     ^x search         ^l undelete line ^n next li   ^v next page");
-	emacs_control_keys[2] = catgetlocal( 156, "^u end of file    ^a begin of line  ^w delete word   ^b back 1 char           ");
-	emacs_control_keys[3] = catgetlocal( 157, "^t top of text    ^e end of line    ^r restore word  ^f forward 1 char        ");
-	emacs_control_keys[4] = catgetlocal( 158, "^c command        ^d delete char    ^j undelete char ^z next word              ");
+	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");

Modified: head/contrib/ee/ee.msg
==============================================================================
--- head/contrib/ee/ee.msg	Tue May 26 20:57:19 2009	(r192855)
+++ head/contrib/ee/ee.msg	Tue May 26 21:06:51 2009	(r192856)
@@ -4,6 +4,7 @@ $ 
 $ 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$
 $ 
 $ 
 $set 1
@@ -51,7 +52,7 @@ $quote "
 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                                                           "
+44 "^[ (escape) menu        ESC-Enter: exit ee                                 "
 45 "                                                                           "
 46 "Commands:                                                                  "
 47 "help    : get this info                 file    : print file name          "
@@ -68,7 +69,7 @@ $quote "
 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                          "
+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 "
@@ -110,7 +111,7 @@ $quote "
 100 "           ...searching"
 101 "string \"%s\" not found"
 102 "search for: "
-103 "could not exec %s\n"
+103 "could not exec %s"
 104 "press return to continue "
 105 "press Esc to cancel"
 106 "menu too large for window"
@@ -154,8 +155,8 @@ $quote "
 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 top of text             "
-148 "^c command              ^k delete line          ^u bottom of text          "
+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                  "
@@ -164,7 +165,7 @@ $quote "
 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 top of text    ^e end of line    ^r restore word  ^f forward 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"

Modified: head/usr.bin/ee/Makefile
==============================================================================
--- head/usr.bin/ee/Makefile	Tue May 26 20:57:19 2009	(r192855)
+++ head/usr.bin/ee/Makefile	Tue May 26 21:06:51 2009	(r192856)
@@ -1,5 +1,7 @@
 # $FreeBSD$
 
+.PATH:	${.CURDIR}/../../contrib/ee
+
 CFLAGS+= -DCAP -DHAS_NCURSES -DHAS_UNISTD -DHAS_STDARG -DHAS_STDLIB \
 	 -DHAS_CTYPE -DHAS_SYS_IOCTL -DHAS_SYS_WAIT -DSLCT_HDR
 
@@ -21,7 +23,11 @@ NLSLINKS_de_DE.ISO8859-1= de_AT.ISO8859-
 
 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>



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