srecord noeq FollowTickerFile(File tickerFile) is AutoCloseable { settable int historyEntriesToGrab; // internal, may change TailFile tailFile; event historicLine(S line); event liveLine(S line); void start { long fileSize = l(tickerFile); long start = max(0, fileSize-maxLineLengthForTickerEntry*historyEntriesToGrab); S text = loadTextFilePart(tickerFile, start, fileSize); LS lastTickerLines = takeLast(historyEntriesToGrab(lines(text))); for (line : lastTickerLines) historicLine(line); tailFile = tailFileLinewiseFromPosition(tickerFile, 250, fileSize, l0 liveLine); } close { dispose tailFile; } }