xref: /aosp_15_r20/external/pdfium/third_party/libtiff/tif_warning.c (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker /*
2*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 1988-1997 Sam Leffler
3*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
4*3ac0a46fSAndroid Build Coastguard Worker  *
5*3ac0a46fSAndroid Build Coastguard Worker  * Permission to use, copy, modify, distribute, and sell this software and
6*3ac0a46fSAndroid Build Coastguard Worker  * its documentation for any purpose is hereby granted without fee, provided
7*3ac0a46fSAndroid Build Coastguard Worker  * that (i) the above copyright notices and this permission notice appear in
8*3ac0a46fSAndroid Build Coastguard Worker  * all copies of the software and related documentation, and (ii) the names of
9*3ac0a46fSAndroid Build Coastguard Worker  * Sam Leffler and Silicon Graphics may not be used in any advertising or
10*3ac0a46fSAndroid Build Coastguard Worker  * publicity relating to the software without the specific, prior written
11*3ac0a46fSAndroid Build Coastguard Worker  * permission of Sam Leffler and Silicon Graphics.
12*3ac0a46fSAndroid Build Coastguard Worker  *
13*3ac0a46fSAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
14*3ac0a46fSAndroid Build Coastguard Worker  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
15*3ac0a46fSAndroid Build Coastguard Worker  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
16*3ac0a46fSAndroid Build Coastguard Worker  *
17*3ac0a46fSAndroid Build Coastguard Worker  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
18*3ac0a46fSAndroid Build Coastguard Worker  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
19*3ac0a46fSAndroid Build Coastguard Worker  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
20*3ac0a46fSAndroid Build Coastguard Worker  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
21*3ac0a46fSAndroid Build Coastguard Worker  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22*3ac0a46fSAndroid Build Coastguard Worker  * OF THIS SOFTWARE.
23*3ac0a46fSAndroid Build Coastguard Worker  */
24*3ac0a46fSAndroid Build Coastguard Worker 
25*3ac0a46fSAndroid Build Coastguard Worker /*
26*3ac0a46fSAndroid Build Coastguard Worker  * TIFF Library.
27*3ac0a46fSAndroid Build Coastguard Worker  */
28*3ac0a46fSAndroid Build Coastguard Worker #include "tiffiop.h"
29*3ac0a46fSAndroid Build Coastguard Worker 
30*3ac0a46fSAndroid Build Coastguard Worker TIFFErrorHandlerExt _TIFFwarningHandlerExt = NULL;
31*3ac0a46fSAndroid Build Coastguard Worker 
TIFFSetWarningHandler(TIFFErrorHandler handler)32*3ac0a46fSAndroid Build Coastguard Worker TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler handler)
33*3ac0a46fSAndroid Build Coastguard Worker {
34*3ac0a46fSAndroid Build Coastguard Worker     TIFFErrorHandler prev = _TIFFwarningHandler;
35*3ac0a46fSAndroid Build Coastguard Worker     _TIFFwarningHandler = handler;
36*3ac0a46fSAndroid Build Coastguard Worker     return (prev);
37*3ac0a46fSAndroid Build Coastguard Worker }
38*3ac0a46fSAndroid Build Coastguard Worker 
TIFFSetWarningHandlerExt(TIFFErrorHandlerExt handler)39*3ac0a46fSAndroid Build Coastguard Worker TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt handler)
40*3ac0a46fSAndroid Build Coastguard Worker {
41*3ac0a46fSAndroid Build Coastguard Worker     TIFFErrorHandlerExt prev = _TIFFwarningHandlerExt;
42*3ac0a46fSAndroid Build Coastguard Worker     _TIFFwarningHandlerExt = handler;
43*3ac0a46fSAndroid Build Coastguard Worker     return (prev);
44*3ac0a46fSAndroid Build Coastguard Worker }
45*3ac0a46fSAndroid Build Coastguard Worker 
TIFFWarning(const char * module,const char * fmt,...)46*3ac0a46fSAndroid Build Coastguard Worker void TIFFWarning(const char *module, const char *fmt, ...)
47*3ac0a46fSAndroid Build Coastguard Worker {
48*3ac0a46fSAndroid Build Coastguard Worker     va_list ap;
49*3ac0a46fSAndroid Build Coastguard Worker     if (_TIFFwarningHandler)
50*3ac0a46fSAndroid Build Coastguard Worker     {
51*3ac0a46fSAndroid Build Coastguard Worker         va_start(ap, fmt);
52*3ac0a46fSAndroid Build Coastguard Worker         (*_TIFFwarningHandler)(module, fmt, ap);
53*3ac0a46fSAndroid Build Coastguard Worker         va_end(ap);
54*3ac0a46fSAndroid Build Coastguard Worker     }
55*3ac0a46fSAndroid Build Coastguard Worker     if (_TIFFwarningHandlerExt)
56*3ac0a46fSAndroid Build Coastguard Worker     {
57*3ac0a46fSAndroid Build Coastguard Worker         va_start(ap, fmt);
58*3ac0a46fSAndroid Build Coastguard Worker         (*_TIFFwarningHandlerExt)(0, module, fmt, ap);
59*3ac0a46fSAndroid Build Coastguard Worker         va_end(ap);
60*3ac0a46fSAndroid Build Coastguard Worker     }
61*3ac0a46fSAndroid Build Coastguard Worker }
62*3ac0a46fSAndroid Build Coastguard Worker 
TIFFWarningExt(thandle_t fd,const char * module,const char * fmt,...)63*3ac0a46fSAndroid Build Coastguard Worker void TIFFWarningExt(thandle_t fd, const char *module, const char *fmt, ...)
64*3ac0a46fSAndroid Build Coastguard Worker {
65*3ac0a46fSAndroid Build Coastguard Worker     va_list ap;
66*3ac0a46fSAndroid Build Coastguard Worker     if (_TIFFwarningHandler)
67*3ac0a46fSAndroid Build Coastguard Worker     {
68*3ac0a46fSAndroid Build Coastguard Worker         va_start(ap, fmt);
69*3ac0a46fSAndroid Build Coastguard Worker         (*_TIFFwarningHandler)(module, fmt, ap);
70*3ac0a46fSAndroid Build Coastguard Worker         va_end(ap);
71*3ac0a46fSAndroid Build Coastguard Worker     }
72*3ac0a46fSAndroid Build Coastguard Worker     if (_TIFFwarningHandlerExt)
73*3ac0a46fSAndroid Build Coastguard Worker     {
74*3ac0a46fSAndroid Build Coastguard Worker         va_start(ap, fmt);
75*3ac0a46fSAndroid Build Coastguard Worker         (*_TIFFwarningHandlerExt)(fd, module, fmt, ap);
76*3ac0a46fSAndroid Build Coastguard Worker         va_end(ap);
77*3ac0a46fSAndroid Build Coastguard Worker     }
78*3ac0a46fSAndroid Build Coastguard Worker }
79*3ac0a46fSAndroid Build Coastguard Worker 
TIFFWarningExtR(TIFF * tif,const char * module,const char * fmt,...)80*3ac0a46fSAndroid Build Coastguard Worker void TIFFWarningExtR(TIFF *tif, const char *module, const char *fmt, ...)
81*3ac0a46fSAndroid Build Coastguard Worker {
82*3ac0a46fSAndroid Build Coastguard Worker     va_list ap;
83*3ac0a46fSAndroid Build Coastguard Worker     if (tif && tif->tif_warnhandler)
84*3ac0a46fSAndroid Build Coastguard Worker     {
85*3ac0a46fSAndroid Build Coastguard Worker         va_start(ap, fmt);
86*3ac0a46fSAndroid Build Coastguard Worker         int stop = (*tif->tif_warnhandler)(tif, tif->tif_warnhandler_user_data,
87*3ac0a46fSAndroid Build Coastguard Worker                                            module, fmt, ap);
88*3ac0a46fSAndroid Build Coastguard Worker         va_end(ap);
89*3ac0a46fSAndroid Build Coastguard Worker         if (stop)
90*3ac0a46fSAndroid Build Coastguard Worker             return;
91*3ac0a46fSAndroid Build Coastguard Worker     }
92*3ac0a46fSAndroid Build Coastguard Worker     if (_TIFFwarningHandler)
93*3ac0a46fSAndroid Build Coastguard Worker     {
94*3ac0a46fSAndroid Build Coastguard Worker         va_start(ap, fmt);
95*3ac0a46fSAndroid Build Coastguard Worker         (*_TIFFwarningHandler)(module, fmt, ap);
96*3ac0a46fSAndroid Build Coastguard Worker         va_end(ap);
97*3ac0a46fSAndroid Build Coastguard Worker     }
98*3ac0a46fSAndroid Build Coastguard Worker     if (_TIFFwarningHandlerExt)
99*3ac0a46fSAndroid Build Coastguard Worker     {
100*3ac0a46fSAndroid Build Coastguard Worker         va_start(ap, fmt);
101*3ac0a46fSAndroid Build Coastguard Worker         (*_TIFFwarningHandlerExt)(tif ? tif->tif_clientdata : 0, module, fmt,
102*3ac0a46fSAndroid Build Coastguard Worker                                   ap);
103*3ac0a46fSAndroid Build Coastguard Worker         va_end(ap);
104*3ac0a46fSAndroid Build Coastguard Worker     }
105*3ac0a46fSAndroid Build Coastguard Worker }
106