- Timestamp:
- 2021-02-26T19:39:51+13:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cpan/Image/ExifTool/LNK.pm
r24107 r34921 16 16 use Image::ExifTool qw(:DataAccess :Utils); 17 17 18 $VERSION = '1.0 3';18 $VERSION = '1.07'; 19 19 20 20 sub ProcessItemID($$$); … … 25 25 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, 26 26 GROUPS => { 2 => 'Other' }, 27 VARS => { HEX_ID => 1 }, # print hex ID's in documentation 27 28 NOTES => 'Information extracted from MS Shell Link (Windows shortcut) files.', 28 29 # maybe the Flags aren't very useful to the user (since they are … … 236 237 PROCESS_PROC => \&ProcessItemID, 237 238 # (can't find any documentation on these items) 238 0x0032 => { 239 0x0032 => { 239 240 Name => 'Item0032', 240 241 SubDirectory => { TagTable => 'Image::ExifTool::LNK::Item0032' }, … … 380 381 RawConv => q{ 381 382 $val = $self->Decode($val, 'UCS2'); 382 $val =~ s/\0.*// ;383 $val =~ s/\0.*//s; 383 384 return length($val) ? $val : undef; 384 385 }, … … 460 461 sub ProcessItemID($$$) 461 462 { 462 my ($e xifTool, $dirInfo, $tagTablePtr) = @_;463 my ($et, $dirInfo, $tagTablePtr) = @_; 463 464 my $dataPt = $$dirInfo{DataPt}; 464 465 my $dataLen = length $$dataPt; … … 468 469 DataPos => $$dirInfo{DataPos}, 469 470 ); 470 $e xifTool->VerboseDir('ItemID', undef, $dataLen);471 $et->VerboseDir('ItemID', undef, $dataLen); 471 472 for (;;) { 472 473 last if $pos + 4 >= $dataLen; … … 474 475 last if $size < 2 or $pos + $size > $dataLen; 475 476 my $tag = Get16u($dataPt, $pos+2); # (just a guess -- may not be a tag at all) 476 Image::ExifTool::AddTagToTable($tagTablePtr, $tag, {477 AddTagToTable($tagTablePtr, $tag, { 477 478 Name => sprintf('Item%.4x', $tag), 478 479 SubDirectory => { TagTable => 'Image::ExifTool::LNK::UnknownData' }, 479 480 }) unless $$tagTablePtr{$tag}; 480 $e xifTool->HandleTag($tagTablePtr, $tag, undef, %opts, Start => $pos, Size => $size);481 $et->HandleTag($tagTablePtr, $tag, undef, %opts, Start => $pos, Size => $size); 481 482 $pos += $size; 482 483 } … … 489 490 sub ProcessLinkInfo($$$) 490 491 { 491 my ($e xifTool, $dirInfo, $tagTablePtr) = @_;492 my ($et, $dirInfo, $tagTablePtr) = @_; 492 493 my $dataPt = $$dirInfo{DataPt}; 493 494 my $dataLen = length $$dataPt; … … 501 502 ); 502 503 my ($off, $unicode, $pos, $val, $size); 503 $e xifTool->VerboseDir('LinkInfo', undef, $dataLen);504 $et->VerboseDir('LinkInfo', undef, $dataLen); 504 505 if ($lif & 0x01) { 505 506 # read Volume ID … … 507 508 if ($off + 0x20 <= $dataLen) { 508 509 # my $len = Get32u($dataPt, $off); 509 $e xifTool->HandleTag($tagTablePtr, 'DriveType', undef, %opts, Start=>$off+4);510 $et->HandleTag($tagTablePtr, 'DriveType', undef, %opts, Start=>$off+4); 510 511 $pos = Get32u($dataPt, $off + 0x0c); 511 512 if ($pos == 0x14) { … … 518 519 if (defined $val) { 519 520 $size = length $val; 520 $val = $e xifTool->Decode($val, 'UCS2') if $unicode;521 $e xifTool->HandleTag($tagTablePtr, 'VolumeLabel', $val, %opts, Start=>$pos, Size=>$size);521 $val = $et->Decode($val, 'UCS2') if $unicode; 522 $et->HandleTag($tagTablePtr, 'VolumeLabel', $val, %opts, Start=>$pos, Size=>$size); 522 523 } 523 524 } … … 533 534 if (defined $val) { 534 535 $size = length $val; 535 $val = $e xifTool->Decode($val, 'UCS2') if $unicode;536 $e xifTool->HandleTag($tagTablePtr, 'LocalBasePath', $val, %opts, Start=>$pos, Size=>$size);536 $val = $et->Decode($val, 'UCS2') if $unicode; 537 $et->HandleTag($tagTablePtr, 'LocalBasePath', $val, %opts, Start=>$pos, Size=>$size); 537 538 } 538 539 } … … 552 553 if (defined $val) { 553 554 $size = length $val; 554 $val = $e xifTool->Decode($val, 'UCS2') if $unicode;555 $e xifTool->HandleTag($tagTablePtr, 'NetName', $val, %opts, Start=>$pos, Size=>$size);555 $val = $et->Decode($val, 'UCS2') if $unicode; 556 $et->HandleTag($tagTablePtr, 'NetName', $val, %opts, Start=>$pos, Size=>$size); 556 557 } 557 558 my $flg = Get32u($dataPt, $off + 0x04); … … 567 568 if (defined $val) { 568 569 $size = length $val; 569 $val = $e xifTool->Decode($val, 'UCS2') if $unicode;570 $e xifTool->HandleTag($tagTablePtr, 'DeviceName', $val, %opts, Start=>$pos, Size=>$size);570 $val = $et->Decode($val, 'UCS2') if $unicode; 571 $et->HandleTag($tagTablePtr, 'DeviceName', $val, %opts, Start=>$pos, Size=>$size); 571 572 } 572 573 } 573 574 if ($flg & 0x02) { 574 575 $val = Get32u($dataPt, $off + 0x10); 575 $e xifTool->HandleTag($tagTablePtr, 'NetProviderType', $val, %opts, Start=>$off + 0x10);576 $et->HandleTag($tagTablePtr, 'NetProviderType', $val, %opts, Start=>$off + 0x10); 576 577 } 577 578 } … … 586 587 sub ProcessLNK($$) 587 588 { 588 my ($e xifTool, $dirInfo) = @_;589 my ($et, $dirInfo) = @_; 589 590 my $raf = $$dirInfo{RAF}; 590 591 my ($buff, $buf2, $len, $i); … … 599 600 $buff .= $buf2; 600 601 } 601 $e xifTool->SetFileType('Windows Shortcut');602 $et->SetFileType(); 602 603 SetByteOrder('II'); 603 604 … … 609 610 DirLen => length $buff, 610 611 ); 611 $e xifTool->ProcessDirectory(\%dirInfo, $tagTablePtr);612 $et->ProcessDirectory(\%dirInfo, $tagTablePtr); 612 613 613 614 my $flags = Get32u(\$buff, 0x14); … … 618 619 $len = unpack('v', $buff); 619 620 $raf->Read($buff, $len) == $len or return 1; 620 $e xifTool->HandleTag($tagTablePtr, 0x10000, undef,621 $et->HandleTag($tagTablePtr, 0x10000, undef, 621 622 DataPt => \$buff, 622 623 DataPos => $raf->Tell() - $len, … … 632 633 $raf->Read($buf2, $len - 4) == $len - 4 or return 1; 633 634 $buff .= $buf2; 634 $e xifTool->HandleTag($tagTablePtr, 0x20000, undef,635 $et->HandleTag($tagTablePtr, 0x20000, undef, 635 636 DataPt => \$buff, 636 637 DataPos => $raf->Tell() - $len, … … 647 648 $raf->Read($buff, 2) or return 1; 648 649 $len = unpack('v', $buff); 649 $len *= 2 if $flags & 0x80; # characters are 2 bytes if Unicode flag is set 650 $len *= 2 if $flags & 0x80; # characters are 2 bytes if Unicode flag is set 650 651 $raf->Read($buff, $len) or return 1; 651 652 my $val; 652 $val = $e xifTool->Decode($buff, 'UCS2') if $flags & 0x80;653 $e xifTool->HandleTag($tagTablePtr, 0x30000 | $mask, $val,653 $val = $et->Decode($buff, 'UCS2') if $flags & 0x80; 654 $et->HandleTag($tagTablePtr, 0x30000 | $mask, $val, 654 655 DataPt => \$buff, 655 656 DataPos => $raf->Tell() - $len, … … 671 672 $tagInfo = $$tagTablePtr{0xa0000000}; 672 673 } 673 $e xifTool->HandleTag($tagTablePtr, $tag, undef,674 $et->HandleTag($tagTablePtr, $tag, undef, 674 675 DataPt => \$buff, 675 676 DataPos => $raf->Tell() - $len - 4, … … 699 700 =head1 AUTHOR 700 701 701 Copyright 2003-20 11, Phil Harvey (phil at owl.phy.queensu.ca)702 Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com) 702 703 703 704 This library is free software; you can redistribute it and/or modify it
Note:
See TracChangeset
for help on using the changeset viewer.