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 >> >> >> >