Comments on FilePro installation and Linux xterm (mis)handling.

Bill Campbell bill at celestial.com
Thu Mar 18 21:36:55 PDT 2010


I have been preparing to help move several FilePro systems from
SCO OpenServer to Linux, so installed FP 5.6.0 on one of our
CentOS 5 machines here to get myself back up to speed on this
after several years of being away from direct FilePro usage.

I have to say that I am singularly unimpressed with the
installation procedure which seems hardly changed from the days
when John Esak was the Small Computer Company in D.C. over 20
years ago.  The terminal handling for the standard Linux xterm,
which used to work, doesn't display the borders properly, sending
incorrect codes to the screen, not what is in the pf/termcap.

Here are my first impressions during the install (first as it's
been long enough since I last did this that I had to figure it
out again when starting from a tarball).

There is no README or INSTALL file in the base directory with
instructions on how to install the software.  I had to poke
around in the top level directory to figure out what to do.

The name of the installation script, finish, is dumb.  This
should be install.sh or something obvious.  True enough the the
FilePro install has, to the best of my recollection, used this
same name forever, but at least have a README to say so.

The installation script appears to look for the less pager, but
should honor the PAGER environment variable instead of using
``pg'' or whatever.

The installation script ignores the user's PATH environment
variable, complaining the the specified location for the ``pf''
startup script isn't in the PATH although it definately is.

There should be some obvious way to specify the license file at
the time of the installation.

The installation and pf scripts should return the display to the
original settings, not leave it in black background with white
foreground.  I think this has been covered ad nauseum on this
list, and I would think by this time it should be fixed.

The TERMCAP handling is horrible with garbage line drawing
graphics.  This is fundamentally broken, sending ESC[46m, a bunch
of non-ascii character, then ESC[10m instead of the proper codes
for graphics, ESC[0mlqqqqqqqqq...qqkESC(B for the top border
(these taken from the output of the ``script'' command running
``pf'' and a python curses application with a similar border).  I
can't figure out where the ESC[46m comes from as it's not in
either the pf/termcap or /etc/termcap files.

I checked the runmenu program with ldd to be sure that the
problems are not related to shared library differences.

I am attaching a comparison of the pf/termcap, /etc/termcap, and
our local termcap file which we normally put in the TERMCAP
environment variable.  I have ignored the terminal initialization
string, ``is'' to keep the column width down, but they are the
same on pf/termcap and ours.  The left column is the termcap
code, the second the pf/termcap, the third is /etc/termcap from
the CentOS 5 system, and the fourth the one we have been using
for over a decade.

Finally, the FilePro program ignores the COLUMNS and LINES
environment variables so don't adjust the display size to resized
xterm windows.

In summary, there are several things that could/should be done to
the installation script to (a) make them easier to understand for
the average person, and (b) recognize user defined environment
variables, (particularly PAGER and PATH).  The termcap handling
appears to be getting its information for the line-drawing
characters someplace other than the termcap file.

The TERMCAP environment variable set in the pf startup script
should refer to the installer's prefered termcap, with perhaps a
second environment variable to point to the pf/termcap file.  Any
termcap customization should be done, not by editing the
/etc/termcap file, but in a separate file that won't be changed
by the vendor's update procedures with the TERMCAP environment
variable referring to the customized file.  FilePro used to do
this, first using /etc/termcap or the TERMCAP file, then adding
the definitions from the pf/termcap file (mostly HELP labels for
FilePro's special function keys).

I think a major reason for this two-step processing was the 1024
character limit on termcap entries.

Bill
-- 
INTERNET:   bill at celestial.com  Bill Campbell; Celestial Software LLC
URL: http://www.celestial.com/  PO Box 820; 6641 E. Mercer Way
Voice:          (206) 236-1676  Mercer Island, WA 98040-0820
Fax:            (206) 232-9186  Skype: jwccsllc (206) 855-5792

A perpetual and unlimited debt represents deficit spending as a social
principle. It means a progressive redistribution of wealth by will of
government until there is no more fat to divide; after that comes a level
rationing of the national income. It means in the end the cheapening
of money and then inflation, whereby the middle class is economically
murdered in its sleep. In the arsenal of revolution the perfect weapon
is inflation. -- Garet Garrett, The Revolution Was
-------------- next part --------------
term = xterm
CD pf/termcap   /tmp/centos    /csoft/etc/termcap Description
ae ^O           \E(B           ^O                 end alternate character set
al \E[L         \E[L           \E[L               add (insert) blank line
AL \E[%dL       \E[%dL         \E[%dL             Multiplan sent by ALTERNATE Key
am True         True           True               automatic margins
as ^N           \E(0           ^N                 start alternate character set
bc \E[1D        None           \E[1D              backspace if not ^H
bl None         ^G             None               bell
bs None         True           None               ^h does backspace
bt None         \E[Z           None               back tab
cd \E[J         \E[J           \E[J               clear to end of display
ce \E[K         \E[K           \E[K               clear to end of line
ch None         \E[%i%dG       None               like cm but horizontal motion only
cl \E[H\E[2J    \E[H\E[2J      \E[H\E[2J          clear screen
cm \E[%i%d;%dH  \E[%i%d;%dH    \E[%i%d;%dH        cursor motion
co 80           80             80                 number of columns in a line
cr None         ^M             None               carriage return
cs \E[%i%d;%dr  \E[%i%d;%dr    \E[%i%d;%dr        change scrolling region (vt100)
ct \E[3g        \E[3g          \E[3g              clear tabs
cv None         \E[%i%dd       None               like ch but vertical only
dc \E[P         \E[P           \E[P               delete character
dl \E[M         \E[M           \E[M               delete line
DL \E[%dM       \E[%dM         \E[%dM             Multiplan sent by DELETE key
do None         ^J             None               down one line
ec None         \E[%dX         None               erase character
ei None         \E[4l          None               end insert mode
EN None         None           \E[7~              Xenix Sent by END Key
G1 None         None           k                  Xenix Upper-Right Corner Character
G2 None         None           l                  Xenix Upper-Left Corner Character
G3 None         None           m                  Xenix Lower-Left Corner Character
G4 None         None           j                  Xenix Lower-Right Corner Character
GC None         None           n                  Xenix Center Graphics (+) Character
GD None         None           w                  Xenix Down Tick Character
ge m            None           None               UNIFY Lower left square corner
GE None         None           \E(B               Xenix Graphics Mode End
gf l            None           None               UNIFY Upper left square corner
gg k            None           None               UNIFY Upper right square corner
gh j            None           None               UNIFY Lower right square corner
GH None         None           q                  Xenix Horizontal bar Character
gi n            None           None               UNIFY + intersection
gj x            None           None               UNIFY vertical bar
gk q            None           None               UNIFY Horizontal bar
gl u            None           None               UNIFY --| intersection
GL None         None           u                  Xenix Left Tick Character
gm t            None           None               UNIFY |-- intersection
gn w            None           None               generic line type (eg, dialup)
gn w            None           None               UNIFY T intersection
go v            None           None               UNIFY _|_ intersection
GR None         None           t                  Xenix Right Tick Character
gs \E(0         None           None               UNIFY start graphics mode
GS None         None           \E(0               Xenix Graphics Mode Start
GU None         None           v                  Xenix Up-Tick Character
GV None         None           x                  Xenix Vertical Bar Character
gx \E(B         None           None               UNIFY exit graphics mode
ho \E[H         \E[H           \E[H               home cursor (if not cm)
ic \E[@         None           \E[@               insert character
im None         \E[4h          None               insert mode (enter)
it None         8              None               initial tabs every n spaces
k0 \EOP         None           \E[21~             sent by other function key 0
k1 \EOQ         None           \E[11~             sent by other function key 1
k2 \EOR         None           \E[12~             sent by other function key 2
k3 \EOS         None           \E[13~             sent by other function key 3
k4 \E[15~       None           \E[14~             sent by other function key 4
k5 \E[17~       None           \E[15~             sent by other function key 5
k6 \E[18~       None           \E[17~             sent by other function key 6
k7 \E[19~       None           \E[18~             sent by other function key 7
k8 \E[20~       None           \E[19~             sent by other function key 8
k9 \E[21~       None           \E[20~             sent by other function key 9
kb \b           \177           \b                 sent by backspace key
kB None         \E[Z           None               sent by reverse-tab key
kD None         \E[3~          None               sent by delete-character key
ku \E[A         \EOA           \E[A               sent by terminal up arrow key
kd \E[B         \EOB           \E[B               sent by terminal down arrow key
kl \E[D         \EOD           \E[D               sent by terminal left arrow key
kr \E[C         \EOC           \E[C               sent by terminal right arrow key
ke None         \E[?1l\E>      None               out of keypad-transmit mode
kF None         \E[1;2B        None               sent by scroll-forward/down key
kh None         \EOH           \E[8~              sent by home key
kI None         \E[2~          None               sent by ins-char/enter-ins-mode key
km True         True           True               has meta-shift key
kN None         \E[6~          None               sent by next-page key
kP None         \E[5~          None               sent by previous-page key
kR None         \E[1;2A        None               sent by scroll-backward/up key
ks None         \E[?1h\E=      None               put terminl in keypad-transmit mode
le None         ^H             None               cursor left
LE \E[%dD       \E[%dD         \E[%dD             FILEPRO-16 dprt Display Print Codes
li 24           24             24                 number of lines on screen or page
mb None         \E[5m          None               enter blink enhance
md None         \E[1m          None               enter bold mode
me None         \E[0m          None               exit attribute mode (normal mode)
mi True         True           True               safe to move while in insert mode
mk None         \E[8m          None               enter blank enhance
ml None         \El            None               memory lock on above cursor
mr None         \E[7m          None               enter reverse enhance
ms True         True           True               safe to move while in so & ul mode
mu None         \Em            None               memory unlock (turnoff memory lock)
nd \E[C         \E[C           \E[C               nondestructive space (cursor right)
P0 \E[2~        None           None               FILEPRO-16 insc Insert Character
P1 ^?           None           None               FILEPRO-16 delc Delete Character
P2 \E[7~        None           None               FILEPRO-16 insl Insert Line
P3 \E[P         None           None               FILEPRO-16 dell Delete Line
P4 \E[6~        None           None               FILEPRO-16 save record [ESC] [ESC]
PD None         None           \E[6~              Multiplan sent by PAGE DOWN key
pf None         \E[4i          None               turn off the printer
po None         \E[5i          None               turn on the printer
ps None         \E[i           None               UNIFY Start Protect, print screen
pt True         None           True               has hardware tabs
PU None         None           \E[5~              Multiplan sent by PAGE UP key
rc \E8          \E8            \E8                restore cursor to positn of last sc
SA None         \E[?7h         None               Printer, Standard 10 Pitch
sc \E7          \E7            \E7                save cursor position
se \E[m         \E[27m         \E[m               end stand out mode
sf None         ^J             None               scroll forwards
so \E[7m        \E[7m          \E[7m              begin stand out mode
sr \EM          \EM            \EM                scroll reverse (backwards)
st \EH          \EH            \EH                set a tab in current column
ta None         ^I             None               tab
tc None         xterm-new      None               goto terminal - must be last
te None         \E[?1049l      \E[2J\E[?47l\E8    string to end programs that use cm
ti None         \E[?1049h      \E7\E[?47h         string to begin progs that use cm
ue \E[m         \E[24m         \E[m               end underscore mode
UP \E[%dA       \E[%dA         \E[%dA             Sent by Up-Arrow (alt to ku)
up \E[A         \E[A           \E[A               upline (cursor up)
us \E[4m        \E[4m          \E[4m              start underscore mode
vb None         \E[?5h\E[?5l   None               visible bell (may not move cursor)
ve None         \E[?12l\E[?25h None               sequence to end open/visual mode
vi None         \E[?25l        None               put terminal in visual mode
vs None         \E[?12;25h     None               sequence to start open/visual mode
xn True         True           True               newline ignord after wrap (Concept)


More information about the Filepro-list mailing list