Release 980913
[wine/wine-kai.git] / misc / error.c
blob4f32d0b786c35143846796395708d119753d547b
1 /*
2 * Log internal errors
4 * Copyright 1997 Andrew Taylor
5 */
7 #include <stdlib.h>
8 #include <string.h>
10 #include "windows.h"
11 #include "debug.h"
13 #define ErrorString(manifest) { manifest, # manifest }
15 static const struct {
16 int constant;
17 const char *name;
18 } ErrorStrings[] = {
20 ErrorString(ERR_GALLOC),
21 ErrorString(ERR_GREALLOC),
22 ErrorString(ERR_GLOCK),
23 ErrorString(ERR_LALLOC),
24 ErrorString(ERR_LREALLOC),
25 ErrorString(ERR_LLOCK),
26 ErrorString(ERR_ALLOCRES),
27 ErrorString(ERR_LOCKRES),
28 ErrorString(ERR_LOADMODULE),
29 ErrorString(ERR_CREATEDLG),
30 ErrorString(ERR_CREATEDLG2),
31 ErrorString(ERR_REGISTERCLASS),
32 ErrorString(ERR_DCBUSY),
33 ErrorString(ERR_CREATEWND),
34 ErrorString(ERR_STRUCEXTRA),
35 ErrorString(ERR_LOADSTR),
36 ErrorString(ERR_LOADMENU),
37 ErrorString(ERR_NESTEDBEGINPAINT),
38 ErrorString(ERR_BADINDEX),
39 ErrorString(ERR_CREATEMENU),
40 ErrorString(ERR_CREATEDC),
41 ErrorString(ERR_CREATEMETA),
42 ErrorString(ERR_DELOBJSELECTED),
43 ErrorString(ERR_SELBITMAP)
46 static const struct {
47 int constant;
48 const char *name;
49 } ParamErrorStrings[] = {
51 ErrorString(ERR_BAD_VALUE),
52 ErrorString(ERR_BAD_FLAGS),
53 ErrorString(ERR_BAD_INDEX),
54 ErrorString(ERR_BAD_DVALUE),
55 ErrorString(ERR_BAD_DFLAGS),
56 ErrorString(ERR_BAD_DINDEX),
57 ErrorString(ERR_BAD_PTR),
58 ErrorString(ERR_BAD_FUNC_PTR),
59 ErrorString(ERR_BAD_SELECTOR),
60 ErrorString(ERR_BAD_STRING_PTR),
61 ErrorString(ERR_BAD_HANDLE),
62 ErrorString(ERR_BAD_HINSTANCE),
63 ErrorString(ERR_BAD_HMODULE),
64 ErrorString(ERR_BAD_GLOBAL_HANDLE),
65 ErrorString(ERR_BAD_LOCAL_HANDLE),
66 ErrorString(ERR_BAD_ATOM),
67 ErrorString(ERR_BAD_HFILE),
68 ErrorString(ERR_BAD_HWND),
69 ErrorString(ERR_BAD_HMENU),
70 ErrorString(ERR_BAD_HCURSOR),
71 ErrorString(ERR_BAD_HICON),
72 ErrorString(ERR_BAD_HDWP),
73 ErrorString(ERR_BAD_CID),
74 ErrorString(ERR_BAD_HDRVR),
75 ErrorString(ERR_BAD_COORDS),
76 ErrorString(ERR_BAD_GDI_OBJECT),
77 ErrorString(ERR_BAD_HDC),
78 ErrorString(ERR_BAD_HPEN),
79 ErrorString(ERR_BAD_HFONT),
80 ErrorString(ERR_BAD_HBRUSH),
81 ErrorString(ERR_BAD_HBITMAP),
82 ErrorString(ERR_BAD_HRGN),
83 ErrorString(ERR_BAD_HPALETTE),
84 ErrorString(ERR_BAD_HMETAFILE)
87 #undef ErrorString
88 #define ErrorStringCount (sizeof(ErrorStrings) / sizeof(ErrorStrings[0]))
89 #define ParamErrorStringCount (sizeof(ParamErrorStrings) / sizeof(ParamErrorStrings[0]))
91 /***********************************************************************
92 * GetErrorString (internal)
94 static const char *GetErrorString(UINT16 uErr)
96 static char buffer[80];
97 int i;
99 for (i = 0; i < ErrorStringCount; i++) {
100 if (uErr == ErrorStrings[i].constant)
101 return ErrorStrings[i].name;
104 sprintf(buffer, "%x", uErr);
105 return buffer;
109 /***********************************************************************
110 * GetParamErrorString (internal)
112 static const char *GetParamErrorString(UINT16 uErr) {
113 static char buffer[80];
115 if (uErr & ERR_WARNING) {
116 strcpy(buffer, "ERR_WARNING | ");
117 uErr &= ~ERR_WARNING;
118 } else
119 buffer[0] = '\0';
122 int i;
124 for (i = 0; i < ParamErrorStringCount; i++) {
125 if (uErr == ParamErrorStrings[i].constant) {
126 strcat(buffer, ParamErrorStrings[i].name);
127 return buffer;
132 sprintf(buffer + strlen(buffer), "%x", uErr);
133 return buffer;
137 /***********************************************************************
138 * LogError (KERNEL.324)
140 VOID WINAPI LogError(UINT16 uErr, LPVOID lpvInfo)
142 MSG("(%s, %p)\n", GetErrorString(uErr), lpvInfo);
146 /***********************************************************************
147 * LogParamError (KERNEL.325)
149 void WINAPI LogParamError(UINT16 uErr, FARPROC16 lpfn, LPVOID lpvParam)
151 /* FIXME: is it possible to get the module name/function
152 * from the lpfn param?
154 MSG("(%s, %p, %p)\n", GetParamErrorString(uErr), lpfn, lpvParam);