summaryrefslogtreecommitdiff
path: root/usr.bin/less/less.h
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2003-04-13 18:26:27 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2003-04-13 18:26:27 +0000
commit5569f8a6b6c831077f77d24e2c23d2e2d41fb95f (patch)
treeb79fe763d81906631382fbdc80f3b42a44b6c668 /usr.bin/less/less.h
parent6b9d6b99a4fdda2ee6d9a30dec452d8202fb2017 (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.h257
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();