1 /*************************************************************************/
2 /*                                                                       */
3 /*                  Language Technologies Institute                      */
4 /*                     Carnegie Mellon University                        */
5 /*                        Copyright (c) 1999                             */
6 /*                        All Rights Reserved.                           */
7 /*                                                                       */
8 /*  Permission is hereby granted, free of charge, to use and distribute  */
9 /*  this software and its documentation without restriction, including   */
10 /*  without limitation the rights to use, copy, modify, merge, publish,  */
11 /*  distribute, sublicense, and/or sell copies of this work, and to      */
12 /*  permit persons to whom this work is furnished to do so, subject to   */
13 /*  the following conditions:                                            */
14 /*   1. The code must retain the above copyright notice, this list of    */
15 /*      conditions and the following disclaimer.                         */
16 /*   2. Any modifications must be clearly marked as such.                */
17 /*   3. Original authors' names are not deleted.                         */
18 /*   4. The authors' names are not used to endorse or promote products   */
19 /*      derived from this software without specific prior written        */
20 /*      permission.                                                      */
21 /*                                                                       */
22 /*  CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK         */
23 /*  DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING      */
24 /*  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT   */
25 /*  SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE      */
26 /*  FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES    */
27 /*  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN   */
28 /*  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,          */
29 /*  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF       */
30 /*  THIS SOFTWARE.                                                       */
31 /*                                                                       */
32 /*************************************************************************/
33 /*             Author:  Alan W Black (awb@cs.cmu.edu)                    */
34 /*               Date:  December 1999                                    */
35 /*************************************************************************/
36 /*                                                                       */
37 /*   Error mechanism                                                     */
38 /*                                                                       */
39 /*************************************************************************/
40 #include <stdlib.h>
41 #include <stdarg.h>
42 #include "cst_file.h"
43 #include "cst_error.h"
44 
45 #ifdef UNDER_CE
46 
47 #include <winbase.h>
48 #include <stdlib.h>
49 #include "cst_alloc.h"
50 
cst_errmsg(const char * fmt,...)51 int cst_errmsg(const char *fmt, ...)
52 {
53 #ifdef DEBUG
54     wchar_t wmsg[256];
55     wchar_t *wfmt;
56     size_t len;
57     va_list args;
58 
59     len = mbstowcs(NULL,fmt,0) + 1;
60     wfmt = cst_alloc(wchar_t,len);
61     mbstowcs(wfmt,fmt,len);
62 
63     va_start(args,fmt);
64     _vsnwprintf(wmsg,256,wfmt,args);
65     va_end(args);
66 
67     wmsg[255]=L'\0';
68     cst_free(wfmt);
69     MessageBoxW(0,wmsg,L"Error",0);
70 #endif
71     return 0;
72 }
73 jmp_buf *cst_errjmp = 0;
74 
75 #elif defined(__palmos__)
76 #ifdef __ARM_ARCH_4T__
77 /* We only support throwing errors in ARM land */
78 jmp_buf *cst_errjmp = 0;
79 #endif
80 
81 char cst_error_msg[600];
cst_errmsg(const char * fmt,...)82 int cst_errmsg(const char *fmt, ...)
83 {
84     va_list args;
85     int count;
86 
87     va_start(args,fmt);
88     count = cst_vsprintf(cst_error_msg,fmt,args);
89     va_end(args);
90     return 0;
91 }
92 #else
93 
94 jmp_buf *cst_errjmp = 0;
95 
cst_errmsg(const char * fmt,...)96 int cst_errmsg(const char *fmt, ...)
97 {
98     va_list args;
99     int rv;
100 
101     va_start(args, fmt);
102     rv = vfprintf(stderr, fmt, args);
103     va_end(args);
104 
105     return rv;
106 }
107 
108 #endif
109