Perl to C++

[email protected] (miztaken)
Newsgroups perl.beginners
Organization http://groups.google.com
Message-ID <231c0d21-68d6-42c7-adfd-2b35e6c29012@d19g2000prm.googlegroups.com>
Hi there,
can somebody convert the following perl code to C++

sub OleUnpackPackages {
  my($this, $explodeinto, $parentname, @NativeFilenames) = @_;

  my($infh, $byte, $number, $buffer, $outname);
  my($finished);

  OLEFILE: foreach my $inname (@NativeFilenames) {
    $byte = "";
    $buffer = "";
    close $infh if $infh;
    $infh = new FileHandle;
    sysopen $infh, "$explodeinto/$inname", O_RDONLY;    sysseek $infh,
6, SEEK_SET; # Skip 1st 6 bytes
    $outname = "";
    $finished = 0;
    until ($byte eq "\0" || $finished) { # Read a C-string into
$outname
      sysread($infh, $byte, 1) or $finished = 1;
      $outname .= $byte;
    }
# Then there is a null-terminated ASCII string which is the filename
of the object.
    #print STDERR "Output filename is $outname\n";
    $finished = 0;
    $byte = 1;
    until ($byte eq "\0" || $finished) { # Throw away a C-string
      sysread($infh, $byte, 1) or $finished = 1;
    }
# Throw away the next null-terminated ASCII string
    sysseek $infh, 4, Fcntl::SEEK_CUR or next OLEFILE; # Skip next 4
bytes
# Throw away next 4 byte int
    sysread $infh, $number, 4 or next OLEFILE;
    $number = unpack 'V', $number;
# The next 4 bytes are an int giving the length of the next bit of the
header
    #print STDERR "Skipping $number bytes of header filename\n";
    sysseek $infh, $number, Fcntl::SEEK_CUR; # Skip the next bit of
header (C-string)
# Skip over the next bit of the header whose length we just read
    sysread $infh, $number, 4 or next OLEFILE;
    $number = unpack 'V', $number;
    #print STDERR "Reading $number bytes of file data\n";
# Then you have a 4-byte int which is the length of the real embedded
original file
    sysread $infh, $buffer, $number
      if $number < -s "$explodeinto/$inname"; # Sanity check
# Read in all the data of the original embedded file
    my $outfh = new FileHandle;
    my $outsafe = $this->MakeNameSafe($outname, $explodeinto);
    sysopen $outfh, "$explodeinto/$outsafe", (O_CREAT | O_WRONLY)
      or next OLEFILE;
    syswrite $outfh, $buffer, $number or next OLEFILE;
    close $outfh;
    # Set up MailScanner data structures
    $this->{file2parent}{$outname} = $parentname;
    $this->{file2parent}{$outsafe} = $parentname;
    $this->{file2safefile}{$outname} = $outsafe;
    $this->{safefile2file}{$outsafe} = $outname;

  }
  close $infh if $infh;
}

You help will be highly appreciated.

Thank You
miztaken
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.