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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38255
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     1
#!/usr/bin/env perl
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     2
#
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     3
# Author: Makarius
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     4
#
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     5
# raw_dump - direct copy without extra buffering
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     6
#
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     7
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     8
use warnings;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
     9
use strict;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    10
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    11
use IO::File;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    12
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    13
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    14
# args
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    15
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    16
my ($input, $output) = @ARGV;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    17
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    18
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    19
# prepare files
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    20
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    21
my $infile;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    22
my $outfile;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    23
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    24
if ($input eq "-") { $infile = *STDIN; }
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    25
else {
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    26
  $infile = new IO::File $input, "r";
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    27
  defined $infile || die $!;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    28
}
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    29
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    30
if ($output eq "-") { $outfile = *STDOUT; }
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    31
else {
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    32
  $outfile = new IO::File $output, "w";
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    33
  defined $outfile || die $!;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    34
}
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    35
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    36
binmode $infile;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    37
binmode $outfile;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    38
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    39
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    40
# main loop
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    41
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    42
my $chunk;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    43
while ((sysread $infile, $chunk, 65536), length $chunk > 0) {
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    44
  my $end = length $chunk;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    45
  my $offset = 0;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    46
  while ($offset < $end) {
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    47
    $offset += syswrite $outfile, $chunk, $end - $offset, $offset;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    48
  }
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    49
}
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    50
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    51
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    52
# cleanup
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    53
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    54
undef $infile;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    55
undef $outfile;
bf44a85c74cc uniform raw_dump for input/output fifos on Cygwin;
wenzelm
parents:
diff changeset
    56