I do not know which OS you are on.

But I have solved a similar problem by calling tail -5 through OSProcess on
Linux for a quick fix.

tac file can also help to read a file in reverse.

Phil

On Mon, Nov 17, 2014 at 10:20 AM, José Comesaña <jose.comes...@gmail.com>
wrote:

> Thank you Sven.
>
> I an trying to read a veeeery long log file, and extract the last 5
> messages for the user to see them. Reading the whole file from the
> beginning is too expensive. So maybe I could try reading backwards from the
> end using binary mode and look for a lf... I have to think about it a
> little bit, and study your proposal, of course.
>
>
>
>
>
> 2014-11-17 9:26 GMT+01:00 Sven Van Caekenberghe <s...@stfx.eu>:
>
>> Hi José,
>>
>> > On 17 Nov 2014, at 02:06, José Comesaña <jose.comes...@gmail.com>
>> wrote:
>> >
>> > There is an annoying error in MultiByteFileStream, reading back when
>> you have a unicode character. It is also the cause of some FileOut errors.
>> Your can reproduce it this way:
>> >
>> > testString := 'abcdé'.
>> > filename := 'test.txt'.
>> > filename asFileReference ensureDelete.
>> > filename asFileReference
>> >               writeStreamDo: [ :stream |
>> >                       stream
>> >                               nextPutAll: testString ].
>> >
>> > f := 'test.txt' asFileReference readStream.
>> >
>> > f setToEnd.
>> >
>> > f skip: -1.
>> >
>> > f peek.
>> >
>> >
>> > Any ideas how to solve it? Avoiding reading back is not an option ;).
>> Maybe making skip to go back one more byte to check if there is a unicode
>> character around?.
>> >
>> > Thanks a lot.
>>
>> This is a known problem/issue/limitation of MultiByteFileStream and the
>> TextConverters.
>>
>> The more modern/logical ZnCharacterEncoders can do this reliably
>> (provided the underlying stream can itself move backwards and the current
>> position is between whole characters).
>>
>> 'test.txt' asFileReference readStreamDo: [ :in |
>>   in binary; setToEnd.
>>   ZnUTF8Encoder new backOnStream: in; nextFromStream: in ]
>>
>> IMHO, the ability to move backwards and to play with positions without
>> restrictions on streams only makes sense with in-memory streams, not with
>> file or network streams. It plays badly with buffering too.
>>
>> I know this doesn't solve your issue but I hope it gives you a better
>> idea of the situation.
>>
>> Where exactly do you have this issue ?
>>
>> Sven
>>
>>
>>
>

Reply via email to