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


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to