diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2003-04-13 18:26:27 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2003-04-13 18:26:27 +0000 |
commit | 5569f8a6b6c831077f77d24e2c23d2e2d41fb95f (patch) | |
tree | b79fe763d81906631382fbdc80f3b42a44b6c668 /usr.bin/less/less.h | |
parent | 6b9d6b99a4fdda2ee6d9a30dec452d8202fb2017 (diff) |
Merge in less-381 w/ local changes and remove obsolete files.
Diffstat (limited to 'usr.bin/less/less.h')
-rw-r--r-- | usr.bin/less/less.h | 257 |
1 files changed, 210 insertions, 47 deletions
diff --git a/usr.bin/less/less.h b/usr.bin/less/less.h index cbeeed43cb0..059a6dab55b 100644 --- a/usr.bin/less/less.h +++ b/usr.bin/less/less.h @@ -1,29 +1,11 @@ -/* $OpenBSD: less.h,v 1.3 2001/01/29 01:58:02 niklas Exp $ */ - /* - * Copyright (c) 1984,1985,1989,1994,1995 Mark Nudelman - * All rights reserved. + * Copyright (C) 1984-2002 Mark Nudelman * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice in the documentation and/or other materials provided with - * the distribution. + * You may distribute under the terms of either the GNU General Public + * License or the Less License, as specified in the README file. * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * For more information about less, or for information on how to + * contact the author, see the README file. */ @@ -32,6 +14,14 @@ */ /* + * Defines for MSDOS_COMPILER. + */ +#define MSOFTC 1 /* Microsoft C */ +#define BORLANDC 2 /* Borland C */ +#define WIN32C 3 /* Windows (Borland C or Microsoft C) */ +#define DJGPPC 4 /* DJGPP C */ + +/* * Include the file of compile-time options. * The <> make cc search for it in -I., not srcdir. */ @@ -55,6 +45,11 @@ #define VOID_POINTER char * #define void int #endif +#if HAVE_CONST +#define constant const +#else +#define constant +#endif #define public /* PUBLIC FUNCTION */ @@ -75,23 +70,50 @@ #if HAVE_CTYPE_H #include <ctype.h> #endif -#if STDC_HEADERS +#if HAVE_LIMITS_H +#include <limits.h> +#endif +#if HAVE_STDLIB_H #include <stdlib.h> +#endif +#if HAVE_STRING_H #include <string.h> #endif +#ifdef _OSK +#include <modes.h> +#include <strings.h> +#endif +#if MSDOS_COMPILER==WIN32C || OS2 +#include <io.h> +#endif +#if MSDOS_COMPILER==DJGPPC +#include <io.h> +#include <sys/exceptn.h> +#include <conio.h> +#include <pc.h> +#endif -#if !STDC_HEADERS +#if !HAVE_STDLIB_H char *getenv(); off_t lseek(); VOID_POINTER calloc(); void free(); #endif +/* + * Simple lowercase test which can be used during option processing + * (before options are parsed which might tell us what charset to use). + */ +#define SIMPLE_IS_UPPER(c) ((c) >= 'A' && (c) <= 'Z') +#define SIMPLE_IS_LOWER(c) ((c) >= 'a' && (c) <= 'z') +#define SIMPLE_TO_UPPER(c) ((c) - 'a' + 'A') +#define SIMPLE_TO_LOWER(c) ((c) - 'A' + 'a') + #if !HAVE_UPPER_LOWER -#define isupper(c) ((c) >= 'A' && (c) <= 'Z') -#define islower(c) ((c) >= 'a' && (c) <= 'z') -#define toupper(c) ((c) - 'a' + 'A') -#define tolower(c) ((c) - 'A' + 'a') +#define isupper(c) SIMPLE_IS_UPPER(c) +#define islower(c) SIMPLE_IS_LOWER(c) +#define toupper(c) SIMPLE_TO_UPPER(c) +#define tolower(c) SIMPLE_TO_LOWER(c) #endif #ifndef NULL @@ -109,7 +131,7 @@ void free(); #define OPT_ON 1 #define OPT_ONPLUS 2 -#ifndef HAVE_MEMCPY +#if !HAVE_MEMCPY #ifndef memcpy #define memcpy(to,from,len) bcopy((from),(to),(len)) #endif @@ -117,38 +139,77 @@ void free(); #define BAD_LSEEK ((off_t)-1) +#ifndef CHAR_BIT +#define CHAR_BIT 8 +#endif + /* - * Special types and constants. + * Upper bound on the string length of an integer converted to string. + * 302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit; + * add 1 for integer division truncation; add 1 more for a minus sign. */ -typedef off_t POSITION; +#define INT_STRLEN_BOUND(t) ((sizeof(t) * CHAR_BIT - 1) * 302 / 1000 + 1 + 1) + /* - * {{ Warning: if POSITION is changed to other than "long", - * you may have to change some of the printfs which use "%ld" - * to print a variable of type POSITION. }} + * Special types and constants. */ +typedef off_t POSITION; +typedef off_t LINENUM; +#define MIN_LINENUM_WIDTH 7 /* Min printing width of a line number */ #define NULL_POSITION ((POSITION)(-1)) /* * Flags for open() */ -#if MSOFTC || OS2 +#if MSDOS_COMPILER || OS2 #define OPEN_READ (O_RDONLY|O_BINARY) #else +#ifdef _OSK +#define OPEN_READ (S_IREAD) +#else +#ifdef O_RDONLY +#define OPEN_READ (O_RDONLY) +#else #define OPEN_READ (0) #endif -#if MSOFTC || OS2 +#endif +#endif + +#if defined(O_WRONLY) && defined(O_APPEND) #define OPEN_APPEND (O_APPEND|O_WRONLY) #else +#ifdef _OSK +#define OPEN_APPEND (S_IWRITE) +#else #define OPEN_APPEND (1) #endif +#endif -#if MSOFTC || OS2 -#define OPEN_TTYIN() open("CON", O_BINARY|O_RDONLY) +/* + * Set a file descriptor to binary mode. + */ +#if MSDOS_COMPILER==MSOFTC +#define SET_BINARY(f) _setmode(f, _O_BINARY); +#else +#if MSDOS_COMPILER || OS2 +#define SET_BINARY(f) setmode(f, O_BINARY) +#else +#define SET_BINARY(f) +#endif +#endif + +/* + * Does the shell treat "?" as a metacharacter? + */ +#if MSDOS_COMPILER || OS2 || _OSK +#define SHELL_META_QUEST 0 #else -#define OPEN_TTYIN() open("/dev/tty", 0) +#define SHELL_META_QUEST 1 #endif +#define SPACES_IN_FILENAMES 1 + /* * An IFILE represents an input file. */ @@ -172,6 +233,7 @@ typedef union parg { char *p_string; int p_int; + LINENUM p_linenum; } PARG; #define NULL_PARG ((PARG *)NULL) @@ -202,12 +264,14 @@ struct textlist #define BS_CONTROL 2 /* \b treated as control char; prints as ^H */ /* How should we search? */ -#define SRCH_FORW 0001 /* Search forward from current position */ -#define SRCH_BACK 0002 /* Search backward from current position */ -#define SRCH_FIND_ALL 0010 /* Find and highlight all matches */ -#define SRCH_NOMATCH 0100 /* Search for non-matching lines */ -#define SRCH_PAST_EOF 0200 /* Search past end-of-file, into next file */ -#define SRCH_FIRST_FILE 0400 /* Search starting at the first file */ +#define SRCH_FORW 000001 /* Search forward from current position */ +#define SRCH_BACK 000002 /* Search backward from current position */ +#define SRCH_NO_MOVE 000004 /* Highlight, but don't move */ +#define SRCH_FIND_ALL 000010 /* Find and highlight all matches */ +#define SRCH_NO_MATCH 000100 /* Search for non-matching lines */ +#define SRCH_PAST_EOF 000200 /* Search past end-of-file, into next file */ +#define SRCH_FIRST_FILE 000400 /* Search starting at the first file */ +#define SRCH_NO_REGEX 001000 /* Don't use regular expressions */ #define SRCH_REVERSE(t) (((t) & SRCH_FORW) ? \ (((t) & ~SRCH_FORW) | SRCH_BACK) : \ @@ -223,6 +287,8 @@ struct textlist #define CC_ERROR 2 /* Char could not be accepted due to error */ #define CC_PASS 3 /* Char was rejected (internal) */ +#define CF_QUIT_ON_ERASE 0001 /* Abort cmd if its entirely erased */ + /* Special chars used to tell put_line() to do something special */ #define AT_NORMAL (0) #define AT_UNDERLINE (1) @@ -231,10 +297,99 @@ struct textlist #define AT_INVIS (4) #define AT_STANDOUT (5) +#if '0' == 240 +#define IS_EBCDIC_HOST 1 +#endif + +#if IS_EBCDIC_HOST +/* + * Long definition for EBCDIC. + * Since the argument is usually a constant, this macro normally compiles + * into a constant. + */ +#define CONTROL(c) ( \ + (c)=='[' ? '\047' : \ + (c)=='a' ? '\001' : \ + (c)=='b' ? '\002' : \ + (c)=='c' ? '\003' : \ + (c)=='d' ? '\067' : \ + (c)=='e' ? '\055' : \ + (c)=='f' ? '\056' : \ + (c)=='g' ? '\057' : \ + (c)=='h' ? '\026' : \ + (c)=='i' ? '\005' : \ + (c)=='j' ? '\025' : \ + (c)=='k' ? '\013' : \ + (c)=='l' ? '\014' : \ + (c)=='m' ? '\015' : \ + (c)=='n' ? '\016' : \ + (c)=='o' ? '\017' : \ + (c)=='p' ? '\020' : \ + (c)=='q' ? '\021' : \ + (c)=='r' ? '\022' : \ + (c)=='s' ? '\023' : \ + (c)=='t' ? '\074' : \ + (c)=='u' ? '\075' : \ + (c)=='v' ? '\062' : \ + (c)=='w' ? '\046' : \ + (c)=='x' ? '\030' : \ + (c)=='y' ? '\031' : \ + (c)=='z' ? '\077' : \ + (c)=='A' ? '\001' : \ + (c)=='B' ? '\002' : \ + (c)=='C' ? '\003' : \ + (c)=='D' ? '\067' : \ + (c)=='E' ? '\055' : \ + (c)=='F' ? '\056' : \ + (c)=='G' ? '\057' : \ + (c)=='H' ? '\026' : \ + (c)=='I' ? '\005' : \ + (c)=='J' ? '\025' : \ + (c)=='K' ? '\013' : \ + (c)=='L' ? '\014' : \ + (c)=='M' ? '\015' : \ + (c)=='N' ? '\016' : \ + (c)=='O' ? '\017' : \ + (c)=='P' ? '\020' : \ + (c)=='Q' ? '\021' : \ + (c)=='R' ? '\022' : \ + (c)=='S' ? '\023' : \ + (c)=='T' ? '\074' : \ + (c)=='U' ? '\075' : \ + (c)=='V' ? '\062' : \ + (c)=='W' ? '\046' : \ + (c)=='X' ? '\030' : \ + (c)=='Y' ? '\031' : \ + (c)=='Z' ? '\077' : \ + (c)=='|' ? '\031' : \ + (c)=='\\' ? '\034' : \ + (c)=='^' ? '\036' : \ + (c)&077) +#else #define CONTROL(c) ((c)&037) +#endif /* IS_EBCDIC_HOST */ + #define ESC CONTROL('[') -#define SIGNAL(sig,func) signal(sig,func) +#if _OSK_MWC32 +#define LSIGNAL(sig,func) os9_signal(sig,func) +#else +#define LSIGNAL(sig,func) signal(sig,func) +#endif + +#if HAVE_SIGPROCMASK +#if HAVE_SIGSET_T +#else +#undef HAVE_SIGPROCMASK +#endif +#endif +#if HAVE_SIGPROCMASK +#if HAVE_SIGEMPTYSET +#else +#undef sigemptyset +#define sigemptyset(mp) *(mp) = 0 +#endif +#endif #define S_INTERRUPT 01 #define S_STOP 02 @@ -249,7 +404,15 @@ struct textlist #define CH_CANSEEK 001 #define CH_KEEPOPEN 002 #define CH_POPENED 004 +#define CH_HELPFILE 010 #define ch_zero() ((POSITION)0) +#define FAKE_HELPFILE "@/\\less/\\help/\\file/\\@" + #include "funcs.h" + +/* Functions not included in funcs.h */ +void postoa(); +void linenumtoa(); +void inttoa(); |