mirror of
https://github.com/vbatts/bvi.git
synced 2025-07-01 16:18:34 +00:00
bvi-1.4.2.src.tar.gz
4bba16c2b496963a9b939336c0abcc8d488664492080ae43a86da18cf4ce94f2 bvi-1.4.2.src.tar.gz https://bvi.sourceforge.net/download.html
This commit is contained in:
parent
40e8e886bc
commit
75fc14b579
24 changed files with 2482 additions and 1761 deletions
19
CHANGES
19
CHANGES
|
@ -1,3 +1,22 @@
|
|||
New in release 1.4.2
|
||||
====================
|
||||
This release is dedicated to Sven Guckes (*1967-04-06 +2022-02-20).
|
||||
Sven was an enthusiastic Linux explainer, his particular passion was the console tools.
|
||||
I met Sven a couple of times. He always showed interest in the further development of
|
||||
the bvi and liked to discuss new ideas.
|
||||
R.I.P. Sven
|
||||
|
||||
* :wq bug fixed
|
||||
* Error-message if input no terminal
|
||||
* Mixed licenses (SF bug #10)
|
||||
* Segmentation fault occurs on undo (SF bug #11)
|
||||
* Segmentation fault occurs on substitution in 32-bit systems (SF bug #12)
|
||||
* ncursesw support
|
||||
* Handling inputs larger than 2^31 bytes (SF bug #13)
|
||||
* Some incorrect function prototypes in ANSI mode fixed (SF bug #14)
|
||||
* Minor fixes
|
||||
|
||||
|
||||
New in release 1.4.1
|
||||
====================
|
||||
|
||||
|
|
4
CREDITS
4
CREDITS
|
@ -22,6 +22,10 @@ Josef Hinteregger <joehtg@joehtg.co.at> ZZ write bug, lfs
|
|||
Richard Yao <ryao@gentoo.org> Buffer overflow at terminals > 255, ncurses with tinfo, configure fixed
|
||||
<elo3456@sbcglobal.net> ~ operator dumps core
|
||||
Dave Keaton <davek@gmail.com> ASCII_DEL patch
|
||||
Udo Hertrich-Jeromin <udo.hertrich-jeromin@tuwien.ac.at> ncursesw for tinycorelinux
|
||||
Takashi Yano Segmentation fault occurs on undo, Segmentation fault occurs on substitution in 32-bit systems
|
||||
Dominik Köppl <dkppl@dkppl.de> Handling inputs larger than 2^31 bytes
|
||||
Christopher Head Some incorrect function prototypes in ANSI mode
|
||||
|
||||
|
||||
Packages:
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# "autoconf" program (constructs like "@foo@" will get replaced in the
|
||||
# actual Makefile.
|
||||
#
|
||||
# Copyright (c) 1996-2019 by Gerhard Buergmann
|
||||
# Copyright (c) 1996-2022 by Gerhard Buergmann
|
||||
# gerhard@puon.at
|
||||
#
|
||||
# 1996-01-18 V 1.0.0
|
||||
|
@ -18,6 +18,7 @@
|
|||
# 2003-07-03 V 1.3.2
|
||||
# 2014-10-01 V 1.4.0
|
||||
# 2019-01-30 V 1.4.1
|
||||
# 2022-02-08 V 1.4.2
|
||||
#
|
||||
###############################################
|
||||
|
||||
|
@ -55,7 +56,7 @@ all: bvi bmore
|
|||
bvi: $(OBJS) $(HEADER)
|
||||
$(CC) $(LDFLAGS) -o bvi $(OBJS) $(LIBS)
|
||||
|
||||
bmore: $(BMOBJ)
|
||||
bmore: $(BMOBJ) bmore.h
|
||||
$(CC) $(LDFLAGS) -o bmore $(BMOBJ) $(LIBS)
|
||||
|
||||
%.o: %.c $(INCLUDES)
|
||||
|
|
6
README
6
README
|
@ -1,6 +1,6 @@
|
|||
BVI - Binary visual editor
|
||||
==========================
|
||||
http://bvi.sourceforge.net/
|
||||
https/bvi.sourceforge.net/
|
||||
|
||||
This editor for binary files was written by Gerhard Buergmann
|
||||
and is distributed under the GPL (GNU Public License).
|
||||
|
@ -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.4.1.src.tar.gz | tar xvf -
|
||||
cd bvi-1.4.1
|
||||
gunzip -c bvi-1.4.2.src.tar.gz | tar xvf -
|
||||
cd bvi-1.4.2
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#undef HAVE_CURSES_H
|
||||
|
||||
#undef HAVE_NCURSESW_CURSES_H
|
||||
|
||||
#undef NO_SYSERRL
|
||||
|
||||
#undef NEED_PUTC_CHAR
|
||||
|
|
2
bmore.1
2
bmore.1
|
@ -1,4 +1,4 @@
|
|||
.TH BMORE 1 "30 Jan 2019"
|
||||
.TH BMORE 1 "8 Feb 2022"
|
||||
.SH NAME
|
||||
bmore \- browse through a binary file
|
||||
.SH SYNOPSIS
|
||||
|
|
7
bmore.c
7
bmore.c
|
@ -8,8 +8,9 @@
|
|||
* 2004-01-09 V 1.3.2
|
||||
* 2013-08-23 V 1.4.0
|
||||
* 2019-01-22 V 1.4.1
|
||||
* 2023-03-06 V 1.4.2
|
||||
*
|
||||
* Copyright 1990-2019 by Gerhard Buergmann
|
||||
* Copyright 1990-2023 by Gerhard Buergmann
|
||||
* gerhard@puon.at
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
|
@ -49,7 +50,7 @@
|
|||
|
||||
#include "bmore.h"
|
||||
|
||||
char *copyright = "GPL (C) 1990-2019 by Gerhard Buergmann";
|
||||
char *copyright = "GPL (C) 1990-2022 by Gerhard Buergmann";
|
||||
|
||||
int maxx, maxy;
|
||||
int mymaxx = 0, mymaxy = 0;
|
||||
|
@ -85,7 +86,7 @@ int prompt = 1;
|
|||
char helppath[MAXCMD];
|
||||
|
||||
static char progname[10];
|
||||
static char cmdbuf[MAXCMD];
|
||||
static char cmdbuf[2 * MAXCMD];
|
||||
static int cnt = 0;
|
||||
static int icnt = 0;
|
||||
static int smode;
|
||||
|
|
26
bmore.h
26
bmore.h
|
@ -11,10 +11,11 @@
|
|||
* 2003-02-20 V 1.3.2
|
||||
* 2010-03-28 V 1.3.4
|
||||
* 2019-01-22 V 1.4.1
|
||||
* 2022-03-07 V 1.4.2
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2019 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
|
||||
|
@ -49,19 +50,22 @@
|
|||
# include "patchlevel.h"
|
||||
# include "config.h"
|
||||
# include <unistd.h>
|
||||
# if HAVE_NCURSES_H
|
||||
# if defined HAVE_NCURSESW_CURSES_H
|
||||
# include <ncursesw/curses.h>
|
||||
# include <ncursesw/term.h>
|
||||
# elif defined HAVE_NCURSESW_H
|
||||
# include <ncursesw.h>
|
||||
# elif defined HAVE_NCURSES_CURSES_H
|
||||
# include <ncurses/curses.h>
|
||||
# elif defined HAVE_NCURSES_H
|
||||
# include <ncurses.h>
|
||||
# else
|
||||
# elif defined HAVE_CURSES_H
|
||||
# include <curses.h>
|
||||
# else
|
||||
# error "SysV or X/Open-compatible Curses header file required"
|
||||
# endif
|
||||
# if HAVE_TERM_H
|
||||
# include <term.h>
|
||||
# else
|
||||
# if HAVE_NCURSES_TERM_H
|
||||
# include <ncurses/term.h>
|
||||
# else
|
||||
# include <term.h>
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
@ -135,12 +139,12 @@ extern int no_tty, no_intty;
|
|||
#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(void);
|
||||
void normal(void), bmbeep(void), home(void), sig(int);
|
||||
void doshell(char *), emsg(char *);
|
||||
void do_next(int);
|
||||
void bmsearch(int);
|
||||
void pushback(int, char *);
|
||||
int open_file(void);
|
||||
int open_file(char *);
|
||||
int printout(int), rdline(int, char *);
|
||||
int nextchar(void), vgetc(void);
|
||||
int sbracket(int, char *, int);
|
||||
|
|
2
bvi.1
2
bvi.1
|
@ -93,7 +93,7 @@
|
|||
.nr % 0
|
||||
.rr F
|
||||
.\}
|
||||
.TH BVI 1 "BVI Version 1.4.1" "30/Jan/2019" "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"
|
||||
|
|
15
bvi.c
15
bvi.c
|
@ -13,10 +13,11 @@
|
|||
* 2013-08-23 V 1.4.0alpha
|
||||
* 2014-10-07 V 1.4.0
|
||||
* 2019-10-12 V 1.4.1
|
||||
* 2023-03-06 V 1.4.2
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2019 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
|
||||
|
@ -33,6 +34,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "bvi.h"
|
||||
#include "set.h"
|
||||
|
@ -42,7 +44,7 @@
|
|||
#endif
|
||||
|
||||
|
||||
char *copyright = "(C) GPL 1996-2019 by Gerhard Buergmann";
|
||||
char *copyright = "(C) GPL 1996-2023 by Gerhard Buergmann";
|
||||
|
||||
jmp_buf env; /* context for `longjmp' function */
|
||||
|
||||
|
@ -145,6 +147,13 @@ main(argc, argv)
|
|||
/* This should be the beginners version */
|
||||
}
|
||||
|
||||
if (isatty(fileno(stdin)) == 0) {
|
||||
// Guckes
|
||||
fprintf(stderr, "Input is not from a terminal\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
while (n < argc) {
|
||||
switch (argv[n][0]) {
|
||||
case '-':
|
||||
|
@ -918,7 +927,7 @@ do_put(loc, n, buf)
|
|||
emsg(nobytes);
|
||||
return;
|
||||
}
|
||||
if (loc > maxpos) {
|
||||
if (loc >= maxpos) {
|
||||
beep();
|
||||
return;
|
||||
}
|
||||
|
|
23
bvi.h
23
bvi.h
|
@ -12,10 +12,11 @@
|
|||
* 2010-08-04 V 1.3.4
|
||||
* 2014-10-01 V 1.4.0
|
||||
* 2019-01-28 V 1.4.1
|
||||
* 2023-03-07 V 1.4.2
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2019 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
|
||||
|
@ -50,11 +51,19 @@
|
|||
#else
|
||||
# include "patchlevel.h"
|
||||
# include "config.h"
|
||||
#if HAVE_NCURSES_H
|
||||
# include <ncurses.h>
|
||||
#else
|
||||
# include <curses.h>
|
||||
#endif
|
||||
#if defined HAVE_NCURSESW_CURSES_H
|
||||
# include <ncursesw/curses.h>
|
||||
#elif defined HAVE_NCURSESW_H
|
||||
# include <ncursesw.h>
|
||||
#elif defined HAVE_NCURSES_CURSES_H
|
||||
# include <ncurses/curses.h>
|
||||
#elif defined HAVE_NCURSES_H
|
||||
# include <ncurses.h>
|
||||
#elif defined HAVE_CURSES_H
|
||||
# include <curses.h>
|
||||
#else
|
||||
# error "SysV or X/Open-compatible Curses header file required"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* defines for filemode */
|
||||
|
@ -215,7 +224,7 @@ extern off_t block_begin, block_end, block_size;
|
|||
void docmdline(char *), do_over(PTR, off_t, PTR), do_put(PTR, off_t, PTR);
|
||||
void jmpproc(int), printline(PTR, int);
|
||||
int addfile(char *);
|
||||
int bregexec(PTR, char *);
|
||||
PTR bregexec(PTR, char *);
|
||||
int chk_comm(int);
|
||||
int doecmd(char *, int);
|
||||
int do_append(off_t, char *), do_logic(int, char *);
|
||||
|
|
7
comm.c
7
comm.c
|
@ -14,10 +14,11 @@
|
|||
* 2010-06-02 V 1.3.4
|
||||
* 2014-01-28 V 1.4.0
|
||||
* 2019-01-27 V 1.4.1
|
||||
* 2023-03-06 V 1.4.2
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2019 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
|
||||
|
@ -87,7 +88,7 @@ extern char **files; /* used for "next" and "rewind" */
|
|||
extern int numfiles, curfile;
|
||||
extern int errno;
|
||||
|
||||
static char oldbuf[CMDSZ]; /** for :!! command **/
|
||||
static char oldbuf[CMDSZ + 3]; /** for :!! command **/
|
||||
|
||||
|
||||
/*
|
||||
|
@ -308,7 +309,7 @@ docmdline(cmdline)
|
|||
else ok = save(c_argv[0], start_addr, end_addr, saveflag);
|
||||
} else {
|
||||
if (c_argc == 0) {
|
||||
save_chk(name, start_addr, end_addr, saveflag);
|
||||
ok = save_chk(name, start_addr, end_addr, saveflag);
|
||||
} else {
|
||||
if (!stat(c_argv[0], &buf)) {
|
||||
if (saveflag == WRITE) {
|
||||
|
|
1209
config.guess
vendored
1209
config.guess
vendored
File diff suppressed because it is too large
Load diff
105
config.h.in
105
config.h.in
|
@ -1,87 +1,144 @@
|
|||
/* config.h.in. Generated automatically from configure.in by autoheader. */
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
/***** begin user configuration section *****/
|
||||
|
||||
#undef HAVE_NCURSES_H
|
||||
|
||||
#undef HAVE_CURSES_H
|
||||
|
||||
#undef HAVE_NCURSESW_CURSES_H
|
||||
|
||||
#undef NO_SYSERRL
|
||||
|
||||
#undef NEED_PUTC_CHAR
|
||||
|
||||
#undef HAVE_NCURSES_TERM_H
|
||||
|
||||
/* Define if you have the <fcntl.h> header file. */
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define if you have the <inttypes.h> header file. */
|
||||
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
||||
#undef HAVE_FSEEKO
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define if you have the `memmove' function. */
|
||||
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
|
||||
to 0 otherwise. */
|
||||
#undef HAVE_MALLOC
|
||||
|
||||
/* Define to 1 if you have the `memmove' function. */
|
||||
#undef HAVE_MEMMOVE
|
||||
|
||||
/* Define if you have the <memory.h> header file. */
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define if you have the <ncurses/term.h> header file. */
|
||||
/* Define to 1 if you have the <ncurses/term.h> header file. */
|
||||
#undef HAVE_NCURSES_TERM_H
|
||||
|
||||
/* Define if you have the <stdint.h> header file. */
|
||||
/* Define to 1 if your system has a GNU libc compatible `realloc' function,
|
||||
and to 0 otherwise. */
|
||||
#undef HAVE_REALLOC
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define if you have the <stdlib.h> header file. */
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define if you have the `strdup' function. */
|
||||
/* Define to 1 if you have the `strdup' function. */
|
||||
#undef HAVE_STRDUP
|
||||
|
||||
/* Define if you have the `strerror' function. */
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
/* Define if you have the <strings.h> header file. */
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define if you have the <string.h> header file. */
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define if you have the `strtol' function. */
|
||||
/* Define to 1 if you have the `strtol' function. */
|
||||
#undef HAVE_STRTOL
|
||||
|
||||
/* Define if you have the <sys/stat.h> header file. */
|
||||
/* Define to 1 if you have the `strtoll' function. */
|
||||
#undef HAVE_STRTOLL
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define if you have the <sys/types.h> header file. */
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define if you have the <termcap.h> header file. */
|
||||
/* Define to 1 if you have the <termcap.h> header file. */
|
||||
#undef HAVE_TERMCAP_H
|
||||
|
||||
/* Define if you have the <termios.h> header file. */
|
||||
/* Define to 1 if you have the <termios.h> header file. */
|
||||
#undef HAVE_TERMIOS_H
|
||||
|
||||
/* Define if you have the <termio.h> header file. */
|
||||
/* Define to 1 if you have the <termio.h> header file. */
|
||||
#undef HAVE_TERMIO_H
|
||||
|
||||
/* Define if you have the <term.h> header file. */
|
||||
/* Define to 1 if you have the <term.h> header file. */
|
||||
#undef HAVE_TERM_H
|
||||
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* The size of a `int', as computed by sizeof. */
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of a `long', as computed by sizeof. */
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of a `void *', as computed by sizeof. */
|
||||
/* The size of `long long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG_LONG
|
||||
|
||||
/* The size of `void *', as computed by sizeof. */
|
||||
#undef SIZEOF_VOID_P
|
||||
|
||||
/* Define if you have the ANSI C header files. */
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||
# define _DARWIN_USE_64_BIT_INODE 1
|
||||
#endif
|
||||
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
#undef _FILE_OFFSET_BITS
|
||||
|
||||
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
|
||||
#undef _LARGEFILE_SOURCE
|
||||
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
#undef _LARGE_FILES
|
||||
|
||||
/* Define to rpl_malloc if the replacement function should be used. */
|
||||
#undef malloc
|
||||
|
||||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
#undef off_t
|
||||
|
||||
/* Define to rpl_realloc if the replacement function should be used. */
|
||||
#undef realloc
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
|
674
config.sub
vendored
674
config.sub
vendored
File diff suppressed because it is too large
Load diff
15
configure.ac
15
configure.ac
|
@ -63,18 +63,23 @@ AC_ARG_WITH(ncurses,
|
|||
])
|
||||
|
||||
AC_CHECK_HEADER([ncurses.h],[
|
||||
AC_SEARCH_LIBS([initscr], [ncurses],[
|
||||
AC_SEARCH_LIBS([initscr], [ncurses], [
|
||||
AC_DEFINE(HAVE_NCURSES_H)
|
||||
AC_SEARCH_LIBS([tputs], [tinfo])], [
|
||||
AC_SEARCH_LIBS([tputs], [tinfo])],[
|
||||
AC_SEARCH_LIBS([initscr], [curses],[
|
||||
AC_DEFINE(HAVE_CURSES_H)
|
||||
AC_SEARCH_LIBS([tputs], [tinfo])],[
|
||||
AC_MSG_ERROR([bvi requires the curses library])])])],[
|
||||
AC_MSG_ERROR([bvi requires a curses library])])])
|
||||
],[
|
||||
AC_CHECK_HEADER([curses.h],[
|
||||
AC_SEARCH_LIBS([initscr], [curses], [
|
||||
AC_DEFINE(HAVE_CURSES_H)],[
|
||||
AC_MSG_ERROR([bvi requires the curses library])])],[
|
||||
AC_MSG_ERROR([bvi requires the curses library])])])
|
||||
AC_MSG_ERROR([bvi requires a curses library])])],[
|
||||
AC_CHECK_HEADER([ncursesw/curses.h], [
|
||||
AC_SEARCH_LIBS([initscr], [ncursesw], [
|
||||
AC_DEFINE(HAVE_NCURSESW_CURSES_H)],[
|
||||
AC_MSG_ERROR([bvi requires a curses library])])],[
|
||||
AC_MSG_ERROR([bvi requires a curses library])])])])
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
dnl AC_TYPE_SIZE_T
|
||||
|
|
24
io.c
24
io.c
|
@ -11,10 +11,11 @@
|
|||
* 2010-06-02 V 1.3.4
|
||||
* 2014-05-03 V 1.4.0
|
||||
* 2019-01-27 V 1.4.1
|
||||
* 2022-03-09 V 1.4.2
|
||||
*
|
||||
* NOTE: Edit this file with tabstop=4 !
|
||||
*
|
||||
* Copyright 1996-2019 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
|
||||
|
@ -55,6 +56,20 @@
|
|||
# include <fcntl.h>
|
||||
#endif
|
||||
|
||||
|
||||
//@ read on linux has a limit of 0x7ffff000 bytes (see `man read`)
|
||||
//@ this function calls recursively read until all `count` characters are read.
|
||||
static ssize_t
|
||||
read_to_end(int fd, void *buf, size_t count) {
|
||||
size_t read_bytes = 0;
|
||||
while(read_bytes < count) {
|
||||
const ssize_t ret = read(fd, ((char*)buf)+read_bytes, count-read_bytes);
|
||||
if(ret <= 0) return ret;
|
||||
read_bytes += ret;
|
||||
}
|
||||
return read_bytes;
|
||||
}
|
||||
|
||||
int filemode;
|
||||
static struct stat buf;
|
||||
static off_t block_read;
|
||||
|
@ -261,7 +276,7 @@ load(fname)
|
|||
sysemsg(fname);
|
||||
filemode = ERROR;
|
||||
} else {
|
||||
if ((filesize = read(fd, mem, block_size)) == 0) {
|
||||
if ((filesize = read_to_end(fd, mem, block_size)) == 0) {
|
||||
sprintf(fname_buf, "\"%s\" Empty file", fname);
|
||||
filemode = ERROR;
|
||||
} else {
|
||||
|
@ -278,7 +293,7 @@ load(fname)
|
|||
}
|
||||
} else if ((filemode == REGULAR) || (filemode == DIRECTORY)) {
|
||||
filesize = buf.st_size;
|
||||
if (read(fd, mem, filesize) != filesize) {
|
||||
if (read_to_end(fd, mem, filesize) != filesize) {
|
||||
sysemsg(fname);
|
||||
filemode = ERROR;
|
||||
}
|
||||
|
@ -478,7 +493,7 @@ addfile(fname)
|
|||
}
|
||||
oldsize = filesize;
|
||||
if (enlarge(buf.st_size)) return 1;
|
||||
if (read(fd, mem + filesize, buf.st_size) == -1) {
|
||||
if (read_to_end(fd, mem + filesize, buf.st_size) == -1) {
|
||||
sysemsg(fname);
|
||||
return 1;
|
||||
}
|
||||
|
@ -488,3 +503,4 @@ addfile(fname)
|
|||
setpage(mem + oldsize);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
59
macro.m4
Normal file
59
macro.m4
Normal file
|
@ -0,0 +1,59 @@
|
|||
AC_CHECK_HEADER
|
||||
(
|
||||
[ncurses.h],
|
||||
[
|
||||
AC_SEARCH_LIBS
|
||||
([initscr], [ncurses],
|
||||
[
|
||||
AC_DEFINE(HAVE_NCURSES_H)
|
||||
AC_SEARCH_LIBS([tputs], [tinfo])
|
||||
],[
|
||||
AC_SEARCH_LIBS
|
||||
(
|
||||
[initscr], [curses],
|
||||
[
|
||||
AC_DEFINE(HAVE_CURSES_H)
|
||||
AC_SEARCH_LIBS([tputs], [tinfo])
|
||||
],[
|
||||
AC_MSG_ERROR([bvi requires a curses library])
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
],[
|
||||
AC_CHECK_HEADER
|
||||
(
|
||||
[curses.h],
|
||||
[
|
||||
AC_SEARCH_LIBS
|
||||
(
|
||||
[initscr], [curses],
|
||||
[
|
||||
AC_DEFINE(HAVE_CURSES_H)
|
||||
],[
|
||||
AC_MSG_ERROR([bvi requires a curses library])
|
||||
]
|
||||
)
|
||||
],[
|
||||
# statt: AC_MSG_ERROR([bvi requires a curses library])
|
||||
AC_CHECK_HEADER
|
||||
(
|
||||
[ncursesw/curses.h],
|
||||
[
|
||||
AC_SEARCH_LIBS
|
||||
(
|
||||
[initscr], [curses],
|
||||
[
|
||||
AC_DEFINE(HAVE_NCURSESW_CURSES_H)
|
||||
],[
|
||||
AC_MSG_ERROR([bvi requires a curses library])
|
||||
]
|
||||
)
|
||||
],[
|
||||
AC_MSG_ERROR([bvi requires a curses library])
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
|
@ -1 +1 @@
|
|||
#define VERSION "1.4.1"
|
||||
#define VERSION "1.4.2"
|
||||
|
|
7
re.c
7
re.c
|
@ -11,8 +11,9 @@
|
|||
* 2010-06-02 V 1.3.4
|
||||
* 2013-08-24 V 1.4.0
|
||||
* 2019-01-28 V 1.4.1
|
||||
* 2023-03-07 V 1.4.2
|
||||
*
|
||||
* Copyright 1996-2019 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
|
||||
|
@ -312,7 +313,7 @@ do_substitution(delim, line, startpos, endpos)
|
|||
refresh();
|
||||
|
||||
if (global) {
|
||||
if ((undo_count = alloc_buf(endpos - startpos, &undo_buf))) {
|
||||
if ((undo_count = alloc_buf((off_t)(endpos - startpos), &undo_buf))) {
|
||||
memcpy(undo_buf, startpos + 1, undo_count);
|
||||
}
|
||||
undo_start = startpos + 1;
|
||||
|
@ -350,7 +351,7 @@ AGAIN:
|
|||
repl_count++;
|
||||
current_start = pagepos + y * Anzahl + xpos();
|
||||
if (!global) {
|
||||
if ((undo_count = alloc_buf(pat_len, &undo_buf))) {
|
||||
if ((undo_count = alloc_buf((off_t)pat_len, &undo_buf))) {
|
||||
memcpy(undo_buf, current_start, undo_count);
|
||||
}
|
||||
undo_start = current_start;
|
||||
|
|
209
test.txt
Normal file
209
test.txt
Normal file
|
@ -0,0 +1,209 @@
|
|||
AAAAAAAAAAAAAAAAAAAAAAA
|
||||
BBBBBBBBBBBBBBBBBBBBBBB
|
||||
CCCCCCCCCCCCCCCCCCCCCCC
|
||||
DDDDDDDDDDDDDDDDDDDDDDD
|
||||
EEEEEEEEEEEEEEEEEEEEEEE
|
||||
FFFFFFFFFFFFFFFFFFFFFFF
|
||||
GGGGGGGGGGGGGGGGGGGGGGG
|
||||
HHHHHHHHHHHHHHHHHHHHHHH
|
||||
IIIIIIIIIIIIIIIIIIIIIII
|
||||
JJJJJJJJJJJJJJJJJJJJJJJ
|
||||
KKKKKKKKKKKKKKKKKKKKKKK
|
||||
LLLLLLLLLLLLLLLLLLLLLLL
|
||||
MMMMMMMMMMMMMMMMMMMMMMM
|
||||
NNNNNNNNNNNNNNNNNNNNNNN
|
||||
OOOOOOOOOOOOOOOOOOOOOOO
|
||||
PPPPPPPPPPPPPPPPPPPPPPP
|
||||
QQQQQQQQQQQQQQQQQQQQQQQ
|
||||
RRRRRRRRRRRRRRRRRRRRRRR
|
||||
SSSSSSSSSSSSSSSSSSSSSSS
|
||||
TTTTTTTTTTTTTTTTTTTTTTT
|
||||
UUUUUUUUUUUUUUUUUUUUUUU
|
||||
VVVVVVVVVVVVVVVVVVVVVVV
|
||||
WWWWWWWWWWWWWWWWWWWWWWW
|
||||
XXXXXXXXXXXXXXXXXXXXXXX
|
||||
YYYYYYYYYYYYYYYYYYYYYYY
|
||||
ZZZZZZZZZZZZZZZZZZZZZZZ
|
||||
aaaaaaaaaaaaaaaaaaaaaaa
|
||||
bbbbbbbbbbbbbbbbbbbbbbb
|
||||
ccccccccccccccccccccccc
|
||||
ddddddddddddddddddddddd
|
||||
eeeeeeeeeeeeeeeeeeeeeee
|
||||
fffffffffffffffffffffff
|
||||
ggggggggggggggggggggggg
|
||||
hhhhhhhhhhhhhhhhhhhhhhh
|
||||
iiiiiiiiiiiiiiiiiiiiiii
|
||||
jjjjjjjjjjjjjjjjjjjjjjj
|
||||
kkkkkkkkkkkkkkkkkkkkkkk
|
||||
lllllllllllllllllllllll
|
||||
mmmmmmmmmmmmmmmmmmmmmmm
|
||||
nnnnnnnnnnnnnnnnnnnnnnn
|
||||
ooooooooooooooooooooooo
|
||||
ppppppppppppppppppppppp
|
||||
qqqqqqqqqqqqqqqqqqqqqqq
|
||||
rrrrrrrrrrrrrrrrrrrrrrr
|
||||
sssssssssssssssssssssss
|
||||
ttttttttttttttttttttttt
|
||||
uuuuuuuuuuuuuuuuuuuuuuu
|
||||
vvvvvvvvvvvvvvvvvvvvvvv
|
||||
wwwwwwwwwwwwwwwwwwwwwww
|
||||
xxxxxxxxxxxxxxxxxxxxxxx
|
||||
AAAAAAAAAAAAAAAAAAAAAAA
|
||||
BBBBBBBBBBBBBBBBBBBBBBB
|
||||
CCCCCCCCCCCCCCCCCCCCCCC
|
||||
DDDDDDDDDDDDDDDDDDDDDDD
|
||||
EEEEEEEEEEEEEEEEEEEEEEE
|
||||
FFFFFFFFFFFFFFFFFFFFFFF
|
||||
GGGGGGGGGGGGGGGGGGGGGGG
|
||||
HHHHHHHHHHHHHHHHHHHHHHH
|
||||
IIIIIIIIIIIIIIIIIIIIIII
|
||||
JJJJJJJJJJJJJJJJJJJJJJJ
|
||||
KKKKKKKKKKKKKKKKKKKKKKK
|
||||
LLLLLLLLLLLLLLLLLLLLLLL
|
||||
MMMMMMMMMMMMMMMMMMMMMMM
|
||||
NNNNNNNNNNNNNNNNNNNNNNN
|
||||
OOOOOOOOOOOOOOOOOOOOOOO
|
||||
PPPPPPPPPPPPPPPPPPPPPPP
|
||||
QQQQQQQQQQQQQQQQQQQQQQQ
|
||||
RRRRRRRRRRRRRRRRRRRRRRR
|
||||
SSSSSSSSSSSSSSSSSSSSSSS
|
||||
TTTTTTTTTTTTTTTTTTTTTTT
|
||||
UUUUUUUUUUUUUUUUUUUUUUU
|
||||
VVVVVVVVVVVVVVVVVVVVVVV
|
||||
WWWWWWWWWWWWWWWWWWWWWWW
|
||||
XXXXXXXXXXXXXXXXXXXXXXX
|
||||
YYYYYYYYYYYYYYYYYYYYYYY
|
||||
ZZZZZZZZZZZZZZZZZZZZZZZ
|
||||
aaaaaaaaaaaaaaaaaaaaaaa
|
||||
bbbbbbbbbbbbbbbbbbbbbbb
|
||||
ccccccccccccccccccccccc
|
||||
ddddddddddddddddddddddd
|
||||
eeeeeeeeeeeeeeeeeeeeeee
|
||||
fffffffffffffffffffffff
|
||||
ggggggggggggggggggggggg
|
||||
hhhhhhhhhhhhhhhhhhhhhhh
|
||||
iiiiiiiiiiiiiiiiiiiiiii
|
||||
jjjjjjjjjjjjjjjjjjjjjjj
|
||||
kkkkkkkkkkkkkkkkkkkkkkk
|
||||
lllllllllllllllllllllll
|
||||
mmmmmmmmmmmmmmmmmmmmmmm
|
||||
nnnnnnnnnnnnnnnnnnnnnnn
|
||||
ooooooooooooooooooooooo
|
||||
ppppppppppppppppppppppp
|
||||
qqqqqqqqqqqqqqqqqqqqqqq
|
||||
rrrrrrrrrrrrrrrrrrrrrrr
|
||||
sssssssssssssssssssssss
|
||||
ttttttttttttttttttttttt
|
||||
uuuuuuuuuuuuuuuuuuuuuuu
|
||||
vvvvvvvvvvvvvvvvvvvvvvv
|
||||
wwwwwwwwwwwwwwwwwwwwwww
|
||||
xxxxxxxxxxxxxxxxxxxxxxx
|
||||
yyyyyyyyyyyyyyyyyyyyyyy
|
||||
zzzzzzzzzzzzzzzzzzzzzzz
|
||||
yyyyyyyyyyyyyyyyyyyyyyy
|
||||
AAAAAAAAAAAAAAAAAAAAAAA
|
||||
BBBBBBBBBBBBBBBBBBBBBBB
|
||||
CCCCCCCCCCCCCCCCCCCCCCC
|
||||
DDDDDDDDDDDDDDDDDDDDDDD
|
||||
EEEEEEEEEEEEEEEEEEEEEEE
|
||||
FFFFFFFFFFFFFFFFFFFFFFF
|
||||
GGGGGGGGGGGGGGGGGGGGGGG
|
||||
HHHHHHHHHHHHHHHHHHHHHHH
|
||||
IIIIIIIIIIIIIIIIIIIIIII
|
||||
JJJJJJJJJJJJJJJJJJJJJJJ
|
||||
KKKKKKKKKKKKKKKKKKKKKKK
|
||||
LLLLLLLLLLLLLLLLLLLLLLL
|
||||
MMMMMMMMMMMMMMMMMMMMMMM
|
||||
NNNNNNNNNNNNNNNNNNNNNNN
|
||||
OOOOOOOOOOOOOOOOOOOOOOO
|
||||
PPPPPPPPPPPPPPPPPPPPPPP
|
||||
QQQQQQQQQQQQQQQQQQQQQQQ
|
||||
RRRRRRRRRRRRRRRRRRRRRRR
|
||||
SSSSSSSSSSSSSSSSSSSSSSS
|
||||
TTTTTTTTTTTTTTTTTTTTTTT
|
||||
UUUUUUUUUUUUUUUUUUUUUUU
|
||||
VVVVVVVVVVVVVVVVVVVVVVV
|
||||
WWWWWWWWWWWWWWWWWWWWWWW
|
||||
XXXXXXXXXXXXXXXXXXXXXXX
|
||||
YYYYYYYYYYYYYYYYYYYYYYY
|
||||
ZZZZZZZZZZZZZZZZZZZZZZZ
|
||||
aaaaaaaaaaaaaaaaaaaaaaa
|
||||
bbbbbbbbbbbbbbbbbbbbbbb
|
||||
ccccccccccccccccccccccc
|
||||
ddddddddddddddddddddddd
|
||||
eeeeeeeeeeeeeeeeeeeeeee
|
||||
fffffffffffffffffffffff
|
||||
ggggggggggggggggggggggg
|
||||
hhhhhhhhhhhhhhhhhhhhhhh
|
||||
iiiiiiiiiiiiiiiiiiiiiii
|
||||
jjjjjjjjjjjjjjjjjjjjjjj
|
||||
kkkkkkkkkkkkkkkkkkkkkkk
|
||||
lllllllllllllllllllllll
|
||||
mmmmmmmmmmmmmmmmmmmmmmm
|
||||
nnnnnnnnnnnnnnnnnnnnnnn
|
||||
ooooooooooooooooooooooo
|
||||
ppppppppppppppppppppppp
|
||||
qqqqqqqqqqqqqqqqqqqqqqq
|
||||
rrrrrrrrrrrrrrrrrrrrrrr
|
||||
sssssssssssssssssssssss
|
||||
ttttttttttttttttttttttt
|
||||
uuuuuuuuuuuuuuuuuuuuuuu
|
||||
vvvvvvvvvvvvvvvvvvvvvvv
|
||||
wwwwwwwwwwwwwwwwwwwwwww
|
||||
xxxxxxxxxxxxxxxxxxxxxxx
|
||||
yyyyyyyyyyyyyyyyyyyyyyy
|
||||
zzzzzzzzzzzzzzzzzzzzzzz
|
||||
zzzzzzzzzzzzzzzzzzzzzzz
|
||||
AAAAAAAAAAAAAAAAAAAAAAA
|
||||
BBBBBBBBBBBBBBBBBBBBBBB
|
||||
CCCCCCCCCCCCCCCCCCCCCCC
|
||||
DDDDDDDDDDDDDDDDDDDDDDD
|
||||
EEEEEEEEEEEEEEEEEEEEEEE
|
||||
FFFFFFFFFFFFFFFFFFFFFFF
|
||||
GGGGGGGGGGGGGGGGGGGGGGG
|
||||
HHHHHHHHHHHHHHHHHHHHHHH
|
||||
IIIIIIIIIIIIIIIIIIIIIII
|
||||
JJJJJJJJJJJJJJJJJJJJJJJ
|
||||
KKKKKKKKKKKKKKKKKKKKKKK
|
||||
LLLLLLLLLLLLLLLLLLLLLLL
|
||||
MMMMMMMMMMMMMMMMMMMMMMM
|
||||
NNNNNNNNNNNNNNNNNNNNNNN
|
||||
OOOOOOOOOOOOOOOOOOOOOOO
|
||||
PPPPPPPPPPPPPPPPPPPPPPP
|
||||
QQQQQQQQQQQQQQQQQQQQQQQ
|
||||
RRRRRRRRRRRRRRRRRRRRRRR
|
||||
SSSSSSSSSSSSSSSSSSSSSSS
|
||||
TTTTTTTTTTTTTTTTTTTTTTT
|
||||
UUUUUUUUUUUUUUUUUUUUUUU
|
||||
VVVVVVVVVVVVVVVVVVVVVVV
|
||||
WWWWWWWWWWWWWWWWWWWWWWW
|
||||
XXXXXXXXXXXXXXXXXXXXXXX
|
||||
YYYYYYYYYYYYYYYYYYYYYYY
|
||||
ZZZZZZZZZZZZZZZZZZZZZZZ
|
||||
aaaaaaaaaaaaaaaaaaaaaaa
|
||||
bbbbbbbbbbbbbbbbbbbbbbb
|
||||
ccccccccccccccccccccccc
|
||||
ddddddddddddddddddddddd
|
||||
eeeeeeeeeeeeeeeeeeeeeee
|
||||
fffffffffffffffffffffff
|
||||
ggggggggggggggggggggggg
|
||||
hhhhhhhhhhhhhhhhhhhhhhh
|
||||
iiiiiiiiiiiiiiiiiiiiiii
|
||||
jjjjjjjjjjjjjjjjjjjjjjj
|
||||
kkkkkkkkkkkkkkkkkkkkkkk
|
||||
lllllllllllllllllllllll
|
||||
mmmmmmmmmmmmmmmmmmmmmmm
|
||||
nnnnnnnnnnnnnnnnnnnnnnn
|
||||
ooooooooooooooooooooooo
|
||||
ppppppppppppppppppppppp
|
||||
qqqqqqqqqqqqqqqqqqqqqqq
|
||||
rrrrrrrrrrrrrrrrrrrrrrr
|
||||
sssssssssssssssssssssss
|
||||
ttttttttttttttttttttttt
|
||||
uuuuuuuuuuuuuuuuuuuuuuu
|
||||
vvvvvvvvvvvvvvvvvvvvvvv
|
||||
wwwwwwwwwwwwwwwwwwwwwww
|
||||
xxxxxxxxxxxxxxxxxxxxxxx
|
||||
yyyyyyyyyyyyyyyyyyyyyyy
|
||||
zzzzzzzzzzzzzzzzzzzzzzz
|
||||
|
15
tmp
15
tmp
|
@ -1,15 +0,0 @@
|
|||
if ((ch > 31) && (ch < 127)) {
|
||||
PRINTF("%c", ch);
|
||||
} else {
|
||||
if (r_flag) {
|
||||
if ((ch & 128) && ((ch > 159) && (ch < 255))) {
|
||||
if (!no_tty) highlight();
|
||||
PRINTF("%c", ch & 127);
|
||||
if (!no_tty) normal();
|
||||
} else {
|
||||
PRINTF(".");
|
||||
}
|
||||
} else {
|
||||
PRINTF(".");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue