At 9:32 am -0400 10/04/01, peter furmonavicius wrote:
>Hi.  I have been trying to figure out how to determine the 
>application's "version" information from within MacPerl (i.e. the 
>info shown in the "Version:" field when you do a 'get info' on an 
>application).  Thanks for any advice/help.
>--

Chris has already given a neat solution to the problem but I could 
not resist the temptation of applying Bart Lateur's unpacking 
technique (see a previous thread <[MacPerl] StyledText data into a 
record of text and styl>) as follows:

#!perl -w
use strict;
use Mac::MoreFiles;
use Mac::Resources;
use Mac::Memory;

my $rfd = FSpOpenResFile($Application{"Arch"}, 1);

my $rsc = GetIndResource('vers', 1);
my $got = $rsc->get;
my @l = split(//, unpack("a7", $got));

printf "Version number     = %02.x\n", ord($l[0]);
printf "Revision number    = %02.x\n", ord($l[1]);
printf "Revision stage     = %02.x\n", ord($l[2]);
printf "Build number       = %02.x\n", ord($l[3]);
printf "Language integer   = %02.x\n", ord($l[4]);

my ($vers, $size) = unpack("x7a@{[ord($l[6])]}a", $got);
my ($info) = unpack("x@{[8+ord($l[6])]}a@{[ord($size)]}", $got);

print "Abbreviated string = $vers\n";
print "Get Info string    = $info\n";

CloseResFile($rfd);

I'm not sure if this takes care of the case raised by Charles 
Albrecht this morning however.

Alan Fry


Reply via email to