note
vr
<p>Looks like not the OP's (i.e. [davidfilmer]) case, but, sadly, <c>libtiff</c> shipped with Strawberry Perl generates warnings as ugly pop-up GUI modal boxes, requiring user interaction to dispose. Therefore, without recompilation, the solution with [metamod://Capture::Tiny] won't work.</p>
<p></p>
<blockquote><i>
On the other hand, libtiff provides a TIFFSetWarningHandler function just for customizing error reporting. It is not exposed by the Perl wrapper, but adding that feature shouldn't be too difficult.
</i></blockquote>
<p>Ah, then I can do it:</p>
<c>
use strict;
use warnings;
use Graphics::TIFF;
my $fn = 'TIFF01.TIF'; # a file known to generate
# a warning (as shown below)
DummyTiffLogger::init();
Graphics::TIFF-> Open( $fn, 'r' )
for 1..5;
package DummyTiffLogger {
sub logMessage {
my $s = shift;
printf "message logged: <%s>\n", $s
}
use Inline C => Config => LIBS => '-ltiff';
use Inline C => <<'END_OF_C';
#define BUFSIZE 1024
void _log(char* m, char* fmt, va_list ap) {
char* buf;
int len;
SV* sv;
Newxz(buf, BUFSIZE, char);
len = vsprintf(buf, fmt, ap);
Renew(buf, len + 1, char);
sv = newSV(0);
sv_usepvn_flags(sv, buf, len, SV_SMAGIC | SV_HAS_TRAILING_NUL);
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(sv));
PUTBACK;
call_pv("DummyTiffLogger::logMessage", G_DISCARD);
FREETMPS;
LEAVE;
}
void init() { TIFFSetWarningHandler(&_log); }
END_OF_C
} # package
__END__
message logged: <Unknown field with tag 32781 (0x800d) encountered>
message logged: <Unknown field with tag 32781 (0x800d) encountered>
message logged: <Unknown field with tag 32781 (0x800d) encountered>
message logged: <Unknown field with tag 32781 (0x800d) encountered>
message logged: <Unknown field with tag 32781 (0x800d) encountered>
</c>
11121361
11121366