Building Spiff
SeaSoft Systems
seasoft at west.net
Thu Jul 15 08:54:08 PDT 2004
I am trying to get a nifty "diff"-type utility to run under 10.2.8
using the bash shell.
(As a point of general interest, this utility is similar to diff,
except it compares numerical tokens found in each line of the
compared files and will not report a "difference" if all the tokens
in the line match to within a specified floating point tolerance;
very slick for comparing the output of large numerical tables that
differ only in numerically inconsequential ways, like the difference
between [.001 and 0.001] or between [1.0001 and 1.0].)
I am almost there:
1. Tracked down the source package from the Darwin Open Systems site,
unzipped and untarred. (It isn't available on fink)
2. Made what appear to be reasonable MAKEFILE adjustments (more below)
3. Made minor tweaks to correct for a couple of compile/link keyword
conflict problems that developed.
4. Finally got "make" to run to completion and produce a spiff
executable that actually seems to work, sort of.
The problem:
After executing spiff (and getting quite reasonably formatted spiff
output in the terminal window), the terminal attributes of my shell
window are hosed (Examples: (1) I can't see what I am typing to the
CLI; (2) the output stream to shell commands forgets the meaning of
"carriage return", producing staggered output like the following
response in to "ls" (note the post-command bash prompt $ does not
even end up in the leftmost window position.)
============================================================================
$ COPYRIGHT comment.h float.h miller.o
parse.o tol.c
Makefile comment.o float.o
misc.c spiff tol.h
.
.
similar stuff snipped out here
.
.
command.c
exact.h token.c
command.o flagdefs.h miller.c parse.c token.h
comment.c float.c miller.h parse.h
token.o
$
============================================================================
The terminal-relevant configuration portions of the MAKEFILE are
pretty simple, but I have tried all four terminal alternatives (item
(2) of the makefile configuration below) and the two that produce
spiff executables (2a and 2c) both have the barfing terminal
syndrome. I can work-around the problem with a terminal reset after
each spiff invocation, but this is kind of inelegant.
I am admittedly way over my head here, and very happy to have gotten
this far, but does anyone have any suggestions for fixing this final
cosmetic glitch? In particular, how do I find out whether I am "using
terminfo" or "using termcap" or whatever?
Thanks for any guidance,
Richard
============================================================================
Makefile configuration section
============================================================================
#
# choose one from each of 1) 2) and 3) below
#
#
# 1) SELECTION OF OPERATING SYSTEM VARIETY
# choose a) b) or c)
#
# a) for BSD derivitives, enable the following line
OSFLAG=
# b) for XENIX systems, enable the following line
#OSFLAG=-DXENIX
# b) for other A.T.&T. UNIX derivitives, enable the following line
#OSFLAG=-DATT
#
# 2) SELECTION OF TERMINAL CONTROL LIBRARY
# choose either of a) b) or c)
#
# a) if you use termcap, enable the following lines
#TFLAG=-DM_TERMCAP
#TLIB=termcap
# b) if you are using terminfo on a XENIX machine, enable the following lines
#TFLAG=-DM_TERMINFO
#TLIB=tinfo
# c) if you use terminfo on any other type of machine,
# enable the following lines
TFLAG=-DM_TERMINFO
TLIB=curses
# d) NONE OF THE ABOVE
#CTFLAG=
#TLIB=m # just a link to mathlib; quick hack to avoid fixing Makefile
#
# 3) SELECTION OF WINDOW MANAGER AVAILABILITY
#
# if you have the Bellcore's MGR window manager, enable the following lines
#VISFLAG=-DMGR
#VISLIB=/usr/public/pkg/mgr/lib/libmgr.a
#MGRINCDIR=-I/usr/public/pkg/mgr/include
#MGRINCS=$(MGRINC)/dump.h $(MGRINC)/term.h $(MGRINC)/restart.h
$(MGRINC)/window.h
#
# END OF LOCAL CONFIGRATION INFORMATION, the rest of this
# file may be modified only at great risk
# -- caveat hackor
More information about the X-Unix
mailing list