--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/scripts/raw_dump Mon Aug 09 21:35:45 2010 +0200
@@ -0,0 +1,56 @@
+#!/usr/bin/env perl
+#
+# Author: Makarius
+#
+# raw_dump - direct copy without extra buffering
+#
+
+use warnings;
+use strict;
+
+use IO::File;
+
+
+# args
+
+my ($input, $output) = @ARGV;
+
+
+# prepare files
+
+my $infile;
+my $outfile;
+
+if ($input eq "-") { $infile = *STDIN; }
+else {
+ $infile = new IO::File $input, "r";
+ defined $infile || die $!;
+}
+
+if ($output eq "-") { $outfile = *STDOUT; }
+else {
+ $outfile = new IO::File $output, "w";
+ defined $outfile || die $!;
+}
+
+binmode $infile;
+binmode $outfile;
+
+
+# main loop
+
+my $chunk;
+while ((sysread $infile, $chunk, 65536), length $chunk > 0) {
+ my $end = length $chunk;
+ my $offset = 0;
+ while ($offset < $end) {
+ $offset += syswrite $outfile, $chunk, $end - $offset, $offset;
+ }
+}
+
+
+# cleanup
+
+undef $infile;
+undef $outfile;
+