1 /*  WINERR.C
2 
3     Jason Hunter
4     8/2/94
5     DCNS/IS MIT
6 
7 
8   Contains the error functions for leash and kerberos.  Prints out keen windows
9   error messages in english.
10 
11 */
12 
13 #include <stdio.h>
14 
15 // Private Include files
16 #include "leashdll.h"
17 #include <leashwin.h>
18 
19 // Global Variables.
20 static long lsh_errno;
21 static char *err_context;       /* error context */
22 extern int (*Lcom_err)(LPSTR,long,LPSTR,...);
23 extern LPSTR (*Lerror_message)(long);
24 extern LPSTR (*Lerror_table_name)(long);
25 
26 #ifdef WIN16
27 #define UNDERSCORE "_"
28 #else
29 #define UNDERSCORE
30 #endif
31 
GetRootParent(HWND Child)32 HWND GetRootParent (HWND Child)
33 {
34     HWND Last;
35     while (Child)
36     {
37         Last = Child;
38         Child = GetParent (Child);
39     }
40     return Last;
41 }
42 
43 
err_describe(LPSTR buf,long code)44 LPSTR err_describe(LPSTR buf, long code)
45 {
46     LPSTR cp, com_err_msg;
47     int offset;
48     long table_num;
49     char *etype;
50 
51     offset = (int) (code & 255);
52     table_num = code - offset;
53     com_err_msg = Lerror_message(code);
54 
55     lstrcpy(buf, com_err_msg);
56     return buf;
57 
58 
59 ////Is this needed at all after the return above?
60     cp = buf;
61     if(com_err_msg != buf)
62         lstrcpy(buf, com_err_msg);
63     cp = buf + lstrlen(buf);
64     *cp++ = '\n';
65     etype = Lerror_table_name(table_num);
66     wsprintf((LPSTR) cp, (LPSTR) "(%s error %d"
67 #ifdef DEBUG_COM_ERR
68              " (absolute error %ld)"
69 #endif
70              ")", etype, offset
71              //")\nPress F1 for help on this error.", etype, offset
72 #ifdef DEBUG_COM_ERR
73              , code
74 #endif
75         );
76 
77     return (LPSTR)buf;
78 }
79