Apply NetBSD specific patches, mostly related to behaviour of
less(1) as more(1).
This commit is contained in:
parent
e71baf6887
commit
824a88bbba
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: brac.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: brac.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -36,9 +36,7 @@ match_brac(obrac, cbrac, forwdir, n)
|
|||
register int c;
|
||||
register int nest;
|
||||
POSITION pos;
|
||||
int (*chget)();
|
||||
|
||||
extern int ch_forw_get(), ch_back_get();
|
||||
int (*chget) __P((void));
|
||||
|
||||
/*
|
||||
* Seek to the line containing the open bracket.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ch.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: ch.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -140,7 +140,9 @@ extern int logfile;
|
|||
extern char *namelogfile;
|
||||
#endif
|
||||
|
||||
static int ch_addbuf();
|
||||
static int ch_addbuf __P((void));
|
||||
static int buffered __P((BLOCKNUM));
|
||||
static void ch_delbufs __P((void));
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: charset.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: charset.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -117,6 +117,9 @@ static char *binfmt = NULL;
|
|||
static char *utfbinfmt = NULL;
|
||||
public int binattr = AT_STANDOUT;
|
||||
|
||||
static void ichardef __P((char *));
|
||||
static int icharset __P((char *, int));
|
||||
static void ilocale __P((void));
|
||||
|
||||
/*
|
||||
* Define a charset, given a description string.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: cmdbuf.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: cmdbuf.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -22,6 +22,9 @@
|
|||
#if HAVE_STAT
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
#if HAVE_ERRNO_H
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
extern int sc_width;
|
||||
extern int utf_mode;
|
||||
|
@ -34,7 +37,7 @@ static int cmd_offset; /* Index into cmdbuf of first displayed char */
|
|||
static int literal; /* Next input char should not be interpreted */
|
||||
|
||||
#if TAB_COMPLETE_FILENAME
|
||||
static int cmd_complete();
|
||||
static int cmd_complete __P((int));
|
||||
/*
|
||||
* These variables are statics used by cmd_complete.
|
||||
*/
|
||||
|
@ -46,8 +49,24 @@ static char *tk_trial;
|
|||
static struct textlist tk_tlist;
|
||||
#endif
|
||||
|
||||
static int cmd_left();
|
||||
static int cmd_right();
|
||||
static void cmd_repaint __P((char *));
|
||||
static void cmd_home __P((void));
|
||||
static void cmd_lshift __P((void));
|
||||
static void cmd_rshift __P((void));
|
||||
static int cmd_right __P((void));
|
||||
static int cmd_left __P((void));
|
||||
static int cmd_ichar __P((char *, int));
|
||||
static int cmd_erase __P((void));
|
||||
static int cmd_delete __P((void));
|
||||
static int cmd_werase __P((void));
|
||||
static int cmd_wdelete __P((void));
|
||||
static int cmd_kill __P((void));
|
||||
static int cmd_updown __P((int));
|
||||
static int cmd_edit __P((int));
|
||||
static int cmd_istr __P((char *));
|
||||
static char *delimit_word __P((void));
|
||||
static void init_compl __P((void));
|
||||
static char *next_compl __P((int, char *));
|
||||
|
||||
#if SPACES_IN_FILENAMES
|
||||
public char openquote = '"';
|
||||
|
@ -930,7 +949,7 @@ cmd_istr(str)
|
|||
static char *
|
||||
delimit_word()
|
||||
{
|
||||
char *word;
|
||||
char *word = NULL;
|
||||
#if SPACES_IN_FILENAMES
|
||||
char *p;
|
||||
int delim_quoted = 0;
|
||||
|
@ -1374,10 +1393,20 @@ init_cmdhist()
|
|||
char *filename;
|
||||
FILE *f;
|
||||
char *p;
|
||||
#ifdef HAVE_STAT
|
||||
struct stat st;
|
||||
#endif
|
||||
|
||||
filename = histfile_name();
|
||||
if (filename == NULL)
|
||||
return;
|
||||
#ifdef HAVE_STAT
|
||||
/* ignore devices/fifos; allow symlinks */
|
||||
if (stat(filename, &st) < 0)
|
||||
return;
|
||||
if (!S_ISREG(st.st_mode))
|
||||
return;
|
||||
#endif
|
||||
f = fopen(filename, "r");
|
||||
free(filename);
|
||||
if (f == NULL)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: command.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: command.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -56,6 +56,10 @@ extern int screen_trashed; /* The screen has been overwritten */
|
|||
extern int shift_count;
|
||||
extern int oldbot;
|
||||
extern int forw_prompt;
|
||||
extern int be_helpful;
|
||||
extern int more_mode;
|
||||
|
||||
static int helpprompt;
|
||||
|
||||
#if SHELL_ESCAPE
|
||||
static char *shellcmd = NULL; /* For holding last shell command for "!!" */
|
||||
|
@ -478,21 +482,25 @@ mca_search_char(c)
|
|||
* Certain characters as the first char of
|
||||
* the pattern have special meaning:
|
||||
* ! Toggle the NO_MATCH flag
|
||||
* * Toggle the PAST_EOF flag
|
||||
* @ Toggle the FIRST_FILE flag
|
||||
* * Toggle the PAST_EOF flag (less extension)
|
||||
* @ Toggle the FIRST_FILE flag (less extension)
|
||||
*/
|
||||
if (len_cmdbuf() > 0)
|
||||
return (NO_MCA);
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case CONTROL('E'): /* ignore END of file */
|
||||
case '*':
|
||||
if (more_mode)
|
||||
break;
|
||||
case CONTROL('E'): /* ignore END of file */
|
||||
if (mca != A_FILTER)
|
||||
flag = SRCH_PAST_EOF;
|
||||
break;
|
||||
case CONTROL('F'): /* FIRST file */
|
||||
case '@':
|
||||
if (more_mode)
|
||||
break;
|
||||
case CONTROL('F'): /* FIRST file */
|
||||
if (mca != A_FILTER)
|
||||
flag = SRCH_FIRST_FILE;
|
||||
break;
|
||||
|
@ -739,16 +747,23 @@ prompt()
|
|||
clear_bot();
|
||||
clear_cmd();
|
||||
forw_prompt = 0;
|
||||
p = pr_string();
|
||||
if (is_filtering())
|
||||
putstr("& ");
|
||||
if (p == NULL || *p == '\0')
|
||||
putchr(':');
|
||||
else
|
||||
{
|
||||
if (helpprompt) {
|
||||
at_enter(AT_STANDOUT);
|
||||
putstr(p);
|
||||
putstr("[Press 'h' for instructions.]");
|
||||
at_exit();
|
||||
helpprompt = 0;
|
||||
} else {
|
||||
p = pr_string();
|
||||
if (is_filtering())
|
||||
putstr("& ");
|
||||
if (p == NULL || *p == '\0')
|
||||
putchr(':');
|
||||
else
|
||||
{
|
||||
at_enter(AT_STANDOUT);
|
||||
putstr(p);
|
||||
at_exit();
|
||||
}
|
||||
}
|
||||
clear_eol();
|
||||
}
|
||||
|
@ -1758,7 +1773,10 @@ commands()
|
|||
break;
|
||||
|
||||
default:
|
||||
bell();
|
||||
if (be_helpful)
|
||||
helpprompt = 1;
|
||||
else
|
||||
bell();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: decode.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: decode.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -225,6 +225,11 @@ static struct tablelist *list_ecmd_tables = NULL;
|
|||
static struct tablelist *list_var_tables = NULL;
|
||||
static struct tablelist *list_sysvar_tables = NULL;
|
||||
|
||||
static int add_cmd_table __P((struct tablelist **, char *, int));
|
||||
static int cmd_decode __P((struct tablelist *, char *, char **));
|
||||
static int gint __P((char **));
|
||||
static int old_lesskey __P((char *, int));
|
||||
static int new_lesskey __P((char *, int, int));
|
||||
|
||||
/*
|
||||
* Expand special key abbreviations in a command table.
|
||||
|
@ -749,7 +754,7 @@ editchar(c, flags)
|
|||
{
|
||||
int action;
|
||||
int nch;
|
||||
char *s;
|
||||
char *s = NULL; /* XXX: GCC */
|
||||
char usercmd[MAX_CMDLEN+1];
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: edit.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: edit.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -29,7 +29,7 @@ extern int sigs;
|
|||
extern IFILE curr_ifile;
|
||||
extern IFILE old_ifile;
|
||||
extern struct scrpos initial_scrpos;
|
||||
extern void constant *ml_examine;
|
||||
extern void *constant ml_examine;
|
||||
#if SPACES_IN_FILENAMES
|
||||
extern char openquote;
|
||||
extern char closequote;
|
||||
|
@ -50,6 +50,11 @@ char *curr_altfilename = NULL;
|
|||
static void *curr_altpipe;
|
||||
|
||||
|
||||
static void close_file __P((void));
|
||||
static int edit_istep __P((IFILE, int, int));
|
||||
static int edit_inext __P((IFILE, int));
|
||||
static int edit_iprev __P((IFILE, int));
|
||||
|
||||
/*
|
||||
* Textlist functions deal with a list of words separated by spaces.
|
||||
* init_textlist sets up a textlist structure.
|
||||
|
@ -322,7 +327,7 @@ edit_ifile(ifile)
|
|||
* It looks like a bad file. Don't try to open it.
|
||||
*/
|
||||
error("%s", &parg);
|
||||
free(parg.p_string);
|
||||
free((void *)parg.p_string);
|
||||
err1:
|
||||
if (alt_filename != NULL)
|
||||
{
|
||||
|
@ -352,7 +357,7 @@ edit_ifile(ifile)
|
|||
*/
|
||||
parg.p_string = errno_message(filename);
|
||||
error("%s", &parg);
|
||||
free(parg.p_string);
|
||||
free((void *)parg.p_string);
|
||||
goto err1;
|
||||
} else
|
||||
{
|
||||
|
@ -744,7 +749,8 @@ use_logfile(filename)
|
|||
*/
|
||||
filename = shell_unquote(filename);
|
||||
exists = open(filename, OPEN_READ);
|
||||
close(exists);
|
||||
if (exists >= 0)
|
||||
close(exists);
|
||||
exists = (exists >= 0);
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: filename.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: filename.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -62,6 +62,12 @@ extern char openquote;
|
|||
extern char closequote;
|
||||
#endif
|
||||
|
||||
static char *dirfile __P((char *, char *));
|
||||
static POSITION seek_filesize __P((int));
|
||||
static char *readfd __P((FILE *));
|
||||
static int metachar __P((int));
|
||||
static FILE *shellcmd __P((char *));
|
||||
|
||||
/*
|
||||
* Remove quotes around a filename.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: forwback.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: forwback.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -28,6 +28,7 @@ extern int sigs;
|
|||
extern int top_scroll;
|
||||
extern int quiet;
|
||||
extern int sc_width, sc_height;
|
||||
extern int more_mode;
|
||||
extern int plusoption;
|
||||
extern int forw_scroll;
|
||||
extern int back_scroll;
|
||||
|
@ -39,6 +40,9 @@ extern int oldbot;
|
|||
extern char *tagoption;
|
||||
#endif
|
||||
|
||||
static void eof_bell __P((void));
|
||||
static void eof_check __P((void));
|
||||
|
||||
/*
|
||||
* Sound the bell to indicate user is trying to move past end of file.
|
||||
*/
|
||||
|
@ -240,7 +244,8 @@ forw(n, pos, force, only_last, nblank)
|
|||
* start the display after the beginning of the file,
|
||||
* and it is not appropriate to squish in that case.
|
||||
*/
|
||||
if (first_time && pos == NULL_POSITION && !top_scroll &&
|
||||
if ((first_time || more_mode) &&
|
||||
pos == NULL_POSITION && !top_scroll &&
|
||||
#if TAGS
|
||||
tagoption == NULL &&
|
||||
#endif
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* $NetBSD: funcs.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: funcs.h,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
public char * save ();
|
||||
public VOID_POINTER ecalloc ();
|
||||
public char * skipsp ();
|
||||
public int sprefix ();
|
||||
public void quit ();
|
||||
public void quit () __attribute__((__noreturn__));
|
||||
public void raw_mode ();
|
||||
public void scrsize ();
|
||||
public char * special_key_str ();
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
/* $NetBSD: help.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: help.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/* This file was generated by mkhelp from less.hlp */
|
||||
#include "less.h"
|
||||
#ifdef SMALL
|
||||
constant char helpdata[] = "\nNo help available\n";
|
||||
#else
|
||||
constant char helpdata[] = {
|
||||
'\n',
|
||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S','\b','S','U','\b','U','M','\b','M','M','\b','M','A','\b','A','R','\b','R','Y','\b','Y',' ','O','\b','O','F','\b','F',' ','L','\b','L','E','\b','E','S','\b','S','S','\b','S',' ','C','\b','C','O','\b','O','M','\b','M','M','\b','M','A','\b','A','N','\b','N','D','\b','D','S','\b','S','\n',
|
||||
|
@ -235,4 +238,5 @@ constant char helpdata[] = {
|
|||
'\n',
|
||||
'\n',
|
||||
0 };
|
||||
#endif
|
||||
constant int size_helpdata = sizeof(helpdata) - 1;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ifile.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: ifile.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -51,6 +51,12 @@ static struct ifile anchor = { &anchor, &anchor, NULL, NULL, 0, 0, '\0',
|
|||
{ NULL_POSITION, 0 } };
|
||||
static int ifiles = 0;
|
||||
|
||||
static void incr_index __P((struct ifile *, int));
|
||||
static void link_ifile __P((struct ifile *, struct ifile *));
|
||||
static void unlink_ifile __P((struct ifile *));
|
||||
static struct ifile *new_ifile __P((char *, struct ifile *));
|
||||
static struct ifile *find_ifile __P((char *));
|
||||
|
||||
static void
|
||||
incr_index(p, incr)
|
||||
register struct ifile *p;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: less.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: less.h,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -300,7 +300,7 @@ struct scrpos
|
|||
|
||||
typedef union parg
|
||||
{
|
||||
char *p_string;
|
||||
constant char *p_string;
|
||||
int p_int;
|
||||
LINENUM p_linenum;
|
||||
} PARG;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: lessecho.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: lessecho.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -30,7 +30,7 @@
|
|||
|
||||
#include "less.h"
|
||||
|
||||
static char *version = "$Revision: 1.2 $";
|
||||
static char *version = "$Revision: 1.3 $";
|
||||
|
||||
static int quote_all = 0;
|
||||
static char openquote = '"';
|
||||
|
@ -40,6 +40,11 @@ static char meta_escape_buf[2];
|
|||
static char metachars[64] = "";
|
||||
static int num_metachars = 0;
|
||||
|
||||
static void pr_usage __P((void));
|
||||
static void pr_version __P((void));
|
||||
static void pr_error __P((char *));
|
||||
static long lstrtol __P((char *, int, char **));
|
||||
|
||||
static void
|
||||
pr_usage()
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: lesskey.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: lesskey.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -214,6 +214,8 @@ char *outfile = NULL ;
|
|||
int linenum;
|
||||
int errors;
|
||||
|
||||
void terror(char *);
|
||||
|
||||
extern char version[];
|
||||
|
||||
void
|
||||
|
@ -422,7 +424,7 @@ tstr(pp, xlate)
|
|||
case 'e': ch = SK_END; break;
|
||||
case 'x': ch = SK_DELETE; break;
|
||||
default:
|
||||
error("illegal char after \\k");
|
||||
terror("illegal char after \\k");
|
||||
*pp = p+1;
|
||||
return ("");
|
||||
}
|
||||
|
@ -519,7 +521,7 @@ add_cmd_char(c)
|
|||
{
|
||||
if (currtable->pbuffer >= currtable->buffer + MAX_USERCMD)
|
||||
{
|
||||
error("too many commands");
|
||||
terror("too many commands");
|
||||
exit(1);
|
||||
}
|
||||
*(currtable->pbuffer)++ = c;
|
||||
|
@ -619,12 +621,12 @@ findaction(actname)
|
|||
for (i = 0; currtable->names[i].cn_name != NULL; i++)
|
||||
if (strcmp(currtable->names[i].cn_name, actname) == 0)
|
||||
return (currtable->names[i].cn_action);
|
||||
error("unknown action");
|
||||
terror("unknown action");
|
||||
return (A_INVALID);
|
||||
}
|
||||
|
||||
void
|
||||
error(s)
|
||||
terror(s)
|
||||
char *s;
|
||||
{
|
||||
fprintf(stderr, "line %d: %s\n", linenum, s);
|
||||
|
@ -651,7 +653,7 @@ parse_cmdline(p)
|
|||
s = tstr(&p, 1);
|
||||
cmdlen += strlen(s);
|
||||
if (cmdlen > MAX_CMDLEN)
|
||||
error("command too long");
|
||||
terror("command too long");
|
||||
else
|
||||
add_cmd_str(s);
|
||||
} while (*p != ' ' && *p != '\t' && *p != '\0');
|
||||
|
@ -668,7 +670,7 @@ parse_cmdline(p)
|
|||
p = skipsp(p);
|
||||
if (*p == '\0')
|
||||
{
|
||||
error("missing action");
|
||||
terror("missing action");
|
||||
return;
|
||||
}
|
||||
actname = p;
|
||||
|
@ -721,7 +723,7 @@ parse_varline(p)
|
|||
p = skipsp(p);
|
||||
if (*p++ != '=')
|
||||
{
|
||||
error("missing =");
|
||||
terror("missing =");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: lglob.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: lglob.h,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -36,7 +36,7 @@
|
|||
#else
|
||||
#if MSDOS_COMPILER==DJGPPC
|
||||
|
||||
#define DECL_GLOB_LIST(list) glob_t list; int i;
|
||||
#define DECL_GLOB_LIST(list) glob_t list; size_t i;
|
||||
#define GLOB_LIST(filename,list) glob(filename,GLOB_NOCHECK,0,&list)
|
||||
#define GLOB_LIST_FAILED(list) 0
|
||||
#define SCAN_GLOB_LIST(list,p) i = 0; i < list.gl_pathc; i++
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: line.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: line.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -42,10 +42,9 @@ static POSITION pendpos;
|
|||
static char *end_ansi_chars;
|
||||
static char *mid_ansi_chars;
|
||||
|
||||
static int attr_swidth();
|
||||
static int attr_ewidth();
|
||||
static int do_append();
|
||||
|
||||
static int attr_swidth(int);
|
||||
static int attr_ewidth(int);
|
||||
static int do_append(LWCHAR, char *, POSITION);
|
||||
extern int sigs;
|
||||
extern int bs_mode;
|
||||
extern int linenums;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: linenum.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: linenum.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -72,6 +72,10 @@ extern int sigs;
|
|||
extern int sc_height;
|
||||
extern int screen_trashed;
|
||||
|
||||
static void calcgap __P((struct linenum_info *));
|
||||
static void longloopmessage __P((void));
|
||||
static void longish __P((void));
|
||||
|
||||
/*
|
||||
* Initialize the line number structures.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: lsystem.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: lsystem.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -294,7 +294,6 @@ pipe_data(cmd, spos, epos)
|
|||
{
|
||||
register FILE *f;
|
||||
register int c;
|
||||
extern FILE *popen();
|
||||
|
||||
/*
|
||||
* This is structured much like lsystem().
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: main.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: main.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -34,6 +34,7 @@ public char * progname;
|
|||
public int quitting;
|
||||
public int secure;
|
||||
public int dohelp;
|
||||
public int more_mode = 0;
|
||||
|
||||
#if LOGFILE
|
||||
public int logfile = -1;
|
||||
|
@ -113,6 +114,9 @@ main(argc, argv)
|
|||
* Process command line arguments and LESS environment arguments.
|
||||
* Command line arguments override environment arguments.
|
||||
*/
|
||||
if (strcmp(getprogname(), "more") == 0)
|
||||
more_mode = 1;
|
||||
|
||||
is_tty = isatty(1);
|
||||
get_term();
|
||||
init_cmds();
|
||||
|
@ -238,7 +242,7 @@ main(argc, argv)
|
|||
quit(QUIT_OK);
|
||||
}
|
||||
|
||||
if (missing_cap && !know_dumb)
|
||||
if (missing_cap && !know_dumb && !more_mode)
|
||||
error("WARNING: terminal is not fully functional", NULL_PARG);
|
||||
init_mark();
|
||||
open_getchr();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: option.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: option.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -26,8 +26,9 @@
|
|||
static struct loption *pendopt;
|
||||
public int plusoption = FALSE;
|
||||
|
||||
static char *optstring();
|
||||
static int flip_triple();
|
||||
static char *optstring __P((char *, char **, char *, char *));
|
||||
static int flip_triple __P((int, int));
|
||||
static void nostring __P((char *));
|
||||
|
||||
extern int screen_trashed;
|
||||
extern int less_is_more;
|
||||
|
@ -448,6 +449,8 @@ toggle_option(o, lower, s, how_toggle)
|
|||
{
|
||||
case BOOL:
|
||||
case TRIPLE:
|
||||
if (*(o->ovar) < 0)
|
||||
error("Negative option is invalid", NULL_PARG);
|
||||
/*
|
||||
* Print the odesc message.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: option.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: option.h,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -63,7 +63,8 @@ struct loption
|
|||
int otype; /* Type of the option */
|
||||
int odefault; /* Default value */
|
||||
int *ovar; /* Pointer to the associated variable */
|
||||
void (*ofunc)(); /* Pointer to special handling function */
|
||||
void (*ofunc) /* Pointer to special handling function */
|
||||
__P((int, char *));
|
||||
char *odesc[3]; /* Description of each value */
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: opttbl.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: opttbl.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -30,6 +30,7 @@ public int bs_mode; /* How to process backspaces */
|
|||
public int know_dumb; /* Don't complain about dumb terminals */
|
||||
public int quit_at_eof; /* Quit after hitting end of file twice */
|
||||
public int quit_if_one_screen; /* Quit if EOF on first screen */
|
||||
public int be_helpful; /* more(1) style -d */
|
||||
public int squeeze; /* Squeeze multiple blank lines into one */
|
||||
public int tabstop; /* Tab settings */
|
||||
public int back_scroll; /* Repaint screen on backwards movement */
|
||||
|
@ -167,7 +168,15 @@ static struct loption option[] =
|
|||
"Repaint by painting from top of screen"
|
||||
}
|
||||
},
|
||||
#if 1
|
||||
{ 'd', &d_optname,
|
||||
BOOL, OPT_OFF, &be_helpful, NULL,
|
||||
{ "Be less helpful in prompts",
|
||||
"Be helpful in prompts",
|
||||
NULL }
|
||||
},
|
||||
#endif
|
||||
{ -1, &d_optname,
|
||||
BOOL|NO_TOGGLE, OPT_OFF, &know_dumb, NULL,
|
||||
{
|
||||
"Assume intelligent terminal",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: os.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: os.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -63,6 +63,10 @@ static jmp_buf read_label;
|
|||
|
||||
extern int sigs;
|
||||
|
||||
#if !HAVE_STRERROR
|
||||
static char *strerror __P((int));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Like read() system call, but is deliberately interruptible.
|
||||
* A call to intread() from a signal handler will interrupt
|
||||
|
@ -235,7 +239,7 @@ strerror(err)
|
|||
errno_message(filename)
|
||||
char *filename;
|
||||
{
|
||||
register char *p;
|
||||
register const char *p;
|
||||
register char *m;
|
||||
int len;
|
||||
#if HAVE_ERRNO
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: output.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: output.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -438,7 +438,7 @@ less_printf(fmt, parg)
|
|||
register char *fmt;
|
||||
PARG *parg;
|
||||
{
|
||||
register char *s;
|
||||
register constant char *s;
|
||||
register int col;
|
||||
|
||||
col = 0;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pattern.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: pattern.h,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -13,7 +13,8 @@
|
|||
#if HAVE_POSIX_REGCOMP
|
||||
#include <regex.h>
|
||||
#ifdef REG_EXTENDED
|
||||
#define REGCOMP_FLAG REG_EXTENDED
|
||||
extern int more_mode;
|
||||
#define REGCOMP_FLAG (more_mode ? 0 : REG_EXTENDED)
|
||||
#else
|
||||
#define REGCOMP_FLAG 0
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: position.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: position.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -109,6 +109,7 @@ pos_clear()
|
|||
pos_init()
|
||||
{
|
||||
struct scrpos scrpos;
|
||||
scrpos.pos = scrpos.ln = 0; /* XXX: GCC */
|
||||
|
||||
if (sc_height <= table_size)
|
||||
return;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: prompt.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: prompt.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -57,7 +57,7 @@ static constant char w_proto[] =
|
|||
static constant char more_proto[] =
|
||||
"--More--(?eEND ?x- Next\\: %x.:?pB%pB\\%:byte %bB?s/%s...%t)";
|
||||
|
||||
public char *prproto[3];
|
||||
public char constant *prproto[3];
|
||||
public char constant *eqproto = e_proto;
|
||||
public char constant *hproto = h_proto;
|
||||
public char constant *wproto = w_proto;
|
||||
|
@ -65,6 +65,17 @@ public char constant *wproto = w_proto;
|
|||
static char message[PROMPT_SIZE];
|
||||
static char *mp;
|
||||
|
||||
static void ap_pos __P((POSITION));
|
||||
static void ap_int __P((int));
|
||||
static void ap_str __P((char *));
|
||||
static void ap_char __P((int));
|
||||
static void ap_quest __P((void));
|
||||
static POSITION curr_byte __P((int));
|
||||
static int cond __P((int, int));
|
||||
static void protochar __P((int, int, int));
|
||||
static const char *skipcond __P((const char *));
|
||||
static const char *wherechar __P((const char *, int *));
|
||||
|
||||
/*
|
||||
* Initialize the prompt prototype strings.
|
||||
*/
|
||||
|
@ -100,10 +111,11 @@ ap_str(s)
|
|||
* Append a character to the end of the message.
|
||||
*/
|
||||
static void
|
||||
ap_char(c)
|
||||
char c;
|
||||
ap_char(i)
|
||||
int i;
|
||||
{
|
||||
char buf[2];
|
||||
char c = (char)i;
|
||||
|
||||
buf[0] = c;
|
||||
buf[1] = '\0';
|
||||
|
@ -395,9 +407,9 @@ protochar(c, where, iseditproto)
|
|||
* where to resume parsing the string.
|
||||
* We must keep track of nested IFs and skip them properly.
|
||||
*/
|
||||
static char *
|
||||
static const char *
|
||||
skipcond(p)
|
||||
register char *p;
|
||||
register const char *p;
|
||||
{
|
||||
register int iflevel;
|
||||
|
||||
|
@ -453,9 +465,9 @@ skipcond(p)
|
|||
/*
|
||||
* Decode a char that represents a position on the screen.
|
||||
*/
|
||||
static char *
|
||||
static const char *
|
||||
wherechar(p, wp)
|
||||
char *p;
|
||||
const char *p;
|
||||
int *wp;
|
||||
{
|
||||
switch (*p)
|
||||
|
@ -479,10 +491,10 @@ wherechar(p, wp)
|
|||
*/
|
||||
public char *
|
||||
pr_expand(proto, maxwidth)
|
||||
char *proto;
|
||||
const char *proto;
|
||||
int maxwidth;
|
||||
{
|
||||
register char *p;
|
||||
register const char *p;
|
||||
register int c;
|
||||
int where;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: screen.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: screen.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -229,6 +229,8 @@ extern int quiet; /* If VERY_QUIET, use visual bell for bell */
|
|||
extern int no_back_scroll;
|
||||
extern int swindow;
|
||||
extern int no_init;
|
||||
extern int quit_at_eof;
|
||||
extern int more_mode;
|
||||
extern int no_keypad;
|
||||
extern int sigs;
|
||||
extern int wscroll;
|
||||
|
@ -240,8 +242,10 @@ extern int oldbot;
|
|||
extern int hilite_search;
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_TERMCAP_H
|
||||
extern char *tgetstr();
|
||||
extern char *tgoto();
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
|
@ -1210,11 +1214,21 @@ get_term()
|
|||
if (sc_e_keypad == NULL)
|
||||
sc_e_keypad = "";
|
||||
|
||||
sc_init = ltgetstr("ti", &sp);
|
||||
/*
|
||||
* This loses for terminals with termcap entries with ti/te strings
|
||||
* that switch to/from an alternate screen, and we're in quit_at_eof
|
||||
* (eg, more(1)).
|
||||
*/
|
||||
if (quit_at_eof != OPT_ONPLUS && !more_mode) {
|
||||
sc_init = ltgetstr("ti", &sp);
|
||||
sc_deinit = ltgetstr("te", &sp);
|
||||
} else {
|
||||
sc_init = NULL;
|
||||
sc_deinit = NULL;
|
||||
}
|
||||
|
||||
if (sc_init == NULL)
|
||||
sc_init = "";
|
||||
|
||||
sc_deinit= ltgetstr("te", &sp);
|
||||
if (sc_deinit == NULL)
|
||||
sc_deinit = "";
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: search.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: search.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -701,7 +701,7 @@ search_range(pos, endpos, search_type, matches, maxlines, plinepos, pendpos)
|
|||
char *cline;
|
||||
int line_len;
|
||||
LINENUM linenum;
|
||||
char *sp, *ep;
|
||||
char *sp = NULL, *ep = NULL; /* XXX: GCC */
|
||||
int line_match;
|
||||
int cvt_ops;
|
||||
int cvt_len;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: signal.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: signal.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -29,6 +29,12 @@
|
|||
*/
|
||||
public int sigs;
|
||||
|
||||
static RETSIGTYPE u_interrupt __P((int));
|
||||
static RETSIGTYPE stop __P((int));
|
||||
#if MSDOS_COMPILER==WIN32C
|
||||
static BOOL WINAPI wbreak_handler __P((DWORD));
|
||||
#endif
|
||||
|
||||
extern int sc_width, sc_height;
|
||||
extern int screen_trashed;
|
||||
extern int lnloop;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: tags.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||
/* $NetBSD: tags.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1984-2011 Mark Nudelman
|
||||
|
@ -61,12 +61,6 @@ static int getentry();
|
|||
* findctag() uses either pattern (in which case line number is 0),
|
||||
* or line number (in which case pattern is NULL).
|
||||
*/
|
||||
struct taglist {
|
||||
struct tag *tl_first;
|
||||
struct tag *tl_last;
|
||||
};
|
||||
#define TAG_END ((struct tag *) &taglist)
|
||||
static struct taglist taglist = { TAG_END, TAG_END };
|
||||
struct tag {
|
||||
struct tag *next, *prev; /* List links */
|
||||
char *tag_file; /* Source file containing the tag */
|
||||
|
@ -74,6 +68,12 @@ struct tag {
|
|||
char *tag_pattern; /* Pattern used to find the tag */
|
||||
char tag_endline; /* True if the pattern includes '$' */
|
||||
};
|
||||
struct taglist {
|
||||
struct tag *tl_first;
|
||||
struct tag *tl_last;
|
||||
};
|
||||
#define TAG_END ((struct tag *) &taglist)
|
||||
static struct taglist taglist = { TAG_END, TAG_END };
|
||||
static struct tag *curtag;
|
||||
|
||||
#define TAG_INS(tp) \
|
||||
|
@ -544,7 +544,7 @@ findgtag(tag, type)
|
|||
while (fgets(buf, sizeof(buf), fp))
|
||||
{
|
||||
char *name, *file, *line;
|
||||
int len;
|
||||
size_t len;
|
||||
|
||||
if (sigs)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue