sbool tailFile_verbose; // raise flag to stop static Flag tailFile(final File file, final int interval, fO onData) { final new Flag flag; thread "Tail File" { long l = 0; repeat with ms sleep interval { if (flag.isUp()) break; long l2 = l(file); if (tailFile_verbose) print("tailFile: l=" + l + ", l2=" + l2); if (l2 < l) l = 0; if (l2 != l) pcall { S text = null; pcall { text = loadTextFilePart(file, l, l2); } if (nempty(text)) callF(onData, text); l = l2; } } } ret flag; }