home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
vile-src.zip
/
vile-8.1
/
perl
/
tailf.pl
< prev
next >
Wrap
Text File
|
1998-04-20
|
808b
|
43 lines
use FileHandle;
sub tailf {
my ($fname) = @_;
my $vbuf;
my $fh = new FileHandle;
open $fh, "tail -f $fname |" or die "Can't open $fname";
$vbuf = Vile::Buffer->new();
Vile->current_buffer($vbuf);
$vbuf->buffername($fname);
Vile::watchfd(
fileno($fh),
'read',
sub {
my $buf = ' ' x 4096;
my @olddot = $vbuf->dot;
my $lastlnum;
# Fetch data from input stream
sysread $fh, $buf, 4096;
# Set Position to end of buffer and retrieve this line number
$lastlnum = $vbuf->dot('$$');
# Write data to the editor's buffer
print $vbuf $buf;
# Reset old position of dot if not near end of buffer
if ($olddot[0] < $lastlnum - 1) {
$vbuf->dot(@olddot);
}
# Update the screen
Vile::update();
}
);
}
1;