Module Name: src
Committed By: tron
Date: Sun Jul 3 20:14:13 UTC 2011
Modified Files:
src/external/bsd/less/dist: brac.c ch.c charset.c cmdbuf.c command.c
decode.c edit.c filename.c forwback.c funcs.h help.c ifile.c less.h
lessecho.c lesskey.c lglob.h line.c linenum.c lsystem.c main.c
option.c option.h opttbl.c os.c output.c pattern.h position.c
prompt.c screen.c search.c signal.c tags.c
Log Message:
Apply NetBSD specific patches, mostly related to behaviour of
less(1) as more(1).
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/less/dist/brac.c \
src/external/bsd/less/dist/ch.c src/external/bsd/less/dist/charset.c \
src/external/bsd/less/dist/cmdbuf.c src/external/bsd/less/dist/command.c \
src/external/bsd/less/dist/decode.c src/external/bsd/less/dist/edit.c \
src/external/bsd/less/dist/filename.c \
src/external/bsd/less/dist/forwback.c src/external/bsd/less/dist/funcs.h \
src/external/bsd/less/dist/help.c src/external/bsd/less/dist/ifile.c \
src/external/bsd/less/dist/less.h src/external/bsd/less/dist/lessecho.c \
src/external/bsd/less/dist/lesskey.c src/external/bsd/less/dist/lglob.h \
src/external/bsd/less/dist/line.c src/external/bsd/less/dist/linenum.c \
src/external/bsd/less/dist/lsystem.c src/external/bsd/less/dist/main.c \
src/external/bsd/less/dist/option.c src/external/bsd/less/dist/option.h \
src/external/bsd/less/dist/opttbl.c src/external/bsd/less/dist/os.c \
src/external/bsd/less/dist/output.c src/external/bsd/less/dist/pattern.h \
src/external/bsd/less/dist/position.c src/external/bsd/less/dist/prompt.c \
src/external/bsd/less/dist/screen.c src/external/bsd/less/dist/search.c \
src/external/bsd/less/dist/signal.c src/external/bsd/less/dist/tags.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/bsd/less/dist/brac.c
diff -u src/external/bsd/less/dist/brac.c:1.2 src/external/bsd/less/dist/brac.c:1.3
--- src/external/bsd/less/dist/brac.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/brac.c Sun Jul 3 20:14:12 2011
@@ -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 @@
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.
Index: src/external/bsd/less/dist/ch.c
diff -u src/external/bsd/less/dist/ch.c:1.2 src/external/bsd/less/dist/ch.c:1.3
--- src/external/bsd/less/dist/ch.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/ch.c Sun Jul 3 20:14:12 2011
@@ -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 char *namelogfile;
#endif
-static int ch_addbuf();
+static int ch_addbuf __P((void));
+static int buffered __P((BLOCKNUM));
+static void ch_delbufs __P((void));
/*
Index: src/external/bsd/less/dist/charset.c
diff -u src/external/bsd/less/dist/charset.c:1.2 src/external/bsd/less/dist/charset.c:1.3
--- src/external/bsd/less/dist/charset.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/charset.c Sun Jul 3 20:14:12 2011
@@ -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 *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.
Index: src/external/bsd/less/dist/cmdbuf.c
diff -u src/external/bsd/less/dist/cmdbuf.c:1.2 src/external/bsd/less/dist/cmdbuf.c:1.3
--- src/external/bsd/less/dist/cmdbuf.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/cmdbuf.c Sun Jul 3 20:14:12 2011
@@ -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 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 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 @@
static char *
delimit_word()
{
- char *word;
+ char *word = NULL;
#if SPACES_IN_FILENAMES
char *p;
int delim_quoted = 0;
@@ -1374,10 +1393,20 @@
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)
Index: src/external/bsd/less/dist/command.c
diff -u src/external/bsd/less/dist/command.c:1.2 src/external/bsd/less/dist/command.c:1.3
--- src/external/bsd/less/dist/command.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/command.c Sun Jul 3 20:14:12 2011
@@ -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 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 @@
* 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 @@
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 @@
break;
default:
- bell();
+ if (be_helpful)
+ helpprompt = 1;
+ else
+ bell();
break;
}
}
Index: src/external/bsd/less/dist/decode.c
diff -u src/external/bsd/less/dist/decode.c:1.2 src/external/bsd/less/dist/decode.c:1.3
--- src/external/bsd/less/dist/decode.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/decode.c Sun Jul 3 20:14:12 2011
@@ -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_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 @@
{
int action;
int nch;
- char *s;
+ char *s = NULL; /* XXX: GCC */
char usercmd[MAX_CMDLEN+1];
/*
Index: src/external/bsd/less/dist/edit.c
diff -u src/external/bsd/less/dist/edit.c:1.2 src/external/bsd/less/dist/edit.c:1.3
--- src/external/bsd/less/dist/edit.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/edit.c Sun Jul 3 20:14:12 2011
@@ -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 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 @@
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 @@
* 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 @@
*/
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 @@
*/
filename = shell_unquote(filename);
exists = open(filename, OPEN_READ);
- close(exists);
+ if (exists >= 0)
+ close(exists);
exists = (exists >= 0);
/*
Index: src/external/bsd/less/dist/filename.c
diff -u src/external/bsd/less/dist/filename.c:1.2 src/external/bsd/less/dist/filename.c:1.3
--- src/external/bsd/less/dist/filename.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/filename.c Sun Jul 3 20:14:12 2011
@@ -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 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.
*/
Index: src/external/bsd/less/dist/forwback.c
diff -u src/external/bsd/less/dist/forwback.c:1.2 src/external/bsd/less/dist/forwback.c:1.3
--- src/external/bsd/less/dist/forwback.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/forwback.c Sun Jul 3 20:14:12 2011
@@ -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 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 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 @@
* 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
Index: src/external/bsd/less/dist/funcs.h
diff -u src/external/bsd/less/dist/funcs.h:1.2 src/external/bsd/less/dist/funcs.h:1.3
--- src/external/bsd/less/dist/funcs.h:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/funcs.h Sun Jul 3 20:14:12 2011
@@ -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 ();
Index: src/external/bsd/less/dist/help.c
diff -u src/external/bsd/less/dist/help.c:1.2 src/external/bsd/less/dist/help.c:1.3
--- src/external/bsd/less/dist/help.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/help.c Sun Jul 3 20:14:12 2011
@@ -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 @@
'\n',
'\n',
0 };
+#endif
constant int size_helpdata = sizeof(helpdata) - 1;
Index: src/external/bsd/less/dist/ifile.c
diff -u src/external/bsd/less/dist/ifile.c:1.2 src/external/bsd/less/dist/ifile.c:1.3
--- src/external/bsd/less/dist/ifile.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/ifile.c Sun Jul 3 20:14:12 2011
@@ -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 @@
{ 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;
Index: src/external/bsd/less/dist/less.h
diff -u src/external/bsd/less/dist/less.h:1.2 src/external/bsd/less/dist/less.h:1.3
--- src/external/bsd/less/dist/less.h:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/less.h Sun Jul 3 20:14:12 2011
@@ -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 @@
typedef union parg
{
- char *p_string;
+ constant char *p_string;
int p_int;
LINENUM p_linenum;
} PARG;
Index: src/external/bsd/less/dist/lessecho.c
diff -u src/external/bsd/less/dist/lessecho.c:1.2 src/external/bsd/less/dist/lessecho.c:1.3
--- src/external/bsd/less/dist/lessecho.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/lessecho.c Sun Jul 3 20:14:13 2011
@@ -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 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()
{
Index: src/external/bsd/less/dist/lesskey.c
diff -u src/external/bsd/less/dist/lesskey.c:1.2 src/external/bsd/less/dist/lesskey.c:1.3
--- src/external/bsd/less/dist/lesskey.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/lesskey.c Sun Jul 3 20:14:13 2011
@@ -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 @@
int linenum;
int errors;
+void terror(char *);
+
extern char version[];
void
@@ -422,7 +424,7 @@
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 @@
{
if (currtable->pbuffer >= currtable->buffer + MAX_USERCMD)
{
- error("too many commands");
+ terror("too many commands");
exit(1);
}
*(currtable->pbuffer)++ = c;
@@ -619,12 +621,12 @@
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 @@
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 @@
p = skipsp(p);
if (*p == '\0')
{
- error("missing action");
+ terror("missing action");
return;
}
actname = p;
@@ -721,7 +723,7 @@
p = skipsp(p);
if (*p++ != '=')
{
- error("missing =");
+ terror("missing =");
return;
}
Index: src/external/bsd/less/dist/lglob.h
diff -u src/external/bsd/less/dist/lglob.h:1.2 src/external/bsd/less/dist/lglob.h:1.3
--- src/external/bsd/less/dist/lglob.h:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/lglob.h Sun Jul 3 20:14:13 2011
@@ -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++
Index: src/external/bsd/less/dist/line.c
diff -u src/external/bsd/less/dist/line.c:1.2 src/external/bsd/less/dist/line.c:1.3
--- src/external/bsd/less/dist/line.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/line.c Sun Jul 3 20:14:13 2011
@@ -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 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;
Index: src/external/bsd/less/dist/linenum.c
diff -u src/external/bsd/less/dist/linenum.c:1.2 src/external/bsd/less/dist/linenum.c:1.3
--- src/external/bsd/less/dist/linenum.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/linenum.c Sun Jul 3 20:14:13 2011
@@ -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 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.
*/
Index: src/external/bsd/less/dist/lsystem.c
diff -u src/external/bsd/less/dist/lsystem.c:1.2 src/external/bsd/less/dist/lsystem.c:1.3
--- src/external/bsd/less/dist/lsystem.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/lsystem.c Sun Jul 3 20:14:13 2011
@@ -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 @@
{
register FILE *f;
register int c;
- extern FILE *popen();
/*
* This is structured much like lsystem().
Index: src/external/bsd/less/dist/main.c
diff -u src/external/bsd/less/dist/main.c:1.2 src/external/bsd/less/dist/main.c:1.3
--- src/external/bsd/less/dist/main.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/main.c Sun Jul 3 20:14:13 2011
@@ -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 int quitting;
public int secure;
public int dohelp;
+public int more_mode = 0;
#if LOGFILE
public int logfile = -1;
@@ -113,6 +114,9 @@
* 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 @@
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();
Index: src/external/bsd/less/dist/option.c
diff -u src/external/bsd/less/dist/option.c:1.2 src/external/bsd/less/dist/option.c:1.3
--- src/external/bsd/less/dist/option.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/option.c Sun Jul 3 20:14:13 2011
@@ -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 @@
{
case BOOL:
case TRIPLE:
+ if (*(o->ovar) < 0)
+ error("Negative option is invalid", NULL_PARG);
/*
* Print the odesc message.
*/
Index: src/external/bsd/less/dist/option.h
diff -u src/external/bsd/less/dist/option.h:1.2 src/external/bsd/less/dist/option.h:1.3
--- src/external/bsd/less/dist/option.h:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/option.h Sun Jul 3 20:14:13 2011
@@ -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 @@
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 */
};
Index: src/external/bsd/less/dist/opttbl.c
diff -u src/external/bsd/less/dist/opttbl.c:1.2 src/external/bsd/less/dist/opttbl.c:1.3
--- src/external/bsd/less/dist/opttbl.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/opttbl.c Sun Jul 3 20:14:13 2011
@@ -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 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 @@
"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",
Index: src/external/bsd/less/dist/os.c
diff -u src/external/bsd/less/dist/os.c:1.2 src/external/bsd/less/dist/os.c:1.3
--- src/external/bsd/less/dist/os.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/os.c Sun Jul 3 20:14:13 2011
@@ -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 @@
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 @@
errno_message(filename)
char *filename;
{
- register char *p;
+ register const char *p;
register char *m;
int len;
#if HAVE_ERRNO
Index: src/external/bsd/less/dist/output.c
diff -u src/external/bsd/less/dist/output.c:1.2 src/external/bsd/less/dist/output.c:1.3
--- src/external/bsd/less/dist/output.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/output.c Sun Jul 3 20:14:13 2011
@@ -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 @@
register char *fmt;
PARG *parg;
{
- register char *s;
+ register constant char *s;
register int col;
col = 0;
Index: src/external/bsd/less/dist/pattern.h
diff -u src/external/bsd/less/dist/pattern.h:1.2 src/external/bsd/less/dist/pattern.h:1.3
--- src/external/bsd/less/dist/pattern.h:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/pattern.h Sun Jul 3 20:14:13 2011
@@ -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
Index: src/external/bsd/less/dist/position.c
diff -u src/external/bsd/less/dist/position.c:1.2 src/external/bsd/less/dist/position.c:1.3
--- src/external/bsd/less/dist/position.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/position.c Sun Jul 3 20:14:13 2011
@@ -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_init()
{
struct scrpos scrpos;
+ scrpos.pos = scrpos.ln = 0; /* XXX: GCC */
if (sc_height <= table_size)
return;
Index: src/external/bsd/less/dist/prompt.c
diff -u src/external/bsd/less/dist/prompt.c:1.2 src/external/bsd/less/dist/prompt.c:1.3
--- src/external/bsd/less/dist/prompt.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/prompt.c Sun Jul 3 20:14:13 2011
@@ -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 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 @@
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 @@
* 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 @@
* 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 @@
/*
* 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 @@
*/
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;
Index: src/external/bsd/less/dist/screen.c
diff -u src/external/bsd/less/dist/screen.c:1.2 src/external/bsd/less/dist/screen.c:1.3
--- src/external/bsd/less/dist/screen.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/screen.c Sun Jul 3 20:14:13 2011
@@ -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 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 hilite_search;
#endif
+#ifndef HAVE_TERMCAP_H
extern char *tgetstr();
extern char *tgoto();
+#endif
/*
@@ -1210,11 +1214,21 @@
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 = "";
Index: src/external/bsd/less/dist/search.c
diff -u src/external/bsd/less/dist/search.c:1.2 src/external/bsd/less/dist/search.c:1.3
--- src/external/bsd/less/dist/search.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/search.c Sun Jul 3 20:14:13 2011
@@ -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 @@
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;
Index: src/external/bsd/less/dist/signal.c
diff -u src/external/bsd/less/dist/signal.c:1.2 src/external/bsd/less/dist/signal.c:1.3
--- src/external/bsd/less/dist/signal.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/signal.c Sun Jul 3 20:14:13 2011
@@ -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;
Index: src/external/bsd/less/dist/tags.c
diff -u src/external/bsd/less/dist/tags.c:1.2 src/external/bsd/less/dist/tags.c:1.3
--- src/external/bsd/less/dist/tags.c:1.2 Sun Jul 3 19:51:26 2011
+++ src/external/bsd/less/dist/tags.c Sun Jul 3 20:14:13 2011
@@ -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 @@
* 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 @@
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 @@
while (fgets(buf, sizeof(buf), fp))
{
char *name, *file, *line;
- int len;
+ size_t len;
if (sigs)
{