minisync/s.pl

40 lines
1.0 KiB
Perl
Raw Normal View History

2010-09-27 13:40:21 +02:00
#!/usr/bin/env perl
2010-09-27 16:33:31 +02:00
use strict;
2010-09-30 16:12:00 +02:00
use POSIX qw(strftime);
2010-09-27 16:33:31 +02:00
$|++;
sub mj {
%_ = @_;
'{ts:"'.strftime( '%Y-%m-%d %H:%M:%S', localtime).'", proc:"s", '.join( ', ', map "$_:\"$_{$_}\"", keys%_)."}\n";
}
sub readg {
my $data = '';
while( length( $data) < $_[0]) {
read( STDIN, $data, $_[0]-length($data), length($data)) or return(0);
}
$data;
2010-09-30 16:12:00 +02:00
}
2010-09-27 16:33:31 +02:00
my$dir = shift @ARGV;
$dir =~ /^(\/.*)\/([^\/]+)$/ or die( mj( error=>'invalid_path_expression', message=>'Path-Expression is invalid.'));
2010-09-27 16:33:31 +02:00
($dir, my$fexpr) = ($1, $2);
2010-09-27 15:34:24 +02:00
chdir( $dir) or die( mj( error=>'change_directory', value=>$dir, message=>$!));
opendir( DH, '.') or die( mj( error=>'dir_not_found', message=>'Directory not found.'));
2010-09-30 15:49:33 +02:00
while( my$filename = readdir( DH)) {
next unless $filename =~ /$fexpr/ and -f $filename;
2010-09-30 15:49:33 +02:00
print pack( 'nNA*', 1, length($filename), $filename);
2010-09-27 13:40:21 +02:00
open F, $filename;
my$length = readg 4;
2010-09-27 16:33:31 +02:00
$length = unpack 'N', $length;
seek F, $length, 0;
2010-09-30 16:12:00 +02:00
while( read( F, my$r, 1400)) {
2010-09-30 15:49:33 +02:00
print pack( 'nNA*', 2, length($r), $r);
2010-09-27 16:33:31 +02:00
}
2010-09-27 13:40:21 +02:00
close F;
}
2010-09-30 15:49:33 +02:00
closedir DH;
exit( 0);