diff options
author | ed <ed@FreeBSD.org> | 2009-05-27 17:27:03 +0000 |
---|---|---|
committer | ed <ed@FreeBSD.org> | 2009-05-27 17:27:03 +0000 |
commit | 6c84dada4f81e47ab4a1684ec36e4260f937debd (patch) | |
tree | 69071259f3ad010993ed926d39c9428688e32b5a /contrib/ee | |
parent | f56e53b0d75e50ab9afcdd3e9ea538a6424d5ce7 (diff) | |
parent | c43673ef75b7d102d622ebc468c6046f186c18b6 (diff) | |
download | FreeBSD-src-6c84dada4f81e47ab4a1684ec36e4260f937debd.zip FreeBSD-src-6c84dada4f81e47ab4a1684ec36e4260f937debd.tar.gz |
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@
Diffstat (limited to 'contrib/ee')
-rw-r--r-- | contrib/ee/Artistic | 117 | ||||
-rw-r--r-- | contrib/ee/Changes | 40 | ||||
-rw-r--r-- | contrib/ee/README.ee | 53 | ||||
-rwxr-xr-x | contrib/ee/create.make | 40 | ||||
-rw-r--r-- | contrib/ee/ee.1 | 16 | ||||
-rwxr-xr-x | contrib/ee/ee.c | 402 | ||||
-rw-r--r-- | contrib/ee/ee.msg | 12 | ||||
-rw-r--r-- | contrib/ee/ee_version.h | 6 | ||||
-rw-r--r-- | contrib/ee/new_curse.c | 238 |
9 files changed, 464 insertions, 460 deletions
diff --git a/contrib/ee/Artistic b/contrib/ee/Artistic deleted file mode 100644 index fbf7989..0000000 --- a/contrib/ee/Artistic +++ /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/contrib/ee/Changes b/contrib/ee/Changes new file mode 100644 index 0000000..0f2c8ab --- /dev/null +++ b/contrib/ee/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 + + diff --git a/contrib/ee/README.ee b/contrib/ee/README.ee index 8850af2..bbb932f 100644 --- a/contrib/ee/README.ee +++ b/contrib/ee/README.ee @@ -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. - - 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. +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. The editor 'ee' (easy editor) is intended to be a simple, easy to use @@ -51,7 +54,7 @@ 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. +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 | | |\ /| | \/ | diff --git a/contrib/ee/create.make b/contrib/ee/create.make index dcf3e38..5d6ec30 100755 --- a/contrib/ee/create.make +++ b/contrib/ee/create.make @@ -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 diff --git a/contrib/ee/ee.1 b/contrib/ee/ee.1 index be79cbf..7d482a8 100644 --- a/contrib/ee/ee.1 +++ b/contrib/ee/ee.1 @@ -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 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 @@ -410,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 @@ -517,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 @@ -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) diff --git a/contrib/ee/ee.c b/contrib/ee/ee.c index f727bec..4643e31 100755 --- a/contrib/ee/ee.c +++ b/contrib/ee/ee.c @@ -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 $Revision: 1.96 $"; #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 begin of line */ 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 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 *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, char *substring)); 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 space for file name list node */ 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 key */ 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 spaces and tabs */ 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 spaces and tabs */ 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 spaces and tabs */ } 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 according to flags */ 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 text to end of current line */ 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 text to end of current line */ 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 search string (srch_str) */ { 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 character */ { 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 cursor */ 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 cursor */ 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 word */ } 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 word */ 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 end of line */ tposit++; } dlt_line->line_length = 1 + tposit - position; - *dl1 = (char) NULL; - *point = (char) NULL; + *dl1 = '\0'; + *point = '\0'; curr_line->line_length = position; wclrtoeol(text_win); if (curr_line->next_line != NULL) @@ -2898,7 +2929,7 @@ undel_line() /* undelete last deleted line */ ud1++; ud2++; } - *ud1 = (char) NULL; + *ud1 = '\0'; draw_line(scr_vert, scr_horz,point,position,curr_line->line_length); } @@ -2938,6 +2969,7 @@ int lines; } scr_vert = scr_vert + i; curr_line = tmp_line; + absolute_lin += i; point = tmp; scanline(point); } @@ -2968,6 +3000,7 @@ int lines; { down(); } + absolute_lin -= i; scr_vert = scr_vert - i; curr_line = tmp_line; point = tmp; @@ -3025,6 +3058,20 @@ adv_line() /* advance to beginning of next line */ } void +from_top() +{ + struct text *tmpline = first_line; + int x = 1; + + while ((tmpline != NULL) && (tmpline != curr_line)) + { + x++; + tmpline = tmpline->next_line; + } + absolute_lin = x; +} + +void sh_command(string) /* execute shell command */ char *string; /* string containing user command */ { @@ -3044,7 +3091,7 @@ char *string; /* string containing user command */ if (!(path = getenv("SHELL"))) path = "/bin/sh"; last_slash = temp_point = path; - while (*temp_point != (char) NULL) + while (*temp_point != '\0') { if (*temp_point == '/') last_slash = ++temp_point; @@ -3116,6 +3163,7 @@ char *string; /* string containing user command */ scr_horz = scr_pos = 0; position = 1; curr_line = line_holder; + from_top(); point = curr_line->line; out_pipe = FALSE; signal(SIGCHLD, SIG_DFL); @@ -3154,8 +3202,9 @@ char *string; /* string containing user command */ } for (value = 1; value < 24; value++) signal(value, SIG_DFL); - execl(path, last_slash, "-c", string, (char *)NULL); - errx(1, exec_err_msg, path); + execl(path, last_slash, "-c", string, NULL); + fprintf(stderr, exec_err_msg, path); + exit(-1); } else /* if the parent */ { @@ -3198,7 +3247,7 @@ char *string; /* string containing user command */ } if (shell_fork) { - printf("%s", continue_msg); + printf(continue_msg); fflush(stdout); while ((in = getchar()) != '\n') ; @@ -3258,12 +3307,9 @@ set_up_term() /* set up the terminal for operating with ae */ if (info_window) { info_type = CONTROL_KEYS; - info_win = newwin(5, COLS, 0, 0); + info_win = newwin(6, 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; @@ -3288,7 +3334,6 @@ resize_check() delwin(text_win); delwin(com_win); delwin(help_win); - delwin(count_win); set_up_term(); redraw(); wrefresh(text_win); @@ -3306,7 +3351,7 @@ struct menu_entries menu_list[]; int counter; int length; int input; - int temp = 0; + int temp; int list_size; int top_offset; /* offset from top where menu items start */ int vert_pos; /* vertical position */ @@ -3388,7 +3433,10 @@ struct menu_entries menu_list[]; wmove(temp_win, (counter + top_offset - off_start), 3); wrefresh(temp_win); - input = wgetch(temp_win); + in = wgetch(temp_win); + input = in; + if (input == -1) + exit(0); if (((tolower(input) >= 'a') && (tolower(input) <= 'z')) || ((input >= '0') && (input <= '9'))) @@ -3631,6 +3679,8 @@ 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); @@ -3658,6 +3708,11 @@ 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, separator); + wstandend(info_win); wrefresh(info_win); } @@ -3691,15 +3746,12 @@ create_info_window() idlok(text_win, TRUE); werase(text_win); info_window = TRUE; - info_win = newwin(5, COLS, 0, 0); + info_win = newwin(6, 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; } @@ -3747,9 +3799,9 @@ int arg; flag = FALSE; string = in_file_name; - if ((string == NULL) || (*string == (char) NULL)) + if ((string == NULL) || (*string == '\0')) string = get_string(save_file_name_prompt, TRUE); - if ((string == NULL) || (*string == (char) NULL)) + if ((string == NULL) || (*string == '\0')) { wmove(com_win, 0, 0); wprintw(com_win, file_not_saved_msg); @@ -3784,7 +3836,7 @@ shell_op() char *string; if (((string = get_string(shell_prompt, TRUE)) != NULL) && - (*string != (char) NULL)) + (*string != '\0')) { sh_command(string); free(string); @@ -3910,14 +3962,14 @@ Format() /* format the paragraph according to set margins */ offset -= position; counter = position; line = temp1 = point; - while ((*temp1 != (char) NULL) && (*temp1 != ' ') && (*temp1 != '\t') && (counter < curr_line->line_length)) + while ((*temp1 != '\0') && (*temp1 != ' ') && (*temp1 != '\t') && (counter < curr_line->line_length)) { *temp2 = *temp1; temp2++; temp1++; counter++; } - *temp2 = (char) NULL; + *temp2 = '\0'; if (position != 1) bol(); while (!Blank_Line(curr_line->prev_line)) @@ -4093,8 +4145,8 @@ ee_init() /* check for init file and read it if it exists */ int temp_int; string = getenv("HOME"); - if (!string) - string = "/root"; /* Set to reasonable default so we don't crash */ + if (string == NULL) + string = "/tmp"; str1 = home = malloc(strlen(string)+10); strcpy(home, string); strcat(home, "/.init.ee"); @@ -4111,7 +4163,7 @@ ee_init() /* check for init file and read it if it exists */ str1 = str2 = string; while (*str2 != '\n') str2++; - *str2 = (char) NULL; + *str2 = '\0'; if (unique_test(string, init_strings) != 1) continue; @@ -4142,7 +4194,7 @@ ee_init() /* check for init file and read it if it exists */ else if (compare(str1, Echo, FALSE)) { str1 = next_word(str1); - if (*str1 != (char) NULL) + if (*str1 != '\0') echo_string(str1); } else if (compare(str1, PRINTCOMMAND, FALSE)) @@ -4266,7 +4318,7 @@ dump_ee_conf() while ((string = fgets(buffer, 512, old_init_file)) != NULL) { length = strlen(string); - string[length - 1] = (char) NULL; + string[length - 1] = '\0'; if (unique_test(string, init_strings) == 1) { @@ -4313,7 +4365,7 @@ char *string; int Counter; temp = string; - while (*temp != (char) NULL) + while (*temp != '\0') { if (*temp == '\\') { @@ -4389,8 +4441,7 @@ ispell_op() return; } (void)sprintf(template, "/tmp/ee.XXXXXXXX"); - name = mktemp(&template[0]); - fd = open(name, O_CREAT | O_EXCL | O_RDWR, 0600); + fd = mkstemp(template); if (fd < 0) { wmove(com_win, 0, 0); wprintw(com_win, create_file_fail_msg, name); @@ -4421,7 +4472,7 @@ struct text *test_line; return(0); pnt = test_line->line; - if ((pnt == NULL) || (*pnt == (char) NULL) || + if ((pnt == NULL) || (*pnt == '\0') || (*pnt == '.') || (*pnt == '>')) return(0); @@ -4430,16 +4481,16 @@ struct text *test_line; pnt = next_word(pnt); } - if (*pnt == (char) NULL) + if (*pnt == '\0') return(0); counter = 0; - while ((*pnt != (char) NULL) && ((*pnt != ' ') && (*pnt != '\t'))) + while ((*pnt != '\0') && ((*pnt != ' ') && (*pnt != '\t'))) { pnt++; counter++; } - while ((*pnt != (char) NULL) && ((*pnt == ' ') || (*pnt == '\t'))) + while ((*pnt != '\0') && ((*pnt == ' ') || (*pnt == '\t'))) { pnt++; counter++; @@ -4490,7 +4541,7 @@ Auto_Format() /* format the paragraph according to set margins */ d_line = NULL; auto_format = FALSE; offset = position; - if ((position != 1) && ((*point == ' ') || (*point == '\t') || (position == curr_line->line_length) || (*point == (char) NULL))) + if ((position != 1) && ((*point == ' ') || (*point == '\t') || (position == curr_line->line_length) || (*point == '\0'))) prev_word(); temp_dword = d_word; temp_dwl = d_wrd_len; @@ -4505,14 +4556,14 @@ Auto_Format() /* format the paragraph according to set margins */ offset -= position; counter = position; line = temp1 = point; - while ((*temp1 != (char) NULL) && (*temp1 != ' ') && (*temp1 != '\t') && (counter < curr_line->line_length)) + while ((*temp1 != '\0') && (*temp1 != ' ') && (*temp1 != '\t') && (counter < curr_line->line_length)) { *temp2 = *temp1; temp2++; temp1++; counter++; } - *temp2 = (char) NULL; + *temp2 = '\0'; if (position != 1) bol(); while (!Blank_Line(curr_line->prev_line)) @@ -4814,9 +4865,9 @@ char * string, *substring; { char *full, *sub; - for (sub = substring; (sub != NULL) && (*sub != (char)NULL); sub++) + for (sub = substring; (sub != NULL) && (*sub != '\0'); sub++) { - for (full = string; (full != NULL) && (*full != (char)NULL); + for (full = string; (full != NULL) && (*full != '\0'); full++) { if (*sub == *full) @@ -4859,7 +4910,7 @@ char *name; slash = strchr(name, '/'); if (slash == NULL) return(name); - *slash = (char) NULL; + *slash = '\0'; user = (struct passwd *) getpwnam((name + 1)); *slash = '/'; } @@ -4879,10 +4930,10 @@ char *name; tmp = buffer; index = 0; - while ((*tmp != (char) NULL) && (index < 1024)) + while ((*tmp != '\0') && (index < 1024)) { - while ((*tmp != (char) NULL) && (*tmp != '$') && + while ((*tmp != '\0') && (*tmp != '$') && (index < 1024)) { long_buffer[index] = *tmp; @@ -4898,7 +4949,7 @@ char *name; if (*tmp == '{') /* } */ /* bracketed variable name */ { tmp++; /* { */ - while ((*tmp != (char) NULL) && + while ((*tmp != '\0') && (*tmp != '}') && (counter < 128)) { @@ -4911,7 +4962,7 @@ char *name; } else { - while ((*tmp != (char) NULL) && + while ((*tmp != '\0') && (*tmp != '/') && (*tmp != '$') && (counter < 128)) @@ -4921,7 +4972,7 @@ char *name; tmp++; } } - short_buffer[counter] = (char) NULL; + short_buffer[counter] = '\0'; if ((slash = getenv(short_buffer)) != NULL) { offset = strlen(slash); @@ -4944,7 +4995,7 @@ char *name; if (index == 1024) return(buffer); else - long_buffer[index] = (char) NULL; + long_buffer[index] = '\0'; if (name != buffer) free(buffer); @@ -4996,19 +5047,6 @@ 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, @@ -5154,7 +5192,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"); + exec_err_msg = catgetlocal( 103, "could not exec %s\n"); 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"); @@ -5202,8 +5240,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 begin of file "); - emacs_help_text[3] = catgetlocal( 148, "^c command ^k delete line ^u end of file "); + 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[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 "); @@ -5222,10 +5260,10 @@ 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 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[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 ^z next word"); + emacs_control_keys[3] = catgetlocal( 157, "^t top of text ^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"); diff --git a/contrib/ee/ee.msg b/contrib/ee/ee.msg index 4b8cc34..28fa542 100644 --- a/contrib/ee/ee.msg +++ b/contrib/ee/ee.msg @@ -52,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 ESC-Enter: exit ee " +44 "^[ (escape) menu " 45 " " 46 "Commands: " 47 "help : get this info file : print file name " @@ -69,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 ESC-Enter: exit ee " +61 "^c command ^k delete char ^f undelete char " 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 " @@ -111,7 +111,7 @@ $quote " 100 " ...searching" 101 "string \"%s\" not found" 102 "search for: " -103 "could not exec %s" +103 "could not exec %s\n" 104 "press return to continue " 105 "press Esc to cancel" 106 "menu too large for window" @@ -155,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 begin of file " -148 "^c command ^k delete line ^u end of file " +147 "^b back 1 char ^j undel char ^t top of text " +148 "^c command ^k delete line ^u bottom of text " 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 " @@ -165,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 begin of file ^e end of line ^r restore word ^f forward 1 char " +157 "^t top of text ^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" diff --git a/contrib/ee/ee_version.h b/contrib/ee/ee_version.h new file mode 100644 index 0000000..339e480 --- /dev/null +++ b/contrib/ee/ee_version.h @@ -0,0 +1,6 @@ +/* + | provide a version number for ee + */ + +#define EE_VERSION "1.5.0" +#define DATE_STRING "$Date: 2009/02/17 03:32:30 $" diff --git a/contrib/ee/new_curse.c b/contrib/ee/new_curse.c index 9ea8269..5ceec24 100644 --- a/contrib/ee/new_curse.c +++ b/contrib/ee/new_curse.c @@ -5,46 +5,44 @@ | | 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. + | Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995, 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 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. - | - | Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995 Hugh Mahon + | | All are rights reserved. | - | $Header: /home/hugh/sources/old_ae/RCS/new_curse.c,v 1.50 2001/01/19 02:53:40 hugh Exp hugh $ + | $Header: /home/hugh/sources/old_ae/RCS/new_curse.c,v 1.54 2002/09/21 00:47:14 hugh Exp $ | */ -char *copyright_message[] = { "Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995 Hugh Mahon", +char *copyright_message[] = { "Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995, 2009 Hugh Mahon", "All rights are reserved."}; -char * new_curse_name= "@(#) new_curse.c $Revision: 1.50 $"; +char * new_curse_name= "@(#) new_curse.c $Revision: 1.54 $"; #include "new_curse.h" #include <signal.h> @@ -501,6 +499,10 @@ int interrupt_flag = FALSE; /* set true if SIGWINCH received */ char *Strings; #endif +#if !defined(TERMCAP) +#define TERMCAP "/etc/termcap" +#endif + struct KEYS { int length; /* length of string sent by key */ char *string; /* string sent by key */ @@ -658,6 +660,13 @@ int *virtual_lines; static char nc_scrolling_ability = FALSE; +char *terminfo_path[] = { + "/usr/lib/terminfo", + "/usr/share/lib/terminfo", + "/usr/share/terminfo", + NULL + }; + #ifdef CAP #if defined(__STDC__) || defined(__cplusplus) @@ -767,6 +776,7 @@ void initscr() /* initialize terminal for operations */ { int value; + int counter; char *lines_string; char *columns_string; #ifdef CAP @@ -899,30 +909,26 @@ printf("starting initscr \n");fflush(stdout); Term_File_name = malloc(Data_Line_len); sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); Fildes = open(Term_File_name, O_RDONLY); + if (Fildes == -1) + { + sprintf(Term_File_name, "%s/%x/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); + Fildes = open(Term_File_name, O_RDONLY); + } } - if (Fildes == -1) - { - TERM_PATH = "/usr/lib/terminfo"; - Data_Line_len = 23 + strlen(TERM_PATH) + strlen(TERMINAL_TYPE); - Term_File_name = malloc(Data_Line_len); - sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); - Fildes = open(Term_File_name, O_RDONLY); - } - if (Fildes == -1) - { - TERM_PATH = "/usr/share/lib/terminfo"; - Data_Line_len = 23 + strlen(TERM_PATH) + strlen(TERMINAL_TYPE); - Term_File_name = malloc(Data_Line_len); - sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); - Fildes = open(Term_File_name, O_RDONLY); - } - if (Fildes == -1) + counter = 0; + while ((Fildes == -1) && (terminfo_path[counter] != NULL)) { - TERM_PATH = "/usr/share/terminfo"; + TERM_PATH = terminfo_path[counter]; Data_Line_len = 23 + strlen(TERM_PATH) + strlen(TERMINAL_TYPE); Term_File_name = malloc(Data_Line_len); sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); Fildes = open(Term_File_name, O_RDONLY); + if (Fildes == -1) + { + sprintf(Term_File_name, "%s/%x/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE); + Fildes = open(Term_File_name, O_RDONLY); + } + counter++; } if (Fildes == -1) { @@ -939,15 +945,15 @@ printf("starting initscr \n");fflush(stdout); if ((pointer = Term_File_name = getenv("TERMCAP")) != NULL) { if (*Term_File_name != '/') - Term_File_name = "/etc/termcap"; + Term_File_name = TERMCAP; } else { - Term_File_name = "/etc/termcap"; + Term_File_name = TERMCAP; } if ((TFP = fopen(Term_File_name, "r")) == NULL) { - printf("unable to open /etc/termcap file \n"); + printf("unable to open %s file \n", TERMCAP); exit(0); } for (value = 0; value < 1024; value++) @@ -1105,7 +1111,7 @@ INFO_PARSE() /* parse off the data in the terminfo data file */ Num_bools--; Booleans[counter++] = *TERM_data_ptr++; } - if (((unsigned int) TERM_data_ptr) & 1) /* force alignment */ + if ((unsigned long)TERM_data_ptr & 1) /* force alignment */ TERM_data_ptr++; counter = 0; while (Num_ints) @@ -1360,7 +1366,7 @@ Find_term() /* find terminal description in termcap file */ char *Name; char *Ftemp; - Ftemp = Name = malloc(strlen(TERMINAL_TYPE + 1) + 1); + Ftemp = Name = malloc(strlen(TERMINAL_TYPE) + 2); strcpy(Name, TERMINAL_TYPE); while (*Ftemp != (char)NULL) Ftemp++; @@ -1468,13 +1474,13 @@ int columns; for (i = 0; i < columns; i++) { tmp->row[i] = ' '; - tmp->attributes[i] = (char) NULL; + tmp->attributes[i] = '\0'; } tmp->scroll = tmp->changed = FALSE; - tmp->row[0] = (char) NULL; - tmp->attributes[0] = (char) NULL; - tmp->row[columns] = (char) NULL; - tmp->attributes[columns] = (char) NULL; + tmp->row[0] = '\0'; + tmp->attributes[0] = '\0'; + tmp->row[columns] = '\0'; + tmp->attributes[columns] = '\0'; tmp->last_char = 0; return(tmp); } @@ -1859,7 +1865,7 @@ int place; } delay = 0; Otemp = string; - while (*Otemp != (char) NULL) + while (*Otemp != '\0') { if (*Otemp == '%') { @@ -1877,7 +1883,7 @@ int place; | find the end of the | conditional statement */ - while ((strncmp(Otemp, "%t", 2)) && (*Otemp != (char) NULL)) + while ((strncmp(Otemp, "%t", 2)) && (*Otemp != '\0')) { /* | move past '%' @@ -1905,12 +1911,12 @@ int place; | find 'else' or end | of if statement */ - while ((strncmp(Otemp, "%e", 2)) && (strncmp(Otemp, "%;", 2)) && (*Otemp != (char) NULL)) + while ((strncmp(Otemp, "%e", 2)) && (strncmp(Otemp, "%;", 2)) && (*Otemp != '\0')) Otemp++; /* | if an 'else' found */ - if ((*Otemp != (char) NULL) && (!strncmp(Otemp, "%e", 2))) + if ((*Otemp != '\0') && (!strncmp(Otemp, "%e", 2))) { Otemp++; Otemp++; @@ -1918,12 +1924,12 @@ int place; /* | check for 'then' part */ - while ((*tchar != (char) NULL) && (strncmp(tchar, "%t", 2)) && (strncmp(tchar, "%;", 2))) + while ((*tchar != '\0') && (strncmp(tchar, "%t", 2)) && (strncmp(tchar, "%;", 2))) tchar++; /* | if end of string */ - if (*tchar == (char) NULL) + if (*tchar == '\0') { EVAL = FALSE; Cond_FLAG = FALSE; @@ -1947,7 +1953,7 @@ int place; | get out of if | statement */ - else if ((*Otemp != (char) NULL) && (!strncmp(Otemp, "%;", 2))) + else if ((*Otemp != '\0') && (!strncmp(Otemp, "%;", 2))) { EVAL = FALSE; Otemp++; @@ -1967,9 +1973,9 @@ int place; Cond_FLAG = FALSE; if (*Otemp != ';') { - while ((*Otemp != (char) NULL) && (strncmp(Otemp, "%;", 2))) + while ((*Otemp != '\0') && (strncmp(Otemp, "%;", 2))) Otemp++; - if (*Otemp != (char) NULL) + if (*Otemp != '\0') { Otemp++; Otemp++; @@ -2038,12 +2044,12 @@ int cols; for (j = line->last_char; j < column; j++) { line->row[j] = ' '; - line->attributes[j] = (char) NULL; + line->attributes[j] = '\0'; } } line->last_char = column; - line->row[column] = (char) NULL; - line->attributes[column] = (char) NULL; + line->row[column] = '\0'; + line->attributes[column] = '\0'; line->changed = TRUE; } @@ -2175,14 +2181,14 @@ WINDOW *window; virt_col++, user_col++) { virtual_line->row[virt_col] = ' '; - virtual_line->attributes[virt_col] = (char) NULL; + virtual_line->attributes[virt_col] = '\0'; } } if (virtual_scr->Num_cols != window->Num_cols) { if (virtual_line->last_char < (user_line->last_char + window->SC)) { - if (virtual_line->row[virtual_line->last_char] == (char) NULL) + if (virtual_line->row[virtual_line->last_char] == '\0') virtual_line->row[virtual_line->last_char] = ' '; virtual_line->last_char = min(virtual_scr->Num_cols, @@ -2191,7 +2197,7 @@ WINDOW *window; } else virtual_line->last_char = user_line->last_char; - virtual_line->row[virtual_line->last_char] = (char) NULL; + virtual_line->row[virtual_line->last_char] = '\0'; virtual_line->changed = user_line->changed; virtual_line = virtual_line->next_screen; user_line = user_line->next_screen; @@ -2336,7 +2342,7 @@ int first_char; /* first character of sequence */ Count = 0; Gtemp = string; string[Count++] = first_char; - string[Count] = (char) NULL; + string[Count] = '\0'; Time_Out = FALSE; #ifndef BSD_SELECT signal(SIGALRM, Clear); @@ -2360,7 +2366,7 @@ fflush(stderr); if (in_char != -1) { string[Count++] = in_char; - string[Count] = (char) NULL; + string[Count] = '\0'; St_point = KEY_TOS; while ((St_point != NULL) && (!Found)) { @@ -2446,10 +2452,10 @@ int c; for (j = tmpline->last_char; j < column; j++) { tmpline->row[j] = ' '; - tmpline->attributes[j] = (char) NULL; + tmpline->attributes[j] = '\0'; } - tmpline->row[column + 1] = (char) NULL; - tmpline->attributes[column + 1] = (char) NULL; + tmpline->row[column + 1] = '\0'; + tmpline->attributes[column + 1] = '\0'; tmpline->last_char = column + 1; } } @@ -2627,7 +2633,7 @@ char *string; { char *wstring; - for (wstring = string; *wstring != (char) NULL; wstring++) + for (wstring = string; *wstring != '\0'; wstring++) waddch(window, *wstring); } @@ -2705,7 +2711,7 @@ noraw() /* set to normal character read mode */ Terminal.c_lflag |= ICANON; /* enable canonical operation */ Terminal.c_lflag |= ISIG; /* enable signal checking */ Terminal.c_cc[VEOF] = 4; /* EOF character = 4 */ - Terminal.c_cc[VEOL] = (char) NULL; /* EOL = 0 */ + Terminal.c_cc[VEOL] = '\0'; /* EOL = 0 */ Terminal.c_cc[VINTR] = Intr; /* reset interrupt char */ value = ioctl(0, TCSETA, &Terminal); /* set characteristics */ #else @@ -2873,7 +2879,7 @@ wprintw(WINDOW *window, const char *format, ...) #endif /* __STDC__ */ fpoint = (char *) format; - while (*fpoint != (char) NULL) + while (*fpoint != '\0') { if (*fpoint == '%') { @@ -2950,12 +2956,12 @@ struct _line *line2; att1 = line1->attributes; att2 = line2->attributes; i = 0; - while ((c1[i] != (char) NULL) && (c2[i] != (char) NULL) && (c1[i] == c2[i]) && (att1[i] == att2[i])) + while ((c1[i] != '\0') && (c2[i] != '\0') && (c1[i] == c2[i]) && (att1[i] == att2[i])) i++; count1 = i + 1; - if ((count1 == 1) && (c1[i] == (char) NULL) && (c2[i] == (char) NULL)) + if ((count1 == 1) && (c1[i] == '\0') && (c2[i] == '\0')) count1 = 0; /* both lines blank */ - else if ((c1[i] == (char) NULL) && (c2[i] == (char) NULL)) + else if ((c1[i] == '\0') && (c2[i] == '\0')) count1 = -1; /* equal */ else count1 = 1; /* lines unequal */ @@ -3108,9 +3114,9 @@ int row, column; for (x = column; x<window->Num_cols; x++) { tmp1->row[x] = ' '; - tmp1->attributes[x] = (char) NULL; + tmp1->attributes[x] = '\0'; } - tmp1->row[column] = (char) NULL; + tmp1->row[column] = '\0'; tmp1->last_char = column; if (column < COLS) { @@ -3152,16 +3158,16 @@ struct _line *pointer_new, *pointer_old; old_lin = pointer_old->row; old_att = pointer_old->attributes; end_old = end_new = offset; - while (((new_lin[end_new] != old_lin[end_old]) || (new_att[end_new] != old_att[end_old])) && (old_lin[end_old] != (char) NULL) && (new_lin[end_old] != (char) NULL)) + while (((new_lin[end_new] != old_lin[end_old]) || (new_att[end_new] != old_att[end_old])) && (old_lin[end_old] != '\0') && (new_lin[end_old] != '\0')) end_old++; - if (old_lin[end_old] != (char) NULL) + if (old_lin[end_old] != '\0') { k = 0; - while ((old_lin[end_old+k] == new_lin[end_new+k]) && (new_att[end_new+k] == old_att[end_old+k]) && (new_lin[end_new+k] != (char) NULL) && (old_lin[end_old+k] != (char) NULL) && (k < 10)) + while ((old_lin[end_old+k] == new_lin[end_new+k]) && (new_att[end_new+k] == old_att[end_old+k]) && (new_lin[end_new+k] != '\0') && (old_lin[end_old+k] != '\0') && (k < 10)) k++; - if ((k > 8) || ((new_lin[end_new+k] == (char) NULL) && (k != 0))) + if ((k > 8) || ((new_lin[end_new+k] == '\0') && (k != 0))) { - if (new_lin[end_new+k] == (char) NULL) + if (new_lin[end_new+k] == '\0') { Position(window, line, (end_new+k)); CLEAR_TO_EOL(window, line, (end_new+k)); @@ -3169,7 +3175,7 @@ struct _line *pointer_new, *pointer_old; Position(window, line, offset); for (k = offset; k < end_old; k++) Char_del(old_lin, old_att, offset, window->Num_cols); - while ((old_lin[offset] != (char) NULL) && (offset < COLS)) + while ((old_lin[offset] != '\0') && (offset < COLS)) offset++; pointer_old->last_char = offset; changed = TRUE; @@ -3206,12 +3212,12 @@ struct _line *pointer_new, *pointer_old; old_lin = pointer_old->row; old_att = pointer_old->attributes; end_old = end_new = offset; - while (((new_lin[end_new] != old_lin[end_old]) || (new_att[end_new] != old_att[end_old])) && (new_lin[end_new] != (char) NULL) && (old_lin[end_new] != (char) NULL)) + while (((new_lin[end_new] != old_lin[end_old]) || (new_att[end_new] != old_att[end_old])) && (new_lin[end_new] != '\0') && (old_lin[end_new] != '\0')) end_new++; - if (new_lin[end_new] != (char) NULL) + if (new_lin[end_new] != '\0') { k = 0; - while ((old_lin[end_old+k] == new_lin[end_new+k]) && (old_att[end_old+k] == new_att[end_new+k]) && (new_lin[end_new+k] != (char) NULL) && (old_lin[end_old+k] != (char) NULL) && (k < 10)) + while ((old_lin[end_old+k] == new_lin[end_new+k]) && (old_att[end_old+k] == new_att[end_new+k]) && (new_lin[end_new+k] != '\0') && (old_lin[end_old+k] != '\0') && (k < 10)) k++; /* | check for commonality between rest of lines (are the old @@ -3219,11 +3225,11 @@ struct _line *pointer_new, *pointer_old; | if the rest of the lines are common, do not insert text */ old_off = end_new; - while ((old_lin[old_off] != (char) NULL) && (new_lin[old_off] != (char) NULL) && (old_lin[old_off] == new_lin[old_off]) && (old_att[old_off] == new_att[old_off])) + while ((old_lin[old_off] != '\0') && (new_lin[old_off] != '\0') && (old_lin[old_off] == new_lin[old_off]) && (old_att[old_off] == new_att[old_off])) old_off++; if ((old_lin[old_off] == new_lin[old_off]) && (old_att[old_off] == new_att[old_off])) same = TRUE; - if ((!same) && ((k > 8) || ((new_lin[end_new+k] == (char) NULL) && (k != 0)))) + if ((!same) && ((k > 8) || ((new_lin[end_new+k] == '\0') && (k != 0)))) { Position(window, line, offset); insert = FALSE; @@ -3240,7 +3246,7 @@ struct _line *pointer_new, *pointer_old; } if (insert) String_Out(String_table[ei__], NULL, 0); - while ((old_lin[offset] != (char) NULL) && (offset < COLS)) + while ((old_lin[offset] != '\0') && (offset < COLS)) offset++; pointer_old->last_char = offset; changed = TRUE; @@ -3311,7 +3317,7 @@ doupdate() for (from_top = 0, curr = curscr->first_line; from_top < curscr->Num_lines; from_top++, curr = curr->next_screen) { Position(curscr, from_top, 0); - for (j = 0; (curr->row[j] != (char) NULL) && (j < curscr->Num_cols); j++) + for (j = 0; (curr->row[j] != '\0') && (j < curscr->Num_cols); j++) { Char_out(curr->row[j], curr->attributes[j], curr->row, curr->attributes, j); } @@ -3533,7 +3539,7 @@ doupdate() */ if (((String_table[ic__]) || (String_table[im__])) && - (String_table[dc__]) && (curr->row[0] != (char) NULL) && + (String_table[dc__]) && (curr->row[0] != '\0') && (!NC_chinese)) { j = 0; @@ -3542,11 +3548,11 @@ doupdate() vrt_att = virt->attributes; cur_lin = curr->row; cur_att = curr->attributes; - while ((vrt_lin[j] != (char) NULL) && (j < window->Num_cols)) + while ((vrt_lin[j] != '\0') && (j < window->Num_cols)) { if ((STAND) && (Booleans[xs__])) { - while ((vrt_lin[j] == cur_lin[j]) && (vrt_att[j] == cur_att[j]) && (vrt_lin[j] != (char) NULL) && (vrt_att[j])) + while ((vrt_lin[j] == cur_lin[j]) && (vrt_att[j] == cur_att[j]) && (vrt_lin[j] != '\0') && (vrt_att[j])) j++; if ((STAND) && (!vrt_att[j])) { @@ -3558,7 +3564,7 @@ doupdate() } else { - while ((vrt_lin[j] == cur_lin[j]) && (vrt_att[j] == cur_att[j]) && (vrt_lin[j] != (char) NULL)) + while ((vrt_lin[j] == cur_lin[j]) && (vrt_att[j] == cur_att[j]) && (vrt_lin[j] != '\0')) j++; } if ((vrt_att[j] != cur_att[j]) && (cur_att[j]) && (Booleans[xs__])) @@ -3568,7 +3574,7 @@ doupdate() attribute_off(); attribute_off(); } - if (vrt_lin[j] != (char) NULL) + if (vrt_lin[j] != '\0') { begin_new = j; begin_old = j; @@ -3586,7 +3592,7 @@ doupdate() changed = check_insert(window, from_top, j, virt, curr); if (((!changed) || (cur_lin[j] != vrt_lin[j]) || (cur_att[j] != vrt_att[j])) && (j < window->Num_cols)) { - if ((vrt_lin[j] == ' ') && (cur_lin[j] == (char) NULL) && (vrt_att[j] == cur_att[j])) + if ((vrt_lin[j] == ' ') && (cur_lin[j] == '\0') && (vrt_att[j] == cur_att[j])) cur_lin[j] = ' '; else { @@ -3594,7 +3600,7 @@ doupdate() Char_out(vrt_lin[j], vrt_att[j], cur_lin, cur_att, j); } } - if ((vrt_lin[j] != (char) NULL)) + if ((vrt_lin[j] != '\0')) j++; } if ((STAND) && (!vrt_att[j])) @@ -3604,7 +3610,7 @@ doupdate() attribute_off(); } } - if ((vrt_lin[j] == (char) NULL) && (cur_lin[j] != (char) NULL)) + if ((vrt_lin[j] == '\0') && (cur_lin[j] != '\0')) { Position(window, from_top, j); CLEAR_TO_EOL(window, from_top, j); @@ -3617,9 +3623,9 @@ doupdate() att1 = curr->attributes; c2 = virt->row; att2 = virt->attributes; - while ((j < window->Num_cols) && (c2[j] != (char) NULL)) + while ((j < window->Num_cols) && (c2[j] != '\0')) { - while ((c1[j] == c2[j]) && (att1[j] == att2[j]) && (j < window->Num_cols) && (c2[j] != (char) NULL)) + while ((c1[j] == c2[j]) && (att1[j] == att2[j]) && (j < window->Num_cols) && (c2[j] != '\0')) j++; /* @@ -3631,16 +3637,16 @@ doupdate() j--; begin_old = j; begin_new = j; - if ((j < window->Num_cols) && (c2[j] != (char) NULL)) + if ((j < window->Num_cols) && (c2[j] != '\0')) { Position(window, from_top, begin_old); CLEAR_TO_EOL(window, from_top, j); Position(window, from_top, begin_old); - for (j = begin_old; (c2[j] != (char) NULL) && (j < window->Num_cols); j++) + for (j = begin_old; (c2[j] != '\0') && (j < window->Num_cols); j++) Char_out(c2[j], att2[j], c1, att1, j); } } - if ((c2[j] == (char) NULL) && (c1[j] != (char) NULL)) + if ((c2[j] == '\0') && (c1[j] != '\0')) { Position(window, from_top, j); CLEAR_TO_EOL(window, from_top, j); @@ -3696,7 +3702,7 @@ int maxlen; { int one, two; - for (one = offset, two = offset+1; (line[one] != (char) NULL) && (one < maxlen); one++, two++) + for (one = offset, two = offset+1; (line[one] != '\0') && (one < maxlen); one++, two++) { line[one] = line[two]; attrib[one] = attrib[two]; @@ -3716,7 +3722,7 @@ int maxlen; int one, two; one = 0; - while ((line[one] != (char) NULL) && (one < (maxlen - 2))) + while ((line[one] != '\0') && (one < (maxlen - 2))) one++; for (two = one + 1; (two > offset); one--, two--) { |