BLOCKSIZE = 1024 (or so) lines = 0 ; lines_wanted = 10 seek to end of file while lines < lines_wanted seek back BLOCKSIZE bytes read block into buffer pos = end of buffer while pos > 0 use rindex to find \n starting at pos if found lines++ pos = index of \n else last