# $File: //local/member/autrijus/Win32-Exe/lib/Win32/Exe/ResourceEntry/Name.pm $ $Author: autrijus $ # $Revision: #6 $ $Change: 1130 $ $Date: 2004-02-17T15:40:29.640821Z $ package Win32::Exe::ResourceEntry::Name; use strict; use base 'Win32::Exe::ResourceEntry'; use constant SUBFORMAT => ( N_RVA => 'V', ); sub NameAddress { my ($self) = @_; $self->N_RVA & ~($self->high_bit); } sub SetNameAddress { my ($self, $data) = @_; $self->SetN_RVA($data | $self->IsDirectory); } sub IsEscaped { my ($self) = @_; $self->N_RVA & ($self->high_bit); } sub Name { my ($self) = @_; my $section = $self->first_parent('Resources'); my $addr = $self->NameAddress; my $size = unpack('v', $section->substr($addr, 2)); my $ustr = $section->substr($addr + 2, $size * 2); my $name = $self->decode_ucs2($ustr); $name =~ s{([%#/])}{sprintf('%%%02X', ord($1))}eg; return $name; } sub SetName { die "XXX unimplemented"; } 1;