blob: 5468de55f21a4aee6fae8de2cd648a7d9b5831d2 [file] [log] [blame]
Bo Xufdc00a72014-10-28 23:03:33 -07001/*
2 * Copyright (c) 1988-1997 Sam Leffler
3 * Copyright (c) 1991-1997 Silicon Graphics, Inc.
4 *
Lei Zhanga30e6562023-02-01 17:57:40 +00005 * Permission to use, copy, modify, distribute, and sell this software and
Bo Xufdc00a72014-10-28 23:03:33 -07006 * 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.
Lei Zhanga30e6562023-02-01 17:57:40 +000012 *
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 *
Bo Xufdc00a72014-10-28 23:03:33 -070017 * 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,
Lei Zhanga30e6562023-02-01 17:57:40 +000020 * 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
Bo Xufdc00a72014-10-28 23:03:33 -070022 * OF THIS SOFTWARE.
23 */
24
25/*
26 * TIFF Library.
27 */
Bo Xufdc00a72014-10-28 23:03:33 -070028#include "tiffiop.h"
29
Lei Zhang9c2c87d2016-01-07 15:52:44 -080030TIFFErrorHandlerExt _TIFFwarningHandlerExt = NULL;
Bo Xufdc00a72014-10-28 23:03:33 -070031
Lei Zhanga30e6562023-02-01 17:57:40 +000032TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler handler)
Bo Xufdc00a72014-10-28 23:03:33 -070033{
Lei Zhanga30e6562023-02-01 17:57:40 +000034 TIFFErrorHandler prev = _TIFFwarningHandler;
35 _TIFFwarningHandler = handler;
36 return (prev);
Bo Xufdc00a72014-10-28 23:03:33 -070037}
38
Lei Zhanga30e6562023-02-01 17:57:40 +000039TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt handler)
Bo Xufdc00a72014-10-28 23:03:33 -070040{
Lei Zhanga30e6562023-02-01 17:57:40 +000041 TIFFErrorHandlerExt prev = _TIFFwarningHandlerExt;
42 _TIFFwarningHandlerExt = handler;
43 return (prev);
Bo Xufdc00a72014-10-28 23:03:33 -070044}
45
Lei Zhanga30e6562023-02-01 17:57:40 +000046void TIFFWarning(const char *module, const char *fmt, ...)
Bo Xufdc00a72014-10-28 23:03:33 -070047{
Lei Zhanga30e6562023-02-01 17:57:40 +000048 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 }
Bo Xufdc00a72014-10-28 23:03:33 -070061}
62
Lei Zhanga30e6562023-02-01 17:57:40 +000063void TIFFWarningExt(thandle_t fd, const char *module, const char *fmt, ...)
Bo Xufdc00a72014-10-28 23:03:33 -070064{
Lei Zhanga30e6562023-02-01 17:57:40 +000065 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 }
Bo Xufdc00a72014-10-28 23:03:33 -070078}
79
Lei Zhanga30e6562023-02-01 17:57:40 +000080void 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}