+my $full_write = sub {
+ my ($fh, $data) = @_;
+
+ my $len = length($data);
+ my $todo = $len;
+ my $offset = 0;
+ while(1) {
+ my $nr = syswrite($fh, $data, $todo, $offset);
+ if (!defined($nr)) {
+ next if $! == EINTR || $! == EAGAIN;
+ die "console write error - $!\n"
+ }
+ $offset += $nr;
+ $todo -= $nr;
+ last if $todo <= 0;
+ }
+
+ return $len;
+};
+