Dec 162017
HyperText UNIX style VH browser with full Turbo C source.
File VH_JARGO.ZIP from The Programmer’s Corner in
Category C Source Code
HyperText UNIX style VH browser with full Turbo C source.
File Name File Size Zip Size Zip Type
BROWSE.C 33320 9639 deflated
COPYING 17982 6544 deflated
MAKEFILE 1535 811 deflated
READ.ME 7175 3325 deflated
README.AMI 4889 2167 deflated
SCREEN.C 23984 7521 deflated
SCREEN.H 7091 2519 deflated
TURBOMAK 1077 578 deflated
VH.1 7429 3385 deflated
VH.C 32415 9685 deflated
VH.H 3364 1298 deflated

Download File VH_JARGO.ZIP Here

Contents of the READ.ME file

Here it is; the version 1.7 UNIX vh browser code.

This code is currently known to work under SVr3 UNIX and DOS (with the
Borland C compiler).

Expect the following files:

READ.ME--- this one
vh.1--- nroff source for the manual page
vh.lpr--- preformatted version of above for non-UNIX systems
Makefile--- UNIX makefile for the system
TurboMake--- DOS makefile for the system (using Borland C)
vh.c--- display-system-independent primitives
vh.h--- interface file for vh.c
screen.c--- screen and keyboard I/O support
screen.h--- interface file for screen support
browse.c--- command interpreter and curses code
README.AMIGA--- porting notes on the Amiga version.

License terms:
Copyright (C) 1991 by Raymond D. Gardner and Eric S. Raymond

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 Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Authors' note:
Please find the GPL in the file COPYING in this directory.

We don't think programmers should have to choose between poverty
and being driven away from their art because they can't make a living
at it. So we believe in strong intellectual-property rights for
programmers. We are issuing this code under GPL not to join anyone's
crusade against intellectual property, but simply and only to give it
the widest possible free distribution in source.

Notwithstanding any ambiguities in the GPL, it is our intent that portions
of this program, or its entirety, *shall* be freely reusable in commercial
software without bringing the entirety of the software under GPL
restrictions. We intend that you *may* reuse any portion of this code
or any technique abstracted from it in programs that make you money.

We require you to follow GPL terms on redistribution of source
*for those portions of our code that you use*. And we would
appreciate the courtesy of being credited appropriately in your
documentation. But we do not intend our license terms to require you
to disclose *your* inventions, or to in any other way alienate you
from the fair market value of your creative work.

We love writing free software, and the techniques and code contained
in this package are our gift to you. If you choose to make your derived
works free, we support that. If you need to use them to pay bills, we
support that too. Live freedom any way you can.

Porting notes:

The code consists of three modules. The vh.c module contains only
display-independent code, and should be usable without change under
your OS (modulo possible differences in include files). The browse.c
code includes the command interpreter; screen.c supplies curses(3)-like
screen handling with a few enhancements for mice.

The porting work basically consists of implementing screen.c. I have
intentionally kept the curses usage simple; a complete description of
the facilities this program uses is included in the screen.c header.

I have done my best to make the porting process as cut and dried as possible.
This does not mean I consider the functional design of browse.c graven in
stone; if you think it needs improving, propose away. But there
will be very definite advantages to keeping the screen- and
mouse-handling mechanics separate from the main command interpreter;
it should be possible using this organization to get a full-featured
and *uniform* interface on all the target machines.

The only part that's even moderately tricky is the mouse-handling
code, which is based around an event loop in egetch() that polls for
keystrokes or mouse events.

Here are some of the configuration #defines now present:

Either 1 or 2; if 1, vh.c assumes the OS uses \n as a line terminator,
if 2, it assumes \r\n. The UNIX #define forces CRLFSIZE to 1,
otherwise 2 is assumed.

Enables the MSDOS curses(3) lookalike code in screen.c. If MSDOS
is *not* defined, some emulations of Borland library functions are
compiled in vh.c. Used in vh.c and screen.c.

Compiles some UNIX-dependent terminal-driver bashing into browse.c.

Compiles code that tries to enable your interrupt character on
System V machines, in browse.c only.

Tries to cope with the less capable BSD curses(3). Warning: this
code is based on patches for an older version, and may not be
complete! Please email any fixes you find necessary. {IWBNI} we had
support for at least one other attribute besides A_REVERSE so that all
possible references on the current screen are highlighted (with AT&T
curses we use A_BRIGHT).

This code came in at the 11th hour. It supposedly enabled the
jargon browser to run on the Amiga, but hasn't been tested against vh.
See README.AMIGA for details. Direct queries to Georg Sassen

if this is on, screen.c steals the last column to create an
on-screen scrollbar. Note that this is implemented by decrementing
COLS; if you brew your own curses(3) replacement, you must make sure
this does not result in that last column's failing to get refreshed!

The POPUP #define disables the code that steals the bottom row of the
screen for use as a prompt and text-entry line. If you define this,
the code will expect to be able to call a get_dialogue() function that
takes a prompt argument and returns a text string. A get_dialogue()
implementation is provided for curses(3).
Note: if POPUP is on, the -i option won't work. Sorry about that!

Two other #defines, MOUSE and ATTMOUSE, control the compilation of
mouse-handling code. The mouse on the AT&T 6386WGS is fully
supported. If you have a /usr/include/sys/mouse.h that includes the
following lines

struct mouseinfo {
unsigned charstatus;
charxmotion, ymotion;

/* Ioctl definitions */
#define MOUSEIOC ('M'<<8)

then the ATTMOUSE code will probably work for you unaltered. If your
mouse driver interface looks anything like this, enablng the device
should be quite easy. The MOUSE code provides most of the interfacing;
all you have to write is the poll-and-decode loop in egetch().

Porting to windows environments:

If you are porting to a windows environment, you may wish to turn off
SCROLLBAR and turn on POPUP and embed the text window in some kind of
text widget or toolkit object, and have the mouse click events
interpreted in the egetch() loop. You'll alse have to write your own
get_dialogue() and message() functions; see browse.c for models.

Have fun!
Eric Raymond = [email protected] (UNIX)
Ray Gardner = FidoNet 1:104/89.2 (DOS)

 December 16, 2017  Add comments

Leave a Reply