Ignore:
Timestamp:
2021-02-26T19:39:51+13:00 (3 years ago)
Author:
anupama
Message:

Committing the improvements to EmbeddedMetaPlugin's processing of Keywords vs other metadata fields. Keywords were literally stored as arrays of words rather than phrases in PDFs (at least in Diego's sample PDF), whereas other meta fields like Subjects and Creators stored them as arrays of phrases. To get both to work, Kathy updated EXIF to a newer version, to retrieve the actual EXIF values stored in the PDF. And Kathy and Dr Bainbridge came up with a new option that I added called apply_join_before_split_to_metafields that's a regex which can list the metadata fields to apply the join_before_split to and whcih previously always got applied to all metadata fields. Now it's applied to any *Keywords metafields by default, as that's the metafield we have experience of that behaves differently to the others, as it stores by word instead of phrases. Tested on Diego's sample PDF. Diego has double-checked it to works on his sample PDF too, setting the split char to ; and turning on the join_before_split and leaving apply_join_before_split_to_metafields at its default of .*Keywords. File changes are strings.properties for the tooltip, the plugin introducing the option and working with it and Kathy's EXIF updates affecting cpan/File and cpan/Image.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/cpan/Image/ExifTool/DNG.pm

    r24107 r34921  
    1818use Image::ExifTool::CanonRaw;
    1919
    20 $VERSION = '1.15';
     20$VERSION = '1.23';
    2121
    2222sub ProcessOriginalRaw($$$);
     
    4949
    5050%Image::ExifTool::DNG::AdobeData = ( #PH
    51     GROUPS => { 0 => 'MakerNotes', 1 => 'Adobe', 2 => 'Image' },
     51    GROUPS => { 0 => 'MakerNotes', 1 => 'AdobeDNG', 2 => 'Image' },
    5252    PROCESS_PROC => \&ProcessAdobeData,
    5353    WRITE_PROC => \&WriteAdobeStuff,
     
    144144sub ProcessOriginalRaw($$$)
    145145{
    146     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     146    my ($et, $dirInfo, $tagTablePtr) = @_;
    147147    my $dataPt = $$dirInfo{DataPt};
    148148    my $start = $$dirInfo{DirStart};
     
    156156        my $val = Get32u($dataPt, $pos);
    157157        $val or $pos += 4, next; # ignore zero values
    158         my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $index);
     158        my $tagInfo = $et->GetTagInfo($tagTablePtr, $index);
    159159        $tagInfo or $err = "Missing DNG tag $index", last;
    160160        if ($index & 0x02) {
     
    169169            my $tag = $$tagInfo{Name};
    170170            # only extract this information if requested (because it takes time)
    171             if ($exifTool->{OPTIONS}->{Binary} or
    172                 $exifTool->{REQ_TAG_LOOKUP}->{lc($tag)})
     171            my $lcTag = lc $tag;
     172            if (($$et{OPTIONS}{Binary} and not $$et{EXCL_TAG_LOOKUP}{$lcTag}) or
     173                $$et{REQ_TAG_LOOKUP}{$lcTag})
    173174            {
    174                 unless (eval 'require Compress::Zlib') {
     175                unless (eval { require Compress::Zlib }) {
    175176                    $err = 'Install Compress::Zlib to extract compressed images';
    176177                    last;
     
    208209            }
    209210        }
    210         $exifTool->FoundTag($tagInfo, $val);
    211     }
    212     $exifTool->Warn($err || 'Bad OriginalRawFileData') if defined $err;
     211        $et->FoundTag($tagInfo, $val);
     212    }
     213    $et->Warn($err || 'Bad OriginalRawFileData') if defined $err;
    213214    return 1;
    214215}
     
    220221sub ProcessAdobeData($$$)
    221222{
    222     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     223    my ($et, $dirInfo, $tagTablePtr) = @_;
    223224    my $dataPt = $$dirInfo{DataPt};
    224225    my $dataPos = $$dirInfo{DataPos};
     
    226227    my $end = $$dirInfo{DirLen} + $pos;
    227228    my $outfile = $$dirInfo{OutFile};
    228     my $verbose = $exifTool->Options('Verbose');
    229     my $htmlDump = $exifTool->Options('HtmlDump');
     229    my $verbose = $et->Options('Verbose');
     230    my $htmlDump = $et->Options('HtmlDump');
    230231
    231232    return 0 unless $$dataPt =~ /^Adobe\0/;
    232233    unless ($outfile) {
    233         $exifTool->VerboseDir($dirInfo);
     234        $et->VerboseDir($dirInfo);
    234235        # don't parse makernotes if FastScan > 1
    235         my $fast = $exifTool->Options('FastScan');
     236        my $fast = $et->Options('FastScan');
    236237        return 1 if $fast and $fast > 1;
    237238    }
    238     $htmlDump and $exifTool->HDump($dataPos, 6, 'Adobe DNGPrivateData header');
     239    $htmlDump and $et->HDump($dataPos, 6, 'Adobe DNGPrivateData header');
    239240    SetByteOrder('MM'); # always big endian
    240241    $pos += 6;
     
    247248            my $name = "Adobe$tag";
    248249            $name =~ tr/ //d;
    249             $exifTool->HDump($dataPos + $pos - 8, 8, "$name header", "Data Size: $size bytes");
     250            $et->HDump($dataPos + $pos - 8, 8, "$name header", "Data Size: $size bytes");
    250251            # dump non-EXIF format data
    251252            unless ($tag =~ /^(MakN|SR2 )$/) {
    252                 $exifTool->HDump($dataPos + $pos, $size, "$name data");
     253                $et->HDump($dataPos + $pos, $size, "$name data");
    253254            }
    254255        }
    255256        if ($verbose and not $outfile) {
    256             $tagInfo or $exifTool->VPrint(0, "$$exifTool{INDENT}Unsupported DNGAdobeData record: ($tag)\n");
    257             $exifTool->VerboseInfo($tag,
     257            $tagInfo or $et->VPrint(0, "$$et{INDENT}Unsupported DNGAdobeData record: ($tag)\n");
     258            $et->VerboseInfo($tag,
    258259                ref $tagInfo eq 'HASH' ? $tagInfo : undef,
    259260                DataPt => $dataPt,
     
    272273                        $value = substr($$dataPt, $pos, $size);
    273274                    } else {
    274                         $exifTool->HandleTag($tagTablePtr, $tag, substr($$dataPt, $pos, $size));
     275                        $et->HandleTag($tagTablePtr, $tag, substr($$dataPt, $pos, $size));
    275276                    }
    276277                    last;
     
    295296            if ($outfile) {
    296297                $dirInfo{Proc} = $processProc;  # WriteAdobeStuff() calls this to do the actual writing
    297                 $value = $exifTool->WriteDirectory(\%dirInfo, $subTable, \&WriteAdobeStuff);
     298                $value = $et->WriteDirectory(\%dirInfo, $subTable, \&WriteAdobeStuff);
    298299                # use old directory if an error occurred
    299300                defined $value or $value = substr($$dataPt, $pos, $size);
    300301            } else {
    301302                # override process proc for MakN
    302                 $exifTool->ProcessDirectory(\%dirInfo, $subTable, $processProc);
     303                $et->ProcessDirectory(\%dirInfo, $subTable, $processProc);
    303304            }
    304305            last;
     
    313314        ++$pos if $size & 0x01; # (darn padding)
    314315    }
    315     $pos == $end or $exifTool->Warn("$pos $end Adobe private data is corrupt");
     316    $pos == $end or $et->Warn("$pos $end Adobe private data is corrupt");
    316317    return 1;
    317318}
     
    326327sub ProcessAdobeCRW($$$)
    327328{
    328     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     329    my ($et, $dirInfo, $tagTablePtr) = @_;
    329330    my $dataPt = $$dirInfo{DataPt};
    330331    my $start = $$dirInfo{DirStart};
    331332    my $end = $start + $$dirInfo{DirLen};
    332     my $verbose = $exifTool->Options('Verbose');
    333     my $buildMakerNotes = $exifTool->Options('MakerNotes');
     333    my $verbose = $et->Options('Verbose');
     334    my $buildMakerNotes = $et->Options('MakerNotes');
    334335    my $outfile = $$dirInfo{OutFile};
    335336    my ($newTags, $oldChanged);
     
    341342
    342343    # initialize maker note data if building maker notes
    343     $buildMakerNotes and Image::ExifTool::CanonRaw::InitMakerNotes($exifTool);
     344    $buildMakerNotes and Image::ExifTool::CanonRaw::InitMakerNotes($et);
    344345
    345346    my $entries = Get16u($dataPt, $start + 2);
    346347    my $pos = $start + 4;
    347     $exifTool->VerboseDir($dirInfo, $entries) unless $outfile;
     348    $et->VerboseDir($dirInfo, $entries) unless $outfile;
    348349    if ($outfile) {
    349350        # get hash of new tags
    350         $newTags = $exifTool->GetNewTagInfoHash($tagTablePtr);
     351        $newTags = $et->GetNewTagInfoHash($tagTablePtr);
    351352        $$outfile = substr($$dataPt, $start, 4);
    352         $oldChanged = $exifTool->{CHANGED};
     353        $oldChanged = $$et{CHANGED};
    353354    }
    354355    # loop through entries in Adobe CRW information
     
    365366        my $format = $Image::ExifTool::CanonRaw::crwTagFormat{$tagType};
    366367        my $count;
    367         my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, $tagID, \$value);
     368        my $tagInfo = $et->GetTagInfo($tagTablePtr, $tagID, \$value);
    368369        if ($tagInfo) {
    369370            $format = $$tagInfo{Format} if $$tagInfo{Format};
     
    405406                    #### eval Validate ($dirData, $subdirStart, $size)
    406407                    if (defined $$subdir{Validate} and not eval $$subdir{Validate}) {
    407                         $exifTool->Warn("Invalid $name data");
     408                        $et->Warn("Invalid $name data");
    408409                    } else {
    409                         $subdir = $exifTool->WriteDirectory(\%subdirInfo, $newTagTable);
     410                        $subdir = $et->WriteDirectory(\%subdirInfo, $newTagTable);
    410411                        if (defined $subdir and length $subdir) {
    411412                            if ($subdirStart) {
     
    418419                    }
    419420                } elsif ($$newTags{$tagID}) {
    420                     my $nvHash = $exifTool->GetNewValueHash($tagInfo);
    421                     if (Image::ExifTool::IsOverwriting($nvHash, $val)) {
    422                         my $newVal = Image::ExifTool::GetNewValues($nvHash);
     421                    my $nvHash = $et->GetNewValueHash($tagInfo);
     422                    if ($et->IsOverwriting($nvHash, $val)) {
     423                        my $newVal = $et->GetNewValue($nvHash);
    423424                        my $verboseVal;
    424425                        $verboseVal = $newVal if $verbose > 1;
     
    428429                        }
    429430                        if (defined $newVal) {
    430                             $exifTool->VerboseValue("- CanonRaw:$$tagInfo{Name}", $value);
    431                             $exifTool->VerboseValue("+ CanonRaw:$$tagInfo{Name}", $verboseVal);
     431                            $et->VerboseValue("- CanonRaw:$$tagInfo{Name}", $value);
     432                            $et->VerboseValue("+ CanonRaw:$$tagInfo{Name}", $verboseVal);
    432433                            $value = $newVal;
    433                             ++$exifTool->{CHANGED};
     434                            ++$$et{CHANGED};
    434435                        }
    435436                    }
     
    441442            $$outfile .= Set16u($tag) . Set32u(length($value)) . $value;
    442443        } else {
    443             $exifTool->HandleTag($tagTablePtr, $tagID, $val,
     444            $et->HandleTag($tagTablePtr, $tagID, $val,
    444445                Index   => $index,
    445446                DataPt  => $dataPt,
     
    451452            if ($buildMakerNotes) {
    452453                # build maker notes information if requested
    453                 Image::ExifTool::CanonRaw::BuildMakerNotes($exifTool, $tagID, $tagInfo,
     454                Image::ExifTool::CanonRaw::BuildMakerNotes($et, $tagID, $tagInfo,
    454455                                                           \$value, $format, $count);
    455456            }
     
    457458        # (we lost the directory structure, but the second tag 0x0805
    458459        # should be in the ImageDescription directory)
    459         $exifTool->{DIR_NAME} = 'ImageDescription' if $tagID == 0x0805;
     460        $$et{DIR_NAME} = 'ImageDescription' if $tagID == 0x0805;
    460461        SetByteOrder('MM');
    461462        $pos += $size;
    462463    }
    463464    if ($outfile and (not defined $$outfile or $index != $entries or
    464         $exifTool->{CHANGED} ==  $oldChanged))
     465        $$et{CHANGED} ==  $oldChanged))
    465466    {
    466         $exifTool->{CHANGED} = $oldChanged; # nothing changed
     467        $$et{CHANGED} = $oldChanged; # nothing changed
    467468        undef $$outfile;    # rewrite old directory
    468469    }
    469470    if ($index != $entries) {
    470         $exifTool->Warn('Truncated CRW notes');
     471        $et->Warn('Truncated CRW notes');
    471472    } elsif ($pos < $end) {
    472         $exifTool->Warn($end-$pos . ' extra bytes at end of CRW notes');
     473        $et->Warn($end-$pos . ' extra bytes at end of CRW notes');
    473474    }
    474475    # finish building maker notes if necessary
    475476    if ($buildMakerNotes) {
    476477        SetByteOrder($byteOrder);
    477         Image::ExifTool::CanonRaw::SaveMakerNotes($exifTool);
     478        Image::ExifTool::CanonRaw::SaveMakerNotes($et);
    478479    }
    479480    return 1;
     
    487488sub ProcessAdobeMRW($$$)
    488489{
    489     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     490    my ($et, $dirInfo, $tagTablePtr) = @_;
    490491    my $dataPt = $$dirInfo{DataPt};
    491492    my $dirLen = $$dirInfo{DirLen};
     
    499500    my $raf = new File::RandomAccess(\$buff);
    500501    my %dirInfo = ( RAF => $raf, OutFile => $outfile );
    501     my $rtnVal = Image::ExifTool::MinoltaRaw::ProcessMRW($exifTool, \%dirInfo);
     502    my $rtnVal = Image::ExifTool::MinoltaRaw::ProcessMRW($et, \%dirInfo);
    502503    if ($outfile and defined $$outfile and length $$outfile) {
    503504        # remove MRW header and add Adobe header
     
    513514sub ProcessAdobeRAF($$$)
    514515{
    515     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     516    my ($et, $dirInfo, $tagTablePtr) = @_;
    516517    return 0 if $$dirInfo{OutFile}; # (can't write this yet)
    517518    my $dataPt = $$dirInfo{DataPt};
     
    524525        $pos += 2;
    525526    } else {
    526         $exifTool->Warn('Invalid DNG RAF data');
     527        $et->Warn('Invalid DNG RAF data');
    527528        return 0;
    528529    }
    529     $exifTool->VerboseDir($dirInfo);
     530    $et->VerboseDir($dirInfo);
    530531    # make fake RAF object for processing (same acronym, different meaning)
    531532    my $raf = new File::RandomAccess($dataPt);
     
    545546            DirStart => $pos - $len,
    546547        );
    547         $$exifTool{SET_GROUP1} = "RAF$num";
    548         $exifTool->ProcessDirectory(\%dirInfo, $tagTablePtr) or $warn = 1;
    549         delete $$exifTool{SET_GROUP1};
     548        $$et{SET_GROUP1} = "RAF$num";
     549        $et->ProcessDirectory(\%dirInfo, $tagTablePtr) or $warn = 1;
     550        delete $$et{SET_GROUP1};
    550551        $num = ($num || 1) + 1;
    551552    }
    552     $warn and $exifTool->Warn('Possibly corrupt RAF information');
     553    $warn and $et->Warn('Possibly corrupt RAF information');
    553554    return 1;
    554555}
     
    561562sub ProcessAdobeSR2($$$)
    562563{
    563     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     564    my ($et, $dirInfo, $tagTablePtr) = @_;
    564565    return 0 if $$dirInfo{OutFile}; # (can't write this yet)
    565566    my $dataPt = $$dirInfo{DataPt};
     
    572573    return 0 unless SetByteOrder(substr($$dataPt, $start, 2));
    573574
    574     $exifTool->VerboseDir($dirInfo);
     575    $et->VerboseDir($dirInfo);
    575576    my $dataPos = $$dirInfo{DataPos};
    576577    my $dirStart = $start + 6;  # pointer to maker note directory
     
    589590        Parent    => $$dirInfo{DirName},
    590591    );
    591     if ($exifTool->Options('HtmlDump')) {
    592         $exifTool->HDump($dataPos + $start, 6, 'Adobe SR2 data');
     592    if ($et->Options('HtmlDump')) {
     593        $et->HDump($dataPos + $start, 6, 'Adobe SR2 data');
    593594    }
    594595    # parse the SR2 directory
    595     $exifTool->ProcessDirectory(\%subdirInfo, $tagTablePtr);
     596    $et->ProcessDirectory(\%subdirInfo, $tagTablePtr);
    596597    return 1;
    597598}
     
    604605sub ProcessAdobeIFD($$$)
    605606{
    606     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     607    my ($et, $dirInfo, $tagTablePtr) = @_;
    607608    return 0 if $$dirInfo{OutFile}; # (can't write this yet)
    608609    my $dataPt = $$dirInfo{DataPt};
     
    616617    # parse the mutilated IFD.  This is similar to a TIFF IFD, except:
    617618    # - data follows directly after Count entry in IFD
    618     # - byte order of IFD entires is always big-endian, but byte order of data changes
     619    # - byte order of IFD entries is always big-endian, but byte order of data changes
    619620    SetByteOrder('MM');     # IFD structure is always big-endian
    620621    my $entries = Get16u($dataPt, $pos + 2);
    621     $exifTool->VerboseDir($dirInfo, $entries);
     622    $et->VerboseDir($dirInfo, $entries);
    622623    $pos += 4;
    623624
     
    632633        if ($format < 1 or $format > 13) {
    633634            # warn unless the IFD was just padded with zeros
    634             $format and $exifTool->Warn(
     635            $format and $et->Warn(
    635636                sprintf("Unknown format ($format) for $$dirInfo{DirName} tag 0x%x",$tagID));
    636637            return 0; # must be corrupted
     
    641642        SetByteOrder($dataOrder);   # data stored in native order
    642643        my $val = ReadValue($dataPt, $pos + 8, $formatStr, $count, $size);
    643         $exifTool->HandleTag($tagTablePtr, $tagID, $val,
     644        $et->HandleTag($tagTablePtr, $tagID, $val,
    644645            Index   => $index,
    645646            DataPt  => $dataPt,
     
    651652    }
    652653    if ($index < $entries) {
    653         $exifTool->Warn("Truncated $$dirInfo{DirName} directory");
     654        $et->Warn("Truncated $$dirInfo{DirName} directory");
    654655        return 0;
    655656    }
     
    662663# Returns: 1 on success, otherwise returns 0 and sets a Warning
    663664# Notes: data has 6 byte header (2 for byte order and 4 for original offset)
     665#        --> or 18 bytes for DNG converted from JPG by Adobe Camera Raw!
    664666sub ProcessAdobeMakN($$$)
    665667{
    666     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
     668    my ($et, $dirInfo, $tagTablePtr) = @_;
    667669    my $dataPt = $$dirInfo{DataPt};
    668670    my $start = $$dirInfo{DirStart};
     
    675677    return 0 unless SetByteOrder(substr($$dataPt, $start, 2));
    676678
    677     $exifTool->VerboseDir($dirInfo) unless $outfile;
     679    $et->VerboseDir($dirInfo) unless $outfile;
    678680    my $dataPos = $$dirInfo{DataPos};
    679     my $dirStart = $start + 6;  # pointer to maker note directory
    680     my $dirLen = $len - 6;
     681    my $hdrLen = 6;
     682
     683    # hack for extra 12 bytes in MakN header of JPEG converted to DNG by Adobe Camera Raw
     684    # (4 bytes "00 00 00 01" followed by 8 unknown bytes)
     685    $hdrLen += 12 if $len >= 18 and substr($$dataPt, $start+6, 4) eq "\0\0\0\x01";
     686
     687    my $dirStart = $start + $hdrLen;    # pointer to maker note directory
     688    my $dirLen = $len - $hdrLen;
    681689
    682690    my $hdr = substr($$dataPt, $dirStart, $dirLen < 48 ? $dirLen : 48);
    683     my $tagInfo = $exifTool->GetTagInfo($tagTablePtr, 'MakN', \$hdr);
     691    my $tagInfo = $et->GetTagInfo($tagTablePtr, 'MakN', \$hdr);
    684692    return 0 unless $tagInfo and $$tagInfo{SubDirectory};
    685693    my $subdir = $$tagInfo{SubDirectory};
     
    701709    );
    702710    # look for start of maker notes IFD
    703     my $loc = Image::ExifTool::MakerNotes::LocateIFD($exifTool,\%subdirInfo);
     711    my $loc = Image::ExifTool::MakerNotes::LocateIFD($et,\%subdirInfo);
    704712    unless (defined $loc) {
    705         $exifTool->Warn('Maker notes could not be parsed');
     713        $et->Warn('Maker notes could not be parsed');
    706714        return 0;
    707715    }
    708     if ($exifTool->Options('HtmlDump')) {
    709         $exifTool->HDump($dataPos + $start, 6, 'Adobe MakN data');
    710         $exifTool->HDump($dataPos + $dirStart, $loc, "$$tagInfo{Name} header") if $loc;
     716    if ($et->Options('HtmlDump')) {
     717        $et->HDump($dataPos + $start, $hdrLen, 'Adobe MakN data');
     718        $et->HDump($dataPos + $dirStart, $loc, "$$tagInfo{Name} header") if $loc;
    711719    }
    712720
     
    721729        # rewrite the maker notes directory
    722730        my $fixup = $subdirInfo{Fixup} = new Image::ExifTool::Fixup;
    723         my $oldChanged = $$exifTool{CHANGED};
    724         my $buff = $exifTool->WriteDirectory(\%subdirInfo, $subTable);
     731        my $oldChanged = $$et{CHANGED};
     732        my $buff = $et->WriteDirectory(\%subdirInfo, $subTable);
    725733        # nothing to do if error writing directory or nothing changed
    726         unless (defined $buff and $exifTool->{CHANGED} != $oldChanged) {
    727             $exifTool->{CHANGED} = $oldChanged;
     734        unless (defined $buff and $$et{CHANGED} != $oldChanged) {
     735            $$et{CHANGED} = $oldChanged;
    728736            return 1;
    729737        }
     
    746754        $fixup->{Shift} += $loc;    # adjust for makernotes header
    747755        $fixup->ApplyFixup(\$buff); # fix up pointer offsets
    748         # get copy of original Adobe header (6) and makernotes header ($loc)
    749         my $header = substr($$dataPt, $start, 6 + $loc);
     756        # get copy of original Adobe header (6 or 18) and makernotes header ($loc)
     757        my $header = substr($$dataPt, $start, $hdrLen + $loc);
    750758        # add Adobe and makernotes headers to new directory
    751759        $$outfile = $header . $buff;
    752760    } else {
    753761        # parse the maker notes directory
    754         $exifTool->ProcessDirectory(\%subdirInfo, $subTable, $$subdir{ProcessProc});
     762        $et->ProcessDirectory(\%subdirInfo, $subTable, $$subdir{ProcessProc});
    755763        # extract maker notes as a block if specified
    756         if ($exifTool->Options('MakerNotes') or
    757             $exifTool->{REQ_TAG_LOOKUP}->{lc($$tagInfo{Name})})
     764        if ($et->Options('MakerNotes') or
     765            $$et{REQ_TAG_LOOKUP}{lc($$tagInfo{Name})})
    758766        {
    759767            my $val;
     
    764772                $subdirInfo{DirLen}   = $dirLen;
    765773                # rebuild the maker notes to identify all offsets that require fixing up
    766                 $val = Image::ExifTool::Exif::RebuildMakerNotes($exifTool, $subTable, \%subdirInfo);
    767                 defined $val or $exifTool->Warn('Error rebuilding maker notes (may be corrupt)');
     774                $val = Image::ExifTool::Exif::RebuildMakerNotes($et, \%subdirInfo, $subTable);
     775                if (not defined $val and $dirLen > 4) {
     776                    $et->Warn('Error rebuilding maker notes (may be corrupt)');
     777                }
    768778            } else {
    769779                # extract this directory as a block if specified
     
    771781            }
    772782            $val = substr($$dataPt, 20) unless defined $val;
    773             $exifTool->FoundTag($tagInfo, $val);
     783            $et->FoundTag($tagInfo, $val);
    774784        }
    775785    }
     
    783793sub WriteAdobeStuff($$$)
    784794{
    785     my ($exifTool, $dirInfo, $tagTablePtr) = @_;
    786     $exifTool or return 1;    # allow dummy access
     795    my ($et, $dirInfo, $tagTablePtr) = @_;
     796    $et or return 1;    # allow dummy access
    787797    my $proc = $$dirInfo{Proc} || \&ProcessAdobeData;
    788798    my $buff;
    789799    $$dirInfo{OutFile} = \$buff;
    790     &$proc($exifTool, $dirInfo, $tagTablePtr) or undef $buff;
     800    &$proc($et, $dirInfo, $tagTablePtr) or undef $buff;
    791801    return $buff;
    792802}
     
    811821=head1 AUTHOR
    812822
    813 Copyright 2003-2011, Phil Harvey (phil at owl.phy.queensu.ca)
     823Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
    814824
    815825This library is free software; you can redistribute it and/or modify it
Note: See TracChangeset for help on using the changeset viewer.