[texhax] how to copy a file within eTeX?

Reinhard Kotucha reinhard.kotucha at web.de
Tue Apr 6 12:02:17 CEST 2010


On 5 April 2010 D. R. Evans wrote:

 > In particular I thought that #2 would be essentially trivial (by --
 > horribly -- reading and writing a line at a time), but I don't see
 > how to tell when I've reached the end of the source file. The
 > discussions of \read and descriptions of file I/O don't seem to
 > explain that anywhere.

Hi Doc,
while you are reading a file you have to set \endlinechar=-1, then you
can can find the end of the file with \ifeof.  \read appends an empty
line to the file and unless \endlinechar=-1, \ifeof doesn't recognize
the end of the file.

Example (not tested):

\newread\InputFile
\openin\InputFile=myfile.tex
\endlinechar=-1

\def\recurse{
  \ifeof\InputFile\else
  \read\InputFile to \buffer
  %% do something with \buffer
  \expandafter\recurse\fi}

\recurse

\endlinechar=13
\closein\InputFile

You can also set \endlinechar=-1 directly in front of \read and
restore it immediately after you've read a particular line.

Regards,
  Reinhard

-- 
----------------------------------------------------------------------------
Reinhard Kotucha			              Phone: +49-511-3373112
Marschnerstr. 25
D-30167 Hannover	                      mailto:reinhard.kotucha at web.de
----------------------------------------------------------------------------
Microsoft isn't the answer. Microsoft is the question, and the answer is NO.
----------------------------------------------------------------------------


More information about the texhax mailing list