static void tailFile(final File file, final int interval, fO onData) { thread { long l = l(file); repeat with sleep interval { long l2 = l(file); if (l2 < l) l = 0; if (l2 != l) pcall { S text = null; pcall { text = loadTextFilePart(file, l, l2); } if (nempty(text)) callF(onData, text); l2 = l; } } } }