while ($len) {
my $n = read($rd, my $tmp, $len) or die "read: $!";
warn "$n != $len\n" if $n != $len;
$len -= $n;
while ($len) {
my $n = read($rd, my $tmp, $len) or die "read: $!";
warn "$n != $len\n" if $n != $len;
$len -= $n;
my ($mark, $path) = ($1, $2);
$D{$path} = $mark;
if ($last && $last ne 'm') {
my ($mark, $path) = ($1, $2);
$D{$path} = $mark;
if ($last && $last ne 'm') {
my $mark = delete $D{$1};
defined $mark or die "undeleted path: $1\n";
if ($last && $last ne 'd') {
my $mark = delete $D{$1};
defined $mark or die "undeleted path: $1\n";
if ($last && $last ne 'd') {