PDA

View Full Version : Database Queries w/ World HTTP Server


AndMetal
03-17-2008, 03:32 AM
So, I was going to try & convert my profile viewer (in PHP) into Perl so that it can be incorporated into the World HTTP Server, but I'm a little stuck.

When I query the character_ table with the following:

my $q = "SELECT name, profile, level, extprofile FROM character_ WHERE id=".$request->getInt("charid", 0);
my $res = $EQDB->query($q);
if ($res) {
my $row = $res->fetch_row_hash;
}

and try to access the profile blob via $row->{profile} (as advised in the Wiki (http://www.eqemulator.net/wiki/wikka.php?wakka=DevWorldHTTP#edbselect)), it only returns the first few characters of the blob.

After checking the profile itself, it seems to stop at the first null character (0x00). I guess the question then becomes, what's causing it to stop there? Once I can get that figured out, dissecting the blob will be easy.

Any thoughts?

Theeper
03-29-2008, 11:10 AM
Is it stopping before unpacking, or are you saying it fails to unpack ?

AndMetal
03-30-2008, 10:17 PM
As far as I can tell, it starts to unpack, but doesn't complete. It stops when it hits the first null character, so I can usually get the first name, but that's about it, since it's padded with nulls.

Theeper
03-31-2008, 06:56 PM
If you use the 'A' flag instead of the 'a' flag in your pack template, ascii strings should be space padded (0x20) instead of null padded. I don't know if that will help or not though.

I can't imagine it will be easy to unpack that data correctly. I certainly wouldn't want to write the template by hand.

I thought about using something like this module (http://search.cpan.org/~mhx/Convert-Binary-C-0.68/lib/Convert/Binary/C.pm) to convert the profile struct for use in PERL, but I haven't attempted it yet.