mirror of
https://github.com/vbatts/bvi.git
synced 2025-08-02 15:40:28 +00:00
Compare commits
No commits in common. "master" and "v1.4.2" have entirely different histories.
28 changed files with 1473 additions and 1936 deletions
11
CHANGES
11
CHANGES
|
@ -1,14 +1,3 @@
|
|||
New in release 1.5.0
|
||||
====================
|
||||
|
||||
* Terminal window resizeable
|
||||
* fix build fails with gcc-15/C23
|
||||
* fix statusline for small windows
|
||||
* various issues caught by lintian solved
|
||||
* fix old-style-definition warnings
|
||||
* Minor fixes
|
||||
|
||||
|
||||
New in release 1.4.2
|
||||
====================
|
||||
This release is dedicated to Sven Guckes (*1967-04-06 +2022-02-20).
|
||||
|
|
6
CREDITS
6
CREDITS
|
@ -1,7 +1,7 @@
|
|||
Patches:
|
||||
Etienne Mollier <emollier@debian.org> gcc-15/C23 issues
|
||||
Matthias Klose <doko@debian.org> GCC-15 issues
|
||||
Vincent Batts <vbatts@hashbangbash.com> nit cleanup
|
||||
Guido <guido@bearix.oche.de> sys_errlist
|
||||
Christian "naddy" Weisgerber <naddy@mips.rhein-neckar.de> {Free,Open}BSD
|
||||
Gunnar Larisch <la@softing.com> ^ZZ bug
|
||||
Peter J. Holzer <hjp@wsr.ac.at> setlocale
|
||||
Albert Chin-A-Young <china@thewrittenword.com> Makefile.in
|
||||
Ralf <rks@ffm.tc.iot.dtag.de> AIX fixes
|
||||
|
|
12
README
12
README
|
@ -13,8 +13,8 @@ How to compile
|
|||
https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-fedora/
|
||||
|
||||
|
||||
gunzip -c bvi-1.5.0.src.tar.gz | tar xvf -
|
||||
cd bvi-1.5.0
|
||||
gunzip -c bvi-1.4.2.src.tar.gz | tar xvf -
|
||||
cd bvi-1.4.2
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
@ -32,6 +32,14 @@ To avoid this behaviour use:
|
|||
stty dsusp undef
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
Subscribe to the bvi mailing for support, updates and other news:
|
||||
|
||||
Send a blank email to bvi-subscribe@yahoogroups.com. You will receive a
|
||||
subscription confirmation message. Simply reply this message and your
|
||||
subscription will be complete.
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
PLEASE send any bug reports (and fixes), code for new features,
|
||||
comments, questions, etc. (even flames) to:
|
||||
|
|
21
bm_unix.c
21
bm_unix.c
|
@ -7,11 +7,10 @@
|
|||
* 2010-06-02 V 1.3.4
|
||||
* 2013-08-22 V 1.4.0
|
||||
* 2019-10-09 V 1.4.1
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2019 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -65,7 +64,8 @@ putchr(char ch)
|
|||
#else
|
||||
|
||||
int
|
||||
putchr(int ch)
|
||||
putchr(ch)
|
||||
int ch;
|
||||
{return putchar(ch);}
|
||||
|
||||
#endif
|
||||
|
@ -143,7 +143,8 @@ reset_tty()
|
|||
|
||||
|
||||
void
|
||||
sig(int sig)
|
||||
sig(sig)
|
||||
int sig;
|
||||
{
|
||||
reset_tty();
|
||||
printf("\r\n");
|
||||
|
@ -155,15 +156,12 @@ sig(int sig)
|
|||
* doshell() - run a command or an interactive shell
|
||||
*/
|
||||
void
|
||||
doshell(char *cmd)
|
||||
doshell(cmd)
|
||||
char *cmd;
|
||||
{
|
||||
int ret;
|
||||
#ifndef DJGPP
|
||||
#ifdef __STDC__
|
||||
char *getenv(const char *);
|
||||
#else
|
||||
char *getenv();
|
||||
#endif
|
||||
char *shell;
|
||||
char cline[128];
|
||||
#endif
|
||||
|
@ -279,7 +277,10 @@ vgetc()
|
|||
* Copy contents of memory (with possible overlapping).
|
||||
*/
|
||||
char *
|
||||
memmove(char *s1, char *s2, size_t n)
|
||||
memmove(s1, s2, n)
|
||||
char *s1;
|
||||
char *s2;
|
||||
size_t n;
|
||||
{
|
||||
bcopy(s2, s1, n);
|
||||
return(s1);
|
||||
|
|
4
bmore.1
4
bmore.1
|
@ -1,4 +1,4 @@
|
|||
.TH BMORE 1 "24 May 2025"
|
||||
.TH BMORE 1 "8 Feb 2022"
|
||||
.SH NAME
|
||||
bmore \- browse through a binary file
|
||||
.SH SYNOPSIS
|
||||
|
@ -232,7 +232,7 @@ in the file remains unchanged. Regular expressions can be
|
|||
edited using erase and kill characters.
|
||||
Erasing back past the first column cancels the search command.
|
||||
.TP
|
||||
.B '
|
||||
.B \'
|
||||
Single quote. Go to the point from which the last search started.
|
||||
If no search has been performed in the current file,
|
||||
go to the beginning of the file.
|
||||
|
|
42
bmore.c
42
bmore.c
|
@ -9,9 +9,8 @@
|
|||
* 2013-08-23 V 1.4.0
|
||||
* 2019-01-22 V 1.4.1
|
||||
* 2023-03-06 V 1.4.2
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* Copyright 1990-2025 by Gerhard Buergmann
|
||||
* Copyright 1990-2023 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
|
@ -114,7 +113,9 @@ usage()
|
|||
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
int ch, ch1;
|
||||
int colon = 0, last_ch = 0;
|
||||
|
@ -532,7 +533,9 @@ main(int argc, char *argv[])
|
|||
|
||||
|
||||
int
|
||||
rdline(int ch, char *sstring)
|
||||
rdline(ch, sstring)
|
||||
int ch;
|
||||
char *sstring;
|
||||
{
|
||||
int i = 0;
|
||||
int ch1 = 0;
|
||||
|
@ -584,7 +587,8 @@ rdline(int ch, char *sstring)
|
|||
|
||||
|
||||
void
|
||||
do_next(int n)
|
||||
do_next(n)
|
||||
int n;
|
||||
{
|
||||
if (numfiles) {
|
||||
if (n == 1 && file_nr == numfiles) {
|
||||
|
@ -610,7 +614,8 @@ do_next(int n)
|
|||
|
||||
|
||||
int
|
||||
open_file(char *name)
|
||||
open_file(name)
|
||||
char *name;
|
||||
{
|
||||
struct stat buf;
|
||||
|
||||
|
@ -631,7 +636,9 @@ open_file(char *name)
|
|||
|
||||
|
||||
void
|
||||
putline(char *buf, int num)
|
||||
putline(buf, num)
|
||||
char *buf;
|
||||
int num;
|
||||
{
|
||||
int print_pos;
|
||||
unsigned char ch;
|
||||
|
@ -682,7 +689,8 @@ putline(char *buf, int num)
|
|||
|
||||
|
||||
int
|
||||
printout(int lns)
|
||||
printout(lns)
|
||||
int lns;
|
||||
{
|
||||
int c, num;
|
||||
int doub = 0;
|
||||
|
@ -747,7 +755,9 @@ nextchar()
|
|||
|
||||
|
||||
void
|
||||
pushback(int n, char *where)
|
||||
pushback(n, where)
|
||||
int n;
|
||||
char *where;
|
||||
{
|
||||
if (cnt) memmove(cmdbuf + n, cmdbuf, n);
|
||||
memcpy(cmdbuf, where, n);
|
||||
|
@ -764,7 +774,8 @@ pushback(int n, char *where)
|
|||
* 1 found
|
||||
*/
|
||||
int
|
||||
bmregexec(char *scan)
|
||||
bmregexec(scan)
|
||||
char *scan;
|
||||
{
|
||||
char *act;
|
||||
int count, test;
|
||||
|
@ -882,7 +893,10 @@ bmregexec(char *scan)
|
|||
|
||||
|
||||
int
|
||||
sbracket(int start, char *scan, int count)
|
||||
sbracket(start, scan, count)
|
||||
int start;
|
||||
char *scan;
|
||||
int count;
|
||||
{
|
||||
if (*scan++ == '^') {
|
||||
if (!memchr(scan, start, --count)) return 0;
|
||||
|
@ -894,7 +908,8 @@ sbracket(int start, char *scan, int count)
|
|||
|
||||
|
||||
void
|
||||
bmsearch(int ch)
|
||||
bmsearch(ch)
|
||||
int ch;
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -946,7 +961,8 @@ emsg(string);
|
|||
|
||||
|
||||
void
|
||||
emsg(char *s)
|
||||
emsg(s)
|
||||
char *s;
|
||||
{
|
||||
putchar('\r');
|
||||
cleartoeol();
|
||||
|
|
2
bmore.h
2
bmore.h
|
@ -136,7 +136,7 @@ extern int no_tty, no_intty;
|
|||
|
||||
|
||||
|
||||
#if defined(ANSI) || defined(__STDC__)
|
||||
#ifdef ANSI
|
||||
void initterm(void), set_tty(void), reset_tty(void);
|
||||
void cleartoeol(void), clearscreen(void), highlight(void);
|
||||
void normal(void), bmbeep(void), home(void), sig(int);
|
||||
|
|
43
bvi.1
43
bvi.1
|
@ -1,8 +1,8 @@
|
|||
.rn '' }`
|
||||
.\" $RCSfile$$Revision$$Date$
|
||||
.\"
|
||||
.\" $Log$
|
||||
.\"
|
||||
''' $RCSfile$$Revision$$Date$
|
||||
'''
|
||||
''' $Log$
|
||||
'''
|
||||
.de Sh
|
||||
.br
|
||||
.if t .Sp
|
||||
|
@ -31,12 +31,12 @@
|
|||
|
||||
.fi
|
||||
..
|
||||
.\"
|
||||
.\"
|
||||
.\" Set up \*(-- to give an unbreakable dash;
|
||||
.\" string Tr holds user defined translation string.
|
||||
.\" Bell System Logo is used as a dummy character.
|
||||
.\"
|
||||
'''
|
||||
'''
|
||||
''' Set up \*(-- to give an unbreakable dash;
|
||||
''' string Tr holds user defined translation string.
|
||||
''' Bell System Logo is used as a dummy character.
|
||||
'''
|
||||
.tr \(*W-|\(bv\*(Tr
|
||||
.ie n \{\
|
||||
.ds -- \(*W-
|
||||
|
@ -45,10 +45,10 @@
|
|||
.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
||||
.ds L" ""
|
||||
.ds R" ""
|
||||
.\" \*(M", \*(S", \*(N" and \*(T" are the equivalent of
|
||||
.\" \*(L" and \*(R", except that they are used on ".xx" lines,
|
||||
.\" such as .IP and .SH, which do another additional levels of
|
||||
.\" double-quote interpretation
|
||||
''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
|
||||
''' \*(L" and \*(R", except that they are used on ".xx" lines,
|
||||
''' such as .IP and .SH, which do another additional levels of
|
||||
''' double-quote interpretation
|
||||
.ds M" """
|
||||
.ds S" """
|
||||
.ds N" """""
|
||||
|
@ -93,7 +93,7 @@
|
|||
.nr % 0
|
||||
.rr F
|
||||
.\}
|
||||
.TH BVI 1 "BVI Version 1.5.0" "31/May/2025" "User Commands"
|
||||
.TH BVI 1 "BVI Version 1.4.2" "8/Feb/2022" "User Commands"
|
||||
.IX Title "BVI 1"
|
||||
.UC
|
||||
.IX Name "bvi, bview - visual display editor for binary files"
|
||||
|
@ -194,7 +194,7 @@
|
|||
bvi, bview \- visual editor for binary files
|
||||
.SH "VERSION"
|
||||
.IX Header "VERSION"
|
||||
bvi-1.5.0
|
||||
bvi-1.4.1
|
||||
.SH "SYNOPSIS"
|
||||
.IX Header "SYNOPSIS"
|
||||
\fBbvi\fR\ \ \ [\fB\-R\fR]\ [\fB\-c\fR\ \fIcmd\fR]\ [\fB\-f\fR\ \fIscript\fR]\ [\fB\-s\fR\ \fIskip\fR]\ [\fB\-e\fR\ \fIend\fR]\ [\fB\-n\fR\ \fIlength\fR]\ \fIfile\fR...
|
||||
|
@ -273,7 +273,7 @@ Files are treated as one long stream of bytes. The characters
|
|||
\*(L"newline\*(R" and \*(L"carriage return\*(R" are not special, id est they
|
||||
never mark the end of lines. Therefore the lines on the screen do not
|
||||
represent lines in the usual way. Data is broken across screen lines
|
||||
arbitrarily.
|
||||
arbitarily.
|
||||
As a consequence there are no commands in bvi from ex or vi
|
||||
that are based on line numbers, eg \*(L"dd\*(R", \*(L"yy\*(R", \*(L'C\*(R', \*(L'S\*(R', \*(L'o\*(R', \*(L'O\*(R'.
|
||||
This also changes the meaning of \*(L"range\*(R" before the \*(L":write\*(R" command
|
||||
|
@ -313,7 +313,7 @@ using these meta sequences:
|
|||
.Ve
|
||||
Additional search commands:
|
||||
Similar to the text search commands there are additional hex-search
|
||||
functions \*(L'\e\*(R' and \*(L'#\*(R' which allow one to search for any byte value.
|
||||
functions \*(L'\e\*(R' and \*(L'#\*(R' which allow to search for any byte value.
|
||||
Example: \*(L"\e62 76 69\*(R" will search for the string \*(L"bvi\*(R".
|
||||
Spaces between hex value are optional, so searching
|
||||
for \*(L"6775636B6573\*(R" will find \*(L"guckes\*(R".
|
||||
|
@ -584,7 +584,7 @@ the file. If you use ASCII mode you can use the special characters
|
|||
\& ignorecase noic Ignores letter case in searching
|
||||
\& magic nomagic Makes . [ * special in patterns
|
||||
\& memmove nomm enables insert and delete commands
|
||||
\& offset of=0 adds an offset to the displayed addresses
|
||||
\& offset of=0 adds an offset to the diplayed addresses
|
||||
\& readonly noro If set, write fails unless you use ! after command
|
||||
\& reverse nore display otherwise-printable characters with their
|
||||
\& high bit set as reverse video
|
||||
|
@ -606,7 +606,7 @@ bvi was developed by Gerhard Buergmann, Vienna, Austria
|
|||
\fIgerhard@puon.at\fR
|
||||
.SH "WWW"
|
||||
.IX Header "WWW"
|
||||
Bvi\ Homepage:\ \ https://bvi.sourceforge.net/
|
||||
Bvi\ Homepage:\ \ http://bvi.sourceforge.net/
|
||||
Vi\ Pages:\ \ \ \ \ \ http://www.guckes.net/vi/clones.php3
|
||||
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (all\ about\ Vi\ and\ its\ clones)
|
||||
.SH "FILES"
|
||||
|
@ -614,6 +614,9 @@ Vi\ Pages:\ \ \ \ \ \ http://www.guckes.net/vi/clones.php3
|
|||
\fI\ $HOME/.bvirc\fR\ \ \ \ \ \ \ \ \ \ editor\ startup\ file
|
||||
.BR
|
||||
\fI\ ./.bvirc\fR\ \ \ \ \ \ \ \ \ \ \ \ \ \ editor\ startup\ file
|
||||
.SH "BUGS"
|
||||
.IX Header "BUGS"
|
||||
Bvi does not update the screen when the terminal changes its size.
|
||||
.SH "SEE ALSO"
|
||||
.IX Header "SEE ALSO"
|
||||
\fIbmore\fR\|(1), \fIvi\fR\|(1), \fIstrings\fR\|(1), \fIascii\fR\|(5)
|
||||
|
|
68
bvi.c
68
bvi.c
|
@ -14,11 +14,10 @@
|
|||
* 2014-10-07 V 1.4.0
|
||||
* 2019-10-12 V 1.4.1
|
||||
* 2023-03-06 V 1.4.2
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2023 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -45,7 +44,7 @@
|
|||
#endif
|
||||
|
||||
|
||||
char *copyright = "(C) GPL 1996-2025 by Gerhard Buergmann";
|
||||
char *copyright = "(C) GPL 1996-2023 by Gerhard Buergmann";
|
||||
|
||||
jmp_buf env; /* context for `longjmp' function */
|
||||
|
||||
|
@ -66,8 +65,7 @@ FILE *Ausgabe_Datei;
|
|||
int edits = 0;
|
||||
int AnzAdd, Anzahl, Anzahl3;
|
||||
off_t filesize, memsize, undosize;
|
||||
int statusflag = 1;
|
||||
int space = 2;
|
||||
|
||||
|
||||
long precount = -1;
|
||||
|
||||
|
@ -119,7 +117,9 @@ usage()
|
|||
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
int ch;
|
||||
int lflag;
|
||||
|
@ -248,7 +248,7 @@ main(int argc, char *argv[])
|
|||
break;
|
||||
case BLOCK_BEGIN|BLOCK_END|BLOCK_LEN:
|
||||
if (block_end - block_begin != block_size + 1) {
|
||||
fprintf(stderr, "Ambiguous block data\n");
|
||||
fprintf(stderr, "Ambigous block data\n");
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
|
@ -267,9 +267,7 @@ main(int argc, char *argv[])
|
|||
maxy = LINES;
|
||||
if (params[P_LI].flags & P_CHANGED) maxy = P(P_LI);
|
||||
P(P_SS) = maxy / 2;
|
||||
/* We do not set P(P_LI) and P(P_CM) anymore, because 0 means "auto"
|
||||
P(P_LI) = maxy;
|
||||
*/
|
||||
maxy--;
|
||||
keypad(stdscr, TRUE);
|
||||
scrollok(stdscr, TRUE);
|
||||
|
@ -283,15 +281,15 @@ main(int argc, char *argv[])
|
|||
/* reserve 1 hex digit more than required */
|
||||
char tmp[sizeof(block_begin) * 2 + 3];
|
||||
AnzAdd = sprintf(tmp, "%llX", (long long unsigned)block_begin) + 1;
|
||||
if (AnzAdd < 8) AnzAdd = 8;
|
||||
if (AnzAdd > sizeof(block_begin) * 2) AnzAdd = sizeof(block_begin) * 2;
|
||||
if (AnzAdd < 8)
|
||||
AnzAdd = 8;
|
||||
if (AnzAdd > sizeof(block_begin) * 2)
|
||||
AnzAdd = sizeof(block_begin) * 2;
|
||||
sprintf(addr_form, "%%0%dllX ", AnzAdd);
|
||||
AnzAdd = sprintf(tmp, addr_form, block_begin);
|
||||
|
||||
Anzahl = ((COLS - AnzAdd - space) / 16) * 4;
|
||||
/*
|
||||
Anzahl = ((COLS - AnzAdd - 1) / 16) * 4;
|
||||
P(P_CM) = Anzahl;
|
||||
*/
|
||||
maxx = Anzahl * 4 + AnzAdd + 1;
|
||||
Anzahl3 = Anzahl * 3;
|
||||
statsize = 35;
|
||||
|
@ -330,10 +328,6 @@ main(int argc, char *argv[])
|
|||
else precount = -1;
|
||||
lflag = arrnum = 0;
|
||||
|
||||
if (statusflag == 0) {
|
||||
statusflag = 1;
|
||||
clearstr();
|
||||
}
|
||||
switch (ch) {
|
||||
case '^': x = AnzAdd;
|
||||
loc = HEX;
|
||||
|
@ -473,18 +467,6 @@ main(int argc, char *argv[])
|
|||
fileinfo(name);
|
||||
wrstat = 0;
|
||||
break;
|
||||
case KEY_RESIZE:
|
||||
if (P(P_CM) == 0) {
|
||||
Anzahl = ((COLS - AnzAdd - space) / 4);
|
||||
maxx = Anzahl * 4 + AnzAdd + 1;
|
||||
Anzahl3 = Anzahl * 3;
|
||||
status = Anzahl3 + Anzahl - statsize;
|
||||
}
|
||||
if (P(P_LI) == 0) {
|
||||
screen = Anzahl * (maxy - 1);
|
||||
maxy = LINES - 1;
|
||||
P(P_SS) = maxy / 2;
|
||||
}
|
||||
case BVICTRL('L'): /*** REDRAW SCREEN ***/
|
||||
new_screen();
|
||||
break;
|
||||
|
@ -753,7 +735,8 @@ main(int argc, char *argv[])
|
|||
|
||||
|
||||
off_t
|
||||
calc_size(char *arg)
|
||||
calc_size(arg)
|
||||
char *arg;
|
||||
{
|
||||
off_t val;
|
||||
extern int errno;
|
||||
|
@ -804,7 +787,9 @@ trunc_cur()
|
|||
|
||||
|
||||
int
|
||||
do_append(off_t count, char *buf)
|
||||
do_append(count, buf)
|
||||
off_t count;
|
||||
char *buf;
|
||||
{
|
||||
if (filesize + count > memsize) {
|
||||
if (enlarge(count + 100L)) return 1;
|
||||
|
@ -821,7 +806,8 @@ do_append(off_t count, char *buf)
|
|||
|
||||
|
||||
void
|
||||
do_tilde(off_t count)
|
||||
do_tilde(count)
|
||||
off_t count;
|
||||
{
|
||||
if (filesize == 0L) return;
|
||||
undo_start = current;
|
||||
|
@ -907,7 +893,10 @@ do_undo()
|
|||
|
||||
|
||||
void
|
||||
do_over(PTR loc, off_t n, PTR buf)
|
||||
do_over(loc, n, buf)
|
||||
PTR loc;
|
||||
off_t n;
|
||||
PTR buf;
|
||||
{
|
||||
if (n < 1L) {
|
||||
emsg(nobytes);
|
||||
|
@ -929,7 +918,10 @@ do_over(PTR loc, off_t n, PTR buf)
|
|||
|
||||
|
||||
void
|
||||
do_put(PTR loc, off_t n, PTR buf)
|
||||
do_put(loc, n, buf)
|
||||
PTR loc;
|
||||
off_t n;
|
||||
PTR buf;
|
||||
{
|
||||
if (n < 1L) {
|
||||
emsg(nobytes);
|
||||
|
@ -957,7 +949,8 @@ do_put(PTR loc, off_t n, PTR buf)
|
|||
|
||||
/* argument sig not used, because only SIGINT will be catched */
|
||||
void
|
||||
jmpproc(int sig)
|
||||
jmpproc(sig)
|
||||
int sig;
|
||||
{
|
||||
if (P(P_EB)) beep();
|
||||
repaint();
|
||||
|
@ -968,7 +961,8 @@ jmpproc(int sig)
|
|||
|
||||
|
||||
off_t
|
||||
range(int ch)
|
||||
range(ch)
|
||||
int ch;
|
||||
{
|
||||
int ch1;
|
||||
long count;
|
||||
|
|
7
bvi.h
7
bvi.h
|
@ -13,11 +13,10 @@
|
|||
* 2014-10-01 V 1.4.0
|
||||
* 2019-01-28 V 1.4.1
|
||||
* 2023-03-07 V 1.4.2
|
||||
* 2025-05-24 V 1.5.0
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2023 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -201,8 +200,6 @@ extern int smode;
|
|||
extern int again;
|
||||
extern int block_flag;
|
||||
extern off_t block_begin, block_end, block_size;
|
||||
extern int statusflag;
|
||||
extern int space;
|
||||
|
||||
#ifndef S_ISDIR /* POSIX 1003.1 file type tests. */
|
||||
#define S_ISDIR(m) ((m & 0170000) == 0040000) /* directory */
|
||||
|
@ -217,7 +214,7 @@ extern int space;
|
|||
void d_memmove(PTR, PTR, off_t);
|
||||
#endif
|
||||
|
||||
#if defined(ANSI) || defined(__STDC__)
|
||||
#ifdef ANSI
|
||||
off_t alloc_buf(off_t, char **), yd_addr(void);
|
||||
off_t range(int);
|
||||
void do_dot(void), do_exit(void), do_shell(void), do_undo(void);
|
||||
|
|
62
comm.c
62
comm.c
|
@ -15,11 +15,10 @@
|
|||
* 2014-01-28 V 1.4.0
|
||||
* 2019-01-27 V 1.4.1
|
||||
* 2023-03-06 V 1.4.2
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2023 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -73,8 +72,8 @@ static char *c_argv[9];
|
|||
|
||||
char *nowrtmsg = "No write@since last change (:%s! overrides)";
|
||||
char *morefiles = "more files@to edit";
|
||||
char *ambigous = "Ambiguous|Too many file names";
|
||||
char *ambvalue = "Ambiguous|Too many values";
|
||||
char *ambigous = "Ambigous|Too many file names";
|
||||
char *ambvalue = "Ambigous|Too many values";
|
||||
char *extra = "Extra chars|Extra characters at end of command";
|
||||
char *noaddr = "No address allowed@on this command";
|
||||
char *noval = "No value@for binary operation";
|
||||
|
@ -99,7 +98,8 @@ static char oldbuf[CMDSZ + 3]; /** for :!! command **/
|
|||
* the environment variable "BVIINIT" (or eventually .bvirc).
|
||||
*/
|
||||
void
|
||||
docmdline(char *cmdline)
|
||||
docmdline(cmdline)
|
||||
char *cmdline;
|
||||
{
|
||||
char buff[CMDSZ];
|
||||
char cmdbuf[CMDSZ];
|
||||
|
@ -629,7 +629,11 @@ yd_addr()
|
|||
|
||||
/*********** Save file if not read only ********************/
|
||||
int
|
||||
save_chk(char *fname, char *start, char *end, int flags)
|
||||
save_chk(fname, start, end, flags)
|
||||
char *fname;
|
||||
char *start;
|
||||
char *end;
|
||||
int flags;
|
||||
{
|
||||
if (P(P_RO)) {
|
||||
sprintf(string, "\"%s\" File is read only", name);
|
||||
|
@ -653,7 +657,9 @@ do_exit()
|
|||
|
||||
|
||||
int
|
||||
doecmd(char *arg, int force)
|
||||
doecmd(arg, force)
|
||||
char *arg;
|
||||
int force;
|
||||
{
|
||||
char *tmp;
|
||||
|
||||
|
@ -716,34 +722,33 @@ clearstr()
|
|||
|
||||
/**** displays an error message *****/
|
||||
void
|
||||
emsg(char *s)
|
||||
emsg(s)
|
||||
char *s;
|
||||
{
|
||||
int cnt;
|
||||
/*
|
||||
int stchar;
|
||||
|
||||
if (P(P_EB)) beep();
|
||||
if (P(P_MO)) {
|
||||
stchar = statsize;
|
||||
} else {
|
||||
stchar = 0;
|
||||
}
|
||||
*/
|
||||
if (P(P_EB)) beep();
|
||||
statusflag = 0;
|
||||
|
||||
clearstr();
|
||||
attrset(A_REVERSE);
|
||||
cnt = outmsg(s);
|
||||
attrset(A_NORMAL);
|
||||
if (cnt >= (maxx)) {
|
||||
// addch('\n');
|
||||
wait_return(TRUE);
|
||||
}
|
||||
if (cnt >= (maxx - stchar)) {
|
||||
addch('\n');
|
||||
wait_return(TRUE); }
|
||||
}
|
||||
|
||||
|
||||
/*** System error message *****/
|
||||
void
|
||||
sysemsg(char *s)
|
||||
sysemsg(s)
|
||||
char *s;
|
||||
{
|
||||
char string[256];
|
||||
|
||||
|
@ -759,7 +764,8 @@ sysemsg(char *s)
|
|||
|
||||
/*** displays mode if showmode set *****/
|
||||
void
|
||||
smsg(char *s)
|
||||
smsg(s)
|
||||
char *s;
|
||||
{
|
||||
if (P(P_MO)) {
|
||||
msg(s);
|
||||
|
@ -770,27 +776,27 @@ smsg(char *s)
|
|||
|
||||
/************* displays s on status line *****************/
|
||||
void
|
||||
msg(char *s)
|
||||
msg(s)
|
||||
char *s;
|
||||
{
|
||||
/*
|
||||
int stchar;
|
||||
|
||||
if (P(P_MO)) {
|
||||
stchar = statsize;
|
||||
} else {
|
||||
stchar = 0;
|
||||
}o*/
|
||||
statusflag = 0;
|
||||
}
|
||||
clearstr();
|
||||
if (outmsg(s) >= maxx) {
|
||||
// addch('\n');
|
||||
if (outmsg(s) >= (maxx - stchar)) {
|
||||
addch('\n');
|
||||
wait_return(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
outmsg(char *s)
|
||||
outmsg(s)
|
||||
char *s;
|
||||
{
|
||||
char *poi;
|
||||
int cnt = 0;
|
||||
|
@ -822,7 +828,8 @@ outmsg(char *s)
|
|||
*
|
||||
*/
|
||||
int
|
||||
wait_return(int flag)
|
||||
wait_return(flag)
|
||||
int flag;
|
||||
{
|
||||
int c;
|
||||
|
||||
|
@ -845,7 +852,8 @@ wait_return(int flag)
|
|||
|
||||
|
||||
int
|
||||
chk_comm(int flag)
|
||||
chk_comm(flag)
|
||||
int flag;
|
||||
{
|
||||
if ((flag & NO_ADDR) && (addr_flag > 0)) {
|
||||
emsg(noaddr); return 1; }
|
||||
|
|
69
config.guess
vendored
69
config.guess
vendored
|
@ -1,10 +1,10 @@
|
|||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright 1992-2024 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2023 Free Software Foundation, Inc.
|
||||
|
||||
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
||||
|
||||
timestamp='2024-07-27'
|
||||
timestamp='2023-01-01'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
|
|||
usage="\
|
||||
Usage: $0 [OPTION]
|
||||
|
||||
Output the configuration name of the system '$me' is run on.
|
||||
Output the configuration name of the system \`$me' is run on.
|
||||
|
||||
Options:
|
||||
-h, --help print this help, then exit
|
||||
|
@ -60,13 +60,13 @@ version="\
|
|||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright 1992-2024 Free Software Foundation, Inc.
|
||||
Copyright 1992-2023 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
|
||||
help="
|
||||
Try '$me --help' for more information."
|
||||
Try \`$me --help' for more information."
|
||||
|
||||
# Parse command line
|
||||
while test $# -gt 0 ; do
|
||||
|
@ -102,8 +102,8 @@ GUESS=
|
|||
# temporary files to be created and, as you can see below, it is a
|
||||
# headache to deal with in a portable fashion.
|
||||
|
||||
# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
|
||||
# use 'HOST_CC' if defined, but it is deprecated.
|
||||
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
|
||||
# use `HOST_CC' if defined, but it is deprecated.
|
||||
|
||||
# Portable tmp directory creation inspired by the Autoconf team.
|
||||
|
||||
|
@ -123,7 +123,7 @@ set_cc_for_build() {
|
|||
dummy=$tmp/dummy
|
||||
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
|
||||
,,) echo "int x;" > "$dummy.c"
|
||||
for driver in cc gcc c17 c99 c89 ; do
|
||||
for driver in cc gcc c89 c99 ; do
|
||||
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
|
||||
CC_FOR_BUILD=$driver
|
||||
break
|
||||
|
@ -155,9 +155,6 @@ Linux|GNU|GNU/*)
|
|||
|
||||
set_cc_for_build
|
||||
cat <<-EOF > "$dummy.c"
|
||||
#if defined(__ANDROID__)
|
||||
LIBC=android
|
||||
#else
|
||||
#include <features.h>
|
||||
#if defined(__UCLIBC__)
|
||||
LIBC=uclibc
|
||||
|
@ -165,8 +162,6 @@ Linux|GNU|GNU/*)
|
|||
LIBC=dietlibc
|
||||
#elif defined(__GLIBC__)
|
||||
LIBC=gnu
|
||||
#elif defined(__LLVM_LIBC__)
|
||||
LIBC=llvm
|
||||
#else
|
||||
#include <stdarg.h>
|
||||
/* First heuristic to detect musl libc. */
|
||||
|
@ -174,7 +169,6 @@ Linux|GNU|GNU/*)
|
|||
LIBC=musl
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
|
||||
eval "$cc_set_libc"
|
||||
|
@ -465,7 +459,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
|
|||
UNAME_RELEASE=`uname -v`
|
||||
;;
|
||||
esac
|
||||
# Japanese Language versions have a version number like '4.1.3-JL'.
|
||||
# Japanese Language versions have a version number like `4.1.3-JL'.
|
||||
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
|
||||
GUESS=sparc-sun-sunos$SUN_REL
|
||||
;;
|
||||
|
@ -634,7 +628,6 @@ EOF
|
|||
sed 's/^ //' << EOF > "$dummy.c"
|
||||
#include <sys/systemcfg.h>
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
if (!__power_pc())
|
||||
|
@ -719,8 +712,7 @@ EOF
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
int main ()
|
||||
{
|
||||
#if defined(_SC_KERNEL_BITS)
|
||||
long bits = sysconf(_SC_KERNEL_BITS);
|
||||
|
@ -912,7 +904,7 @@ EOF
|
|||
fi
|
||||
;;
|
||||
*:FreeBSD:*:*)
|
||||
UNAME_PROCESSOR=`uname -p`
|
||||
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
||||
case $UNAME_PROCESSOR in
|
||||
amd64)
|
||||
UNAME_PROCESSOR=x86_64 ;;
|
||||
|
@ -984,27 +976,7 @@ EOF
|
|||
GUESS=$UNAME_MACHINE-unknown-minix
|
||||
;;
|
||||
aarch64:Linux:*:*)
|
||||
set_cc_for_build
|
||||
CPU=$UNAME_MACHINE
|
||||
LIBCABI=$LIBC
|
||||
if test "$CC_FOR_BUILD" != no_compiler_found; then
|
||||
ABI=64
|
||||
sed 's/^ //' << EOF > "$dummy.c"
|
||||
#ifdef __ARM_EABI__
|
||||
#ifdef __ARM_PCS_VFP
|
||||
ABI=eabihf
|
||||
#else
|
||||
ABI=eabi
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
|
||||
eval "$cc_set_abi"
|
||||
case $ABI in
|
||||
eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
|
||||
esac
|
||||
fi
|
||||
GUESS=$CPU-unknown-linux-$LIBCABI
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
;;
|
||||
aarch64_be:Linux:*:*)
|
||||
UNAME_MACHINE=aarch64_be
|
||||
|
@ -1070,15 +1042,6 @@ EOF
|
|||
k1om:Linux:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
;;
|
||||
kvx:Linux:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
;;
|
||||
kvx:cos:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-cos
|
||||
;;
|
||||
kvx:mbr:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-mbr
|
||||
;;
|
||||
loongarch32:Linux:*:* | loongarch64:Linux:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
||||
;;
|
||||
|
@ -1234,7 +1197,7 @@ EOF
|
|||
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
|
||||
;;
|
||||
i*86:OS/2:*:*)
|
||||
# If we were able to find 'uname', then EMX Unix compatibility
|
||||
# If we were able to find `uname', then EMX Unix compatibility
|
||||
# is probably installed.
|
||||
GUESS=$UNAME_MACHINE-pc-os2-emx
|
||||
;;
|
||||
|
@ -1375,7 +1338,7 @@ EOF
|
|||
GUESS=ns32k-sni-sysv
|
||||
fi
|
||||
;;
|
||||
PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
|
||||
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
|
||||
# says <Richard.M.Bartel@ccMail.Census.GOV>
|
||||
GUESS=i586-unisys-sysv4
|
||||
;;
|
||||
|
@ -1597,9 +1560,6 @@ EOF
|
|||
*:Unleashed:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
|
||||
;;
|
||||
*:Ironclad:*:*)
|
||||
GUESS=$UNAME_MACHINE-unknown-ironclad
|
||||
;;
|
||||
esac
|
||||
|
||||
# Do we have a guess based on uname results?
|
||||
|
@ -1623,7 +1583,6 @@ cat > "$dummy.c" <<EOF
|
|||
#endif
|
||||
#endif
|
||||
#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
#if defined (sony)
|
||||
|
|
935
config.sub
vendored
935
config.sub
vendored
File diff suppressed because it is too large
Load diff
67
edit.c
67
edit.c
|
@ -12,9 +12,8 @@
|
|||
* 2006-04-05 V 1.3.3 alpha - binary representation
|
||||
* 2014-09-30 V 1.4.0
|
||||
* 2019-10-12 V 1.4.1
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2019 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -64,7 +63,8 @@ static char *getcnext = NULL;
|
|||
* characters (for "." command)
|
||||
*/
|
||||
off_t
|
||||
edit(int mode)
|
||||
edit(mode)
|
||||
int mode;
|
||||
{
|
||||
int ch, ch1;
|
||||
size_t len;
|
||||
|
@ -286,7 +286,8 @@ escape:
|
|||
* else setpage()
|
||||
*/
|
||||
PTR
|
||||
do_ft(int ch, int flag)
|
||||
do_ft(ch, flag)
|
||||
int ch, flag;
|
||||
{
|
||||
static int chi;
|
||||
static int chp = 1;
|
||||
|
@ -363,7 +364,8 @@ do_ft(int ch, int flag)
|
|||
|
||||
|
||||
void
|
||||
do_z(int mode)
|
||||
do_z(mode)
|
||||
int mode;
|
||||
{
|
||||
switch (mode) {
|
||||
case '.': while (y != maxy / 2) {
|
||||
|
@ -399,7 +401,8 @@ do_z(int mode)
|
|||
|
||||
|
||||
void
|
||||
scrolldown(int lns)
|
||||
scrolldown(lns)
|
||||
int lns;
|
||||
{
|
||||
while (lns--) {
|
||||
if (maxpos >= (pagepos + Anzahl)) pagepos += Anzahl;
|
||||
|
@ -411,7 +414,8 @@ scrolldown(int lns)
|
|||
|
||||
|
||||
void
|
||||
scrollup(int lns)
|
||||
scrollup(lns)
|
||||
int lns;
|
||||
{
|
||||
while (lns--) {
|
||||
if (mem <= (PTR)(pagepos - Anzahl)) pagepos -= Anzahl;
|
||||
|
@ -461,8 +465,7 @@ statpos()
|
|||
off_t bytepos;
|
||||
char string[MAXCMD+1], str[6];
|
||||
|
||||
// if (!P(P_MO)) return;
|
||||
if (!statusflag) return;
|
||||
if (!P(P_MO)) return;
|
||||
bytepos = current - mem;
|
||||
if (bytepos >= filesize) {
|
||||
// mvaddstr(maxy, status, " ");
|
||||
|
@ -481,18 +484,10 @@ statpos()
|
|||
}
|
||||
bin_val[8] = '\0';
|
||||
|
||||
attrset(A_BOLD);
|
||||
status = maxx - 1 - statsize;
|
||||
if (status > 0) {
|
||||
sprintf(string, "%08llX %s \\%03o 0x%02X %3d ",
|
||||
(long long)(bytepos + P(P_OF)), bin_val, Char1, Char1, Char1);
|
||||
} else {
|
||||
sprintf(string, "%08llX %3d ",
|
||||
(long long)(bytepos + P(P_OF)), Char1);
|
||||
mvaddstr(maxy, 0, string);
|
||||
attrset(A_NORMAL);
|
||||
return;
|
||||
}
|
||||
attrset(A_BOLD);
|
||||
status = maxx - 1 - statsize;
|
||||
mvaddstr(maxy, status, string);
|
||||
|
||||
if (isprint(Char1)) {
|
||||
|
@ -526,9 +521,10 @@ statpos()
|
|||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
printline(PTR mempos, int scpos)
|
||||
printline(mempos, scpos)
|
||||
PTR mempos;
|
||||
int scpos;
|
||||
{
|
||||
PTR hl_start = 0;
|
||||
PTR hl_end = 0;
|
||||
|
@ -664,7 +660,8 @@ repaint() /***** redraw screen *********************/
|
|||
|
||||
/******* display an arbitrary address on screen *******/
|
||||
void
|
||||
setpage(PTR addr)
|
||||
setpage(addr)
|
||||
PTR addr;
|
||||
{
|
||||
if ((addr >= pagepos) && ((addr - pagepos) < screen)) {
|
||||
y = (addr - pagepos) / Anzahl;
|
||||
|
@ -687,7 +684,8 @@ setpage(PTR addr)
|
|||
|
||||
|
||||
int
|
||||
cur_forw(int check)
|
||||
cur_forw(check)
|
||||
int check;
|
||||
{
|
||||
if (check) {
|
||||
if (current - mem >= filesize) {
|
||||
|
@ -762,7 +760,8 @@ cur_back()
|
|||
|
||||
|
||||
void
|
||||
fileinfo(char *fname)
|
||||
fileinfo(fname)
|
||||
char *fname;
|
||||
{
|
||||
off_t bytepos;
|
||||
char fstatus[MAXCMD];
|
||||
|
@ -831,7 +830,8 @@ vgetc()
|
|||
|
||||
|
||||
void
|
||||
stuffin(char *s)
|
||||
stuffin(s)
|
||||
char *s;
|
||||
{
|
||||
if (s == NULL) { /* clear the stuff buffer */
|
||||
getcnext = NULL;
|
||||
|
@ -846,7 +846,9 @@ stuffin(char *s)
|
|||
|
||||
|
||||
void
|
||||
do_back(off_t n, PTR start)
|
||||
do_back(n, start)
|
||||
off_t n;
|
||||
PTR start;
|
||||
{
|
||||
if (start - n < mem) {
|
||||
beep();
|
||||
|
@ -868,7 +870,9 @@ do_back(off_t n, PTR start)
|
|||
|
||||
|
||||
int
|
||||
do_delete(off_t n, PTR start)
|
||||
do_delete(n, start)
|
||||
off_t n;
|
||||
PTR start;
|
||||
{
|
||||
if (n + start > maxpos) {
|
||||
beep();
|
||||
|
@ -898,7 +902,10 @@ do_delete(off_t n, PTR start)
|
|||
* The :insert, :append and :change command
|
||||
*/
|
||||
void
|
||||
do_ins_chg(PTR start, char *arg, int mode)
|
||||
do_ins_chg(start, arg, mode)
|
||||
PTR start;
|
||||
char *arg;
|
||||
int mode;
|
||||
{
|
||||
int base;
|
||||
off_t buffer = BUFFER;
|
||||
|
@ -1014,7 +1021,9 @@ clear_marks()
|
|||
|
||||
|
||||
void
|
||||
do_mark(int mark, PTR addr)
|
||||
do_mark(mark, addr)
|
||||
int mark;
|
||||
PTR addr;
|
||||
{
|
||||
if (mark < 'a' || mark > 'z' || current >= maxpos)
|
||||
return;
|
||||
|
|
33
io.c
33
io.c
|
@ -12,11 +12,10 @@
|
|||
* 2014-05-03 V 1.4.0
|
||||
* 2019-01-27 V 1.4.1
|
||||
* 2022-03-09 V 1.4.2
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2022 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -80,7 +79,11 @@ extern char *fname_buf;
|
|||
|
||||
/*********** Save the patched file ********************/
|
||||
int
|
||||
save(char *fname, char *start, char *end, int flags)
|
||||
save(fname, start, end, flags)
|
||||
char *fname;
|
||||
char *start;
|
||||
char *end;
|
||||
int flags;
|
||||
{
|
||||
int fd;
|
||||
char *string;
|
||||
|
@ -164,7 +167,8 @@ save(char *fname, char *start, char *end, int flags)
|
|||
|
||||
/* loads a file, returns the filesize */
|
||||
off_t
|
||||
load(char *fname)
|
||||
load(fname)
|
||||
char *fname;
|
||||
{
|
||||
int fd = -1;
|
||||
//char *string;
|
||||
|
@ -333,7 +337,8 @@ load(char *fname)
|
|||
* Needed for DOS version only
|
||||
*/
|
||||
void
|
||||
bvi_init(char *dir)
|
||||
bvi_init(dir)
|
||||
char *dir;
|
||||
{
|
||||
char *initstr;
|
||||
char rcpath[MAXCMD];
|
||||
|
@ -373,7 +378,8 @@ bvi_init(char *dir)
|
|||
|
||||
|
||||
int
|
||||
enlarge(off_t add)
|
||||
enlarge(add)
|
||||
off_t add;
|
||||
{
|
||||
char *newmem;
|
||||
off_t savecur, savepag, savemax, saveundo;
|
||||
|
@ -422,7 +428,8 @@ do_shell()
|
|||
|
||||
#ifndef HAVE_STRDUP
|
||||
char *
|
||||
strdup(char *s)
|
||||
strdup(s)
|
||||
char *s;
|
||||
{
|
||||
char *p;
|
||||
size_t n;
|
||||
|
@ -440,7 +447,10 @@ strdup(char *s)
|
|||
* Copy contents of memory (with possible overlapping).
|
||||
*/
|
||||
char *
|
||||
memmove(char *s1, char *s2, size_t n)
|
||||
memmove(s1, s2, n)
|
||||
char *s1;
|
||||
char *s2;
|
||||
size_t n;
|
||||
{
|
||||
bcopy(s2, s1, n);
|
||||
return(s1);
|
||||
|
@ -449,7 +459,9 @@ memmove(char *s1, char *s2, size_t n)
|
|||
|
||||
|
||||
off_t
|
||||
alloc_buf(off_t n, char **buffer)
|
||||
alloc_buf(n, buffer)
|
||||
off_t n;
|
||||
char **buffer;
|
||||
{
|
||||
if (*buffer == NULL) {
|
||||
*buffer = (char *)malloc(n);
|
||||
|
@ -465,7 +477,8 @@ alloc_buf(off_t n, char **buffer)
|
|||
|
||||
|
||||
int
|
||||
addfile(char *fname)
|
||||
addfile(fname)
|
||||
char *fname;
|
||||
{
|
||||
int fd;
|
||||
off_t oldsize;
|
||||
|
|
|
@ -1 +1 @@
|
|||
#define VERSION "1.5.0"
|
||||
#define VERSION "1.4.2"
|
||||
|
|
64
re.c
64
re.c
|
@ -12,9 +12,8 @@
|
|||
* 2013-08-24 V 1.4.0
|
||||
* 2019-01-28 V 1.4.1
|
||||
* 2023-03-07 V 1.4.2
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2023 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -37,11 +36,7 @@
|
|||
#include "bvi.h"
|
||||
#include "set.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
static int sbracket(int, char *, int);
|
||||
#else
|
||||
static int sbracket();
|
||||
#endif
|
||||
|
||||
char act_pat[MAXCMD]; /* found pattern */
|
||||
char pattern[MAXCMD + 1];
|
||||
|
@ -53,7 +48,9 @@ char *emptyclass = "Bad character class|Empty byte class '[]' or '[^]' cannot ma
|
|||
|
||||
|
||||
PTR
|
||||
bregexec(PTR start, char *scan)
|
||||
bregexec(start, scan)
|
||||
PTR start;
|
||||
char *scan;
|
||||
{
|
||||
char *act;
|
||||
int count, test;
|
||||
|
@ -128,7 +125,10 @@ bregexec(PTR start, char *scan)
|
|||
|
||||
|
||||
static int
|
||||
sbracket(int start, char *scan, int count)
|
||||
sbracket(start, scan, count)
|
||||
int start;
|
||||
char *scan;
|
||||
int count;
|
||||
{
|
||||
if (*scan++ == '^') {
|
||||
if (!memchr(scan, start, --count)) return 0;
|
||||
|
@ -140,7 +140,8 @@ sbracket(int start, char *scan, int count)
|
|||
|
||||
|
||||
PTR
|
||||
end_word(PTR start)
|
||||
end_word(start)
|
||||
PTR start;
|
||||
{
|
||||
PTR pos;
|
||||
|
||||
|
@ -154,7 +155,9 @@ end_word(PTR start)
|
|||
/* wordsearch serves the 'W' and 'w' - command
|
||||
*/
|
||||
PTR
|
||||
wordsearch(PTR start, char mode)
|
||||
wordsearch(start, mode)
|
||||
PTR start;
|
||||
char mode;
|
||||
{
|
||||
PTR found;
|
||||
PTR pos;
|
||||
|
@ -184,7 +187,9 @@ wordsearch(PTR start, char mode)
|
|||
/* backsearch serves the 'b' and 'B' command
|
||||
*/
|
||||
PTR
|
||||
backsearch(PTR start, char mode)
|
||||
backsearch(start, mode)
|
||||
PTR start;
|
||||
char mode;
|
||||
{
|
||||
PTR pos;
|
||||
int ccount;
|
||||
|
@ -211,7 +216,11 @@ backsearch(PTR start, char mode)
|
|||
/* used by :s
|
||||
*/
|
||||
int
|
||||
do_substitution(int delim, char *line, PTR startpos, PTR endpos)
|
||||
do_substitution(delim, line, startpos, endpos)
|
||||
int delim;
|
||||
char *line;
|
||||
PTR startpos;
|
||||
PTR endpos;
|
||||
{
|
||||
int n;
|
||||
char *found;
|
||||
|
@ -367,7 +376,12 @@ SKIP:
|
|||
* return address found
|
||||
*/
|
||||
PTR
|
||||
searching(int ch, char *line, PTR startpos, PTR endpos, int flag)
|
||||
searching(ch, line, startpos, endpos, flag)
|
||||
int ch;
|
||||
char *line;
|
||||
PTR startpos;
|
||||
PTR endpos;
|
||||
int flag;
|
||||
{
|
||||
char *cmd = NULL;
|
||||
PTR found;
|
||||
|
@ -471,7 +485,9 @@ searching(int ch, char *line, PTR startpos, PTR endpos, int flag)
|
|||
* returns pointer to next character
|
||||
*/
|
||||
char *
|
||||
patcpy(char *s1, char *s2, char delim)
|
||||
patcpy(s1, s2, delim)
|
||||
char *s1, *s2;
|
||||
char delim;
|
||||
{
|
||||
while (*s2 != '\0' && *s2 != delim) {
|
||||
if (*s2 == '\\' && *(s2 + 1) == delim) s2++;
|
||||
|
@ -484,10 +500,14 @@ patcpy(char *s1, char *s2, char delim)
|
|||
|
||||
|
||||
PTR
|
||||
fsearch_end(PTR start, PTR end, char *smem, PTR *s_end)
|
||||
fsearch_end(start, end, smem, s_end)
|
||||
/*
|
||||
fsearch(start, end, smem)
|
||||
*/
|
||||
PTR start;
|
||||
PTR end;
|
||||
char *smem;
|
||||
PTR *s_end;
|
||||
{
|
||||
PTR spos;
|
||||
|
||||
|
@ -506,7 +526,10 @@ fsearch(start, end, smem)
|
|||
|
||||
|
||||
PTR
|
||||
fsearch(PTR start, PTR end, char *smem)
|
||||
fsearch(start, end, smem)
|
||||
PTR start;
|
||||
PTR end;
|
||||
char *smem;
|
||||
{
|
||||
PTR s_end;
|
||||
return fsearch_end(start, end, smem, &s_end);
|
||||
|
@ -514,7 +537,10 @@ fsearch(PTR start, PTR end, char *smem)
|
|||
|
||||
|
||||
PTR
|
||||
rsearch(PTR start, PTR end, char *smem)
|
||||
rsearch(start, end, smem)
|
||||
PTR start;
|
||||
PTR end;
|
||||
char *smem;
|
||||
{
|
||||
PTR spos;
|
||||
|
||||
|
@ -534,7 +560,9 @@ rsearch(PTR start, PTR end, char *smem)
|
|||
* returns NULL on error or default_address, if nothing found
|
||||
*/
|
||||
PTR
|
||||
calc_addr(char **pointer, PTR def_addr)
|
||||
calc_addr(pointer, def_addr)
|
||||
char **pointer;
|
||||
PTR def_addr;
|
||||
{
|
||||
PTR addr;
|
||||
int ch, mark;
|
||||
|
|
11
recomp.c
11
recomp.c
|
@ -6,9 +6,8 @@
|
|||
* 2000-04-25 V 1.3.0 beta
|
||||
* 2000-07-12 V 1.3.0 final
|
||||
* 2019-01-28 V 1.4.1
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2019 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -47,7 +46,9 @@ extern char *emptyclass;
|
|||
* Compiling an ASCII sequence to a regex string
|
||||
*/
|
||||
int
|
||||
ascii_comp(char *smem, char *pattern)
|
||||
ascii_comp(smem, pattern)
|
||||
char *smem;
|
||||
char *pattern;
|
||||
{
|
||||
char *end;
|
||||
char *comp;
|
||||
|
@ -166,7 +167,9 @@ ascii_comp(char *smem, char *pattern)
|
|||
* Compiling a hex expression to a regex string
|
||||
*/
|
||||
int
|
||||
hex_comp(char *smem, char *pattern)
|
||||
hex_comp(smem, pattern)
|
||||
char *smem;
|
||||
char *pattern;
|
||||
{
|
||||
char *end;
|
||||
char *comp;
|
||||
|
|
88
set.c
88
set.c
|
@ -14,9 +14,8 @@
|
|||
* 2010-06-02 V 1.2.4
|
||||
* 2014-09-30 V 1.4.0
|
||||
* 2019-01-22 V 1.4.1
|
||||
* 2025-07-19 V 1.5.0
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* Copyright 1996-2019 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
|
@ -42,7 +41,7 @@ static char buf[MAXCMD+1];
|
|||
|
||||
struct param params[] = {
|
||||
{ "autowrite", "aw", FALSE, "", P_BOOL },
|
||||
{ "columns", "cm", 0, "", P_NUM },
|
||||
{ "columns", "cm", 16, "", P_NUM },
|
||||
{ "errorbells", "eb", FALSE, "", P_BOOL },
|
||||
{ "ignorecase", "ic", FALSE, "", P_BOOL },
|
||||
{ "magic", "ma", TRUE, "", P_BOOL },
|
||||
|
@ -54,7 +53,7 @@ struct param params[] = {
|
|||
{ "term", "term", 0, "", P_TEXT },
|
||||
{ "terse", "terse", FALSE, "", P_BOOL },
|
||||
{ "unixstyle", "us", FALSE, "", P_BOOL },
|
||||
{ "window", "window", 0, "", P_NUM },
|
||||
{ "window", "window", 25, "", P_NUM },
|
||||
{ "wordlength", "wl", 4, "", P_NUM },
|
||||
{ "wrapscan", "ws", TRUE, "", P_BOOL },
|
||||
{ "highlight", "hl", TRUE, "", P_BOOL },
|
||||
|
@ -66,16 +65,15 @@ struct param params[] = {
|
|||
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
doset(char *arg)
|
||||
doset(arg)
|
||||
char *arg; /* parameter string */
|
||||
{
|
||||
int i;
|
||||
char *s;
|
||||
int did_window = FALSE;
|
||||
int state = TRUE; /* new state of boolean parms. */
|
||||
char string[80];
|
||||
off_t val;
|
||||
|
||||
if (arg == NULL) {
|
||||
showparms(FALSE);
|
||||
|
@ -113,38 +111,20 @@ doset(char *arg)
|
|||
return 0;
|
||||
}
|
||||
if (!strcmp(params[i].fullname, "term")) {
|
||||
emsg("Can't change@type of terminal from within bvi");
|
||||
emsg("Can't change type of terminal from within bvi");
|
||||
return 1;
|
||||
}
|
||||
if (params[i].flags & P_NUM) {
|
||||
if ((i == P_LI) || (i == P_OF) || (i == P_CM)) did_window++;
|
||||
if ((i == P_LI) || (i == P_OF)) did_window++;
|
||||
if (arg[strlen(s)] != '=' || state == FALSE) {
|
||||
sprintf(string, "Option %s is not a toggle", params[i].fullname);
|
||||
sprintf(string, "Option %s is not a toggle",
|
||||
params[i].fullname);
|
||||
emsg(string);
|
||||
return 1;
|
||||
} else {
|
||||
s = arg + strlen(s) + 1;
|
||||
val = strtoll(s, &s, 0);
|
||||
if ((i == P_CM || i == P_LI) && (!strcmp("auto", s) || (val == 0))) {
|
||||
if (i == P_CM) {
|
||||
params[i].nvalue = 0;
|
||||
Anzahl = ((COLS - AnzAdd - space) / 4);
|
||||
} else {
|
||||
params[i].nvalue = 0;
|
||||
maxy = LINES - 1;
|
||||
}
|
||||
} else {
|
||||
params[i].nvalue = val;
|
||||
if (i == P_CM) {
|
||||
Anzahl = val;
|
||||
} else {
|
||||
maxy = val;
|
||||
}
|
||||
}
|
||||
params[i].nvalue = strtoll(s, &s, 0);
|
||||
params[i].flags |= P_CHANGED;
|
||||
if (i == P_LI) params[P_SS].nvalue = val / 2;
|
||||
|
||||
|
||||
#if defined(__MSDOS__) && !defined(DJGPP)
|
||||
if (i == P_CO) {
|
||||
textcolor(P(P_CO) & 0x07);
|
||||
|
@ -154,23 +134,22 @@ doset(char *arg)
|
|||
}
|
||||
#endif
|
||||
if (i == P_CM) {
|
||||
/*
|
||||
if (((COLS - AnzAdd - 1) / 4) >= P(P_CM)) {
|
||||
Anzahl = P(P_CM);
|
||||
} else {
|
||||
Anzahl = ((COLS - AnzAdd - 1) / 4);
|
||||
Anzahl = P(P_CM) = ((COLS - AnzAdd - 1) / 4);
|
||||
}
|
||||
*/
|
||||
maxx = Anzahl * 4 + AnzAdd + 1;
|
||||
Anzahl3 = Anzahl * 3;
|
||||
status = Anzahl3 + Anzahl - statsize;
|
||||
status = Anzahl3 + Anzahl - 17;
|
||||
screen = Anzahl * (maxy - 1);
|
||||
did_window++;
|
||||
stuffin("H"); /* set cursor at HOME */
|
||||
}
|
||||
}
|
||||
} else { /* boolean */
|
||||
if (arg[strlen(s)] == '=') {
|
||||
emsg("Invalid set@of boolean parameter");
|
||||
emsg("Invalid set of boolean parameter");
|
||||
return 1;
|
||||
} else {
|
||||
params[i].nvalue = state;
|
||||
|
@ -190,10 +169,7 @@ doset(char *arg)
|
|||
}
|
||||
|
||||
if (did_window) {
|
||||
/*
|
||||
maxy = P(P_LI) - 1;
|
||||
maxy = LINES - 1;
|
||||
*/
|
||||
new_screen();
|
||||
}
|
||||
|
||||
|
@ -203,33 +179,28 @@ doset(char *arg)
|
|||
|
||||
/* show ALL parameters */
|
||||
void
|
||||
showparms(int all)
|
||||
showparms(all)
|
||||
int all;
|
||||
{
|
||||
struct param *p;
|
||||
int n, i;
|
||||
int n;
|
||||
|
||||
statusflag = 0;
|
||||
n = 2;
|
||||
i = -1;
|
||||
msg("Parameters:\n");
|
||||
for (p = ¶ms[0]; p->fullname[0] != '\0' ;p++) {
|
||||
i++;
|
||||
if (!all && ((p->flags & P_CHANGED) == 0))
|
||||
continue;
|
||||
if (p->flags & P_BOOL) {
|
||||
sprintf(buf, " %s%s\n", (p->nvalue ? " " : "no"), p->fullname);
|
||||
} else if (p->flags & P_TEXT) {
|
||||
if (p->flags & P_BOOL)
|
||||
sprintf(buf, " %s%s\n",
|
||||
(p->nvalue ? " " : "no"), p->fullname);
|
||||
else if (p->flags & P_TEXT)
|
||||
sprintf(buf, " %s=%s\n", p->fullname, p->svalue);
|
||||
} else {
|
||||
if ((p->nvalue == 0) && (i == P_CM || i == P_LI)) {
|
||||
sprintf(buf, " %s=auto\n", p->fullname);
|
||||
} else {
|
||||
else
|
||||
sprintf(buf, " %s=%lld\n", p->fullname, (long long)p->nvalue);
|
||||
}
|
||||
}
|
||||
|
||||
msg(buf);
|
||||
n++;
|
||||
if (n == maxy) {
|
||||
if (n == params[P_LI].nvalue) {
|
||||
if (wait_return(FALSE)) return;
|
||||
n = 1;
|
||||
}
|
||||
|
@ -240,7 +211,8 @@ showparms(int all)
|
|||
|
||||
/* reads the init file (.bvirc) */
|
||||
int
|
||||
read_rc(char *fn)
|
||||
read_rc(fn)
|
||||
char *fn;
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -258,7 +230,9 @@ read_rc(char *fn)
|
|||
|
||||
|
||||
int
|
||||
do_logic(int mode, char *str)
|
||||
do_logic(mode, str)
|
||||
int mode;
|
||||
char *str;
|
||||
{
|
||||
int a, b;
|
||||
int value;
|
||||
|
@ -344,7 +318,9 @@ do_logic(int mode, char *str)
|
|||
|
||||
|
||||
int
|
||||
getcmdstr(char *p, int x)
|
||||
getcmdstr(p, x)
|
||||
char *p;
|
||||
int x;
|
||||
{
|
||||
int c;
|
||||
int i, n;
|
||||
|
|
5
set.h
5
set.h
|
@ -2,8 +2,8 @@
|
|||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2025 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
* Copyright 1996-2019 by Gerhard Buergmann
|
||||
* Gerhard.Buergmann@puon.at
|
||||
*
|
||||
* 1998-03-14 V 1.0.0
|
||||
* 1999-01-14 V 1.1.0
|
||||
|
@ -14,7 +14,6 @@
|
|||
* 2010-06-02 V 1.3.4
|
||||
* 2013-08-23 V 1.4.0
|
||||
* 2019-01-22 V 1.4.1
|
||||
* 2025-05-24 V 1.5.0
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue