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