lib/scripts/raw_dump
author hoelzl
Mon, 06 Dec 2010 19:54:48 +0100
changeset 41024 ba961a606c67
parent 38255 bf44a85c74cc
permissions -rwxr-xr-x
move coercions to appropriate places

#!/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;