#!/usr/bin/perl -w
$| = 1;
my $header;
my $message;
while(sysread(STDIN, $header, 8) == 8) {
(my $magic, my $length) = unpack('N2', $header);
if ($magic != 0xbeefdead || $length < 8) {
die("Bad header: " . unpack('H*', $header) . "!\n");
}
$length -= 8;
if (sysread(STDIN, $message, $length) != $length) {
die("read($length): $!\n");
}
@message = unpack('(N3 N/a x![N])*', $message);
for(my $n = 0; $n < $#message; $n += 4) {
print STDERR $message[$n] . "\t" .
$message[$n + 1] . "\t" .
$message[$n + 2] . "\t" .
unpack('H*', $message[$n + 3]) . "\n";
}
# Respond
print pack('N2', 0xdeadbeef, 8);
}
# vim:softtabstop=2:sw=2
syntax highlighted by Code2HTML, v. 0.9.1