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