[cstex] test na prázdný soubor?

Petr Olsak petr at olsak.net
Thu Aug 27 13:35:09 CEST 2009



On Thu, 27 Aug 2009, Petr Sojka wrote:

> On Wed, Aug 26, 2009 at 11:30:41PM +0200, Petr Tomasek wrote:
> Dobrý den!
>
>> Lze, prosím, v plainu nějak snadno otestovat, zda-li daný soubor není
>> prázdný? Tj. jde mi o rozlišení mezi souborem s nulovou délkou
>> a souborem s nějakým obsahem.
>>
>> Soubor nejpre testuji pomocí \ifeof zda-li vůbec existuje a potom
>> vnořím krz \include. Ovšem potřeboval bych připojit po vnoření
>> souboru "\par", ale pouze, pokud soubor není prázdný.
>>
>> Napadlo mě použít \read a poté nějak otestovat, zda-li je načtená
>> řádka prázdná. Ovšem to mi nechce fungovat, zkusil jsem toto (jako test):
>>
>> \def\t#1{%
>> \immediate\openin\fin=#1
>> \ifeof\fin
>>   [#1: FILE NOT FOUND]\par
>> \else
>>  \immediate\read\fin to\fetchoneline
>>  \ifx\fetchoneline\empty
>>    [#1: FILE EMPTY]\par
>>  \else
>>   [#1] \fetchoneline\par
>>  \fi
>> \fi
>> \immediate\closein\fin
>> }
>>
>> Zdá se, že \read i v případě prázdného souboru do \fetchoneline
>> něco dá.
> Ano, da. Po vypsani toho, co tam TeX da (pres \message) bych
> Vase makro upravil takto:
>
> \def\emptyfile{\par }
> \def\t#1{%
> \immediate\openin\fin=#1
> \ifeof\fin
>  [#1: FILE NOT FOUND]\par
> \else
> \immediate\read\fin to\fetchoneline
> \ifx\fetchoneline\emptyfile
>   [#1: FILE EMPTY]\par
> \else
>  [#1] \fetchoneline\par
> \fi
> \fi
> \immediate\closein\fin
> }
>
> S pozdravem
> Petr Sojka

Uvedeny navrh makra nebude fungovat v pripade, ze je prvni radek souboru 
prazdny ale na dalsich radcich neco je. Napise to: FILE EMPTY, coz neni 
pravda. Problem muzete resit pridanim vnoreneho \ifeof\fin..\else..\fi.
Pak bude makro temer dokonale. Jen nebude umet rozlisit mezi prazdnym 
souborem a souborem obsahujicim jen libovolne mnozstvi mezer a tabelatoru.
I to muzete doresit prechodnym prenastavenim \catcode, pak bude snad makro 
pracovat podle zadani spolehlive.

Co si o tom kdo pomysli necham na kazdem z vas.

Zdravim

Petr Olsak


More information about the csTeX mailing list