470,833 Members | 1,620 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,833 developers. It's quick & easy.

Perl to C++

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
Jun 27 '08 #1
2 1948
miztaken wrote:
Hi there,
can somebody convert the following perl code to C++
I'm sure they can, for an appropriate fee. This isn't the place to ask.

--
Ian Collins.
Jun 27 '08 #2
Sam
miztaken writes:
Hi there,
can somebody convert the following perl code to C++

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

[ … ]
Yup, I can definitely convert this perl code to C++. And I'm sure many
others can, too.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)

iD8DBQBIMWD4x9p3GYHlUOIRApotAJ4/dzPj/8ma2DFQ17R74l3bAzda5gCeKo5m
26fFuNtNL6bxAJw6PVCVSgY=
=bUEs
-----END PGP SIGNATURE-----

Jun 27 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

31 posts views Thread by surfunbear | last post: by
reply views Thread by Kirt Loki Dankmyer | last post: by
13 posts views Thread by Otto J. Makela | last post: by
6 posts views Thread by surfivor | last post: by
reply views Thread by mihailmihai484 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.