$cursize += length($line);
$current_offset += length($line);
+
chomp($line);
$line =~ s/\r//;
$nlines++;
$chunks[0] = $saved_last_line{current_pos};
$i = $saved_last_line{current_pos};
}
+ my ($lfile, $null) = &get_log_file($logf); # Get file handle to the file
while ($i < $queue_size) {
push(@chunks, int(($totalsize/$queue_size) * $i));
+ my $pos = int(($totalsize/$queue_size) * $i);
+ my $safe_pos = $pos;
+ # Goto the position of that chunk and rewind to the begining of the line
+ # Do not rewind more than 1OK to prevent infinite loop.
+ my $line = '';
+ my @matches = ();
+ do {
+ $lfile->seek($pos, 0);
+ $line = <$lfile>;
+ @matches = ($line =~ $compiled_prefix);
+ $pos-- if (@matches < 0);
+ } while ((@matches < 0) && ($pos > ($safe_pos - 10000)));
+ # Get EOL position
+ push(@chunks, $pos);
$i++;
}
+ $lfile->close();
push(@chunks, $totalsize);
return @chunks;