in src/main/java/org/apache/sling/commons/log/logback/internal/Tailer.java [71:110]
private long getTailStartPos(RandomAccessFile file, int n) throws IOException {
int newlineCount = 0;
long length = file.length();
long pos = length - BUFFER_SIZE;
int buffLength = BUFFER_SIZE;
if (pos < 0) {
pos = 0;
buffLength = (int)length;
}
while (true) {
file.seek(pos);
file.readFully(buffer, 0, buffLength);
for (int i = buffLength - 1; i >= 0; i--) {
if ((char) buffer[i] == '\n') {
newlineCount++;
if (newlineCount >= n) {
pos += (i + 1);
return pos;
}
}
}
if (pos == 0) {
break;
}
if (pos - BUFFER_SIZE < 0) {
buffLength = (int)pos;
pos = 0;
} else {
pos -= BUFFER_SIZE;
}
}
return pos;
}