Subject: Cygwin DLL upgrade to 1.3.1 breaks Lout
From: "Mark Hadfield" <[email-masked]>
To: "Cygwin Mailing List" <[email-masked]>, "Lout Mailing List" <[email-masked]>
Date: Thu, 17 May 2001 10:34:43 +1200

Hello all

AFAIK this is the first message that has ever been sent to the Cygwin and
Lout mailing lists simultaneously!

I have just spent several more-or-less fruitless hours trying to solve a
problem with Lout (http://snark.ptc.spbu.ru/~uwe/lout/lout.html) and Cygwin
(http://sources.redhat.com/cygwin/). I don't have the time or expertise to
take it further at the moment but I thought I would summarise it for
posterity, either to save someone else the trouble of retracing my steps or
in case someone else can diagnose or solve the problem. (But, hey guys,
don't spend too much time on it!)

Last October I built Lout version 3.23 on my NT machine with Cygwin's gcc.
The Cygwin installation was up-to-date at the time so I guess it would have
been using DLL version 1.1.4. The building process was uneventful; I
selected the makefile's OS_UNIX switch to ensure that the Unix-like version
of Lout's code was compiled. I used Lout quite a lot for a specific project
then put it aside for a while. In the meantime I upgraded to a new Windows
2000 PC and moved all the Lout binary and library files over. I have
continued to keep my Cygwin installation up-to-date, so I now have 1.3.1.

A few days ago I needed to use Lout again but every attempt to run it on a
document resulted in an error message like this:

lout file "/usr/local/lib/lout/data/fontdefs.ld" (from "test.lout" line 46):
  787,16: fatal error: too many kerning pairs in font file
/usr/local/lib/lout/font/Ti-Rm (line 584)

When I took this to the Lout list, Jeff Kingston, the Lout BDFL(*), said
that he had never seen this problem before.

Given the changes in my system, I thought it prudent to rebuild Lout, which
I did using 3.24, the current version. Same problem.

I have looked carefully at the files mentioned in the error message, and I
am sure there is nothing wrong with them. The line-endings are Unix-style,
as they should be. The directory in question is mounted binmode (as are all
the mounts on my system). If I change the C code to get past the above
error, I get another fatal error shortly after. I suspect these errors are
something of a red herring in that they are symptoms of a deeper problem
to do with reading the files.

I wiped the latest build and restored the lout 3.23 libraries and
executable from last October. I also hunted down an old copy of cygwin1.dll,
version 1.1.7. I then ran lout 3.23 against this DLL and against my current
one in turn. (I ran lout.exe from the Windows command prompt to ensure that
it loaded a fresh copy of the DLL). The result: lout works when calling
version 1.1.7 of the Cygwin DLL, but gives the error message above when
calling version 1.3.1.

So I guess the problem must result from a change in the way the Cygwin DLL
handles file open, read and seek operations, between versions 1.1. and
1.3.1. I will look a little further into this when I get an opportunity. I
might try fiddling with Lout's modes for opening files. In the meantime,
suggestions are welcome, of course, but like I said, don't spend too much
time on it :)

BTW, my message of a couple of days ago to the Lout list mentioned problems
in executing "lout -x". This was wrong and resulted from my forgetting about
how "lout -x" works. This command is in fact executed by make during the
install operation and works fine.
---
Mark Hadfield
[email-masked]  http://katipo.niwa.cri.nz/~hadfield
National Institute for Water and Atmospheric Research

(*) BDFL = Benevolent Dictator for Life

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple