xref: /freebsd/crypto/krb5/src/include/win-mac.h (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /*
3  * This file is now only used on Windows
4  */
5 
6 /*
7  * type functions split out of here to make things look nicer in the
8  * various include files which need these definitions, as well as in
9  * the util/ directories.
10  */
11 
12 #ifndef _KRB5_WIN_MAC_H
13 #define _KRB5_WIN_MAC_H
14 
15 #ifdef _WIN32
16 #define ID_READ_PWD_DIALOG  10000
17 #define ID_READ_PWD_PROMPT  10001
18 #define ID_READ_PWD_PROMPT2 10002
19 #define ID_READ_PWD_PWD     10003
20 
21 #ifdef RES_ONLY
22 
23 #define APSTUDIO_HIDDEN_SYMBOLS
24 #include <windows.h>
25 
26 #else /* ! RES_ONLY */
27 #include <stdlib.h>
28 #ifdef DEBUG
29 #include <crtdbg.h>
30 #endif
31 
32 /* To ensure backward compatibility of the ABI use 32-bit time_t on
33  * 32-bit Windows.
34  */
35 #ifdef _KRB5_INT_H
36 #ifdef KRB5_GENERAL__
37 #error krb5.h included before k5-int.h
38 #endif /* KRB5_GENERAL__ */
39 #if _INTEGRAL_MAX_BITS >= 64 && _MSC_VER >= 1400 && !defined(_WIN64) && !defined(_USE_32BIT_TIME_T)
40 #if defined(_TIME_T_DEFINED) || defined(_INC_IO) || defined(_INC_TIME) || defined(_INC_WCHAR)
41 #error time_t has been defined as a 64-bit integer which is incompatible with Kerberos on this platform.
42 #endif /* _TIME_T_DEFINED */
43 #define _USE_32BIT_TIME_T
44 #endif
45 #endif
46 
47 #define SIZEOF_INT      4
48 #define SIZEOF_SHORT    2
49 #define SIZEOF_LONG     4
50 
51 #include <windows.h>
52 #include <limits.h>
53 
54 #ifndef SIZE_MAX    /* in case Microsoft defines max size of size_t */
55 #ifdef  MAX_SIZE    /* Microsoft defines MAX_SIZE as max size of size_t */
56 #define SIZE_MAX MAX_SIZE
57 #else
58 #define SIZE_MAX UINT_MAX
59 #endif
60 #endif
61 
62 #ifndef KRB5_CALLCONV
63 #  define KRB5_CALLCONV __stdcall
64 #  define KRB5_CALLCONV_C __cdecl
65 
66 /*
67  * Use this to mark an incorrect calling convention that has been
68  * "immortalized" because it was incorrectly exported in a previous
69  * release.
70  */
71 
72 #  define KRB5_CALLCONV_WRONG KRB5_CALLCONV_C
73 
74 #endif /* !KRB5_CALLCONV */
75 
76 #ifndef KRB5_SYSTYPES__
77 #define KRB5_SYSTYPES__
78 #include <sys/types.h>
79 typedef unsigned long    u_long;      /* Not part of sys/types.h on the pc */
80 typedef unsigned int     u_int;
81 typedef unsigned short   u_short;
82 typedef unsigned char    u_char;
83 typedef unsigned short   uint16_t;
84 typedef short            int16_t;
85 typedef unsigned int     uint32_t;
86 typedef int              int32_t;
87 #if _INTEGRAL_MAX_BITS >= 64
88 typedef unsigned __int64 uint64_t;
89 typedef __int64          int64_t;
90 #endif
91 #ifndef SSIZE_T_DEFINED
92 #ifdef ssize_t
93 #undef ssize_t
94 #endif
95 #ifdef _WIN64
96 typedef __int64          ssize_t;
97 #else
98 typedef _W64 int         ssize_t;
99 #endif
100 #define SSIZE_T_DEFINED
101 #endif
102 #endif /* KRB5_SYSTYPES__ */
103 
104 #ifndef MAXHOSTNAMELEN
105 #define MAXHOSTNAMELEN  512
106 #endif
107 
108 #ifndef MAXPATHLEN
109 #define MAXPATHLEN      256            /* Also for Windows temp files */
110 #endif
111 
112 #ifdef KRB5_PRIVATE
113 #define HAVE_NETINET_IN_H
114 #define MSDOS_FILESYSTEM
115 #define HAVE_STRING_H
116 #define HAVE_SRAND
117 #define HAVE_ERRNO
118 #define HAVE_STRDUP
119 #define HAVE_GETADDRINFO
120 #define HAVE_GETNAMEINFO
121 #define NO_USERID
122 #define NO_PASSWORD
123 #define HAVE_STRERROR
124 #define SYS_ERRLIST_DECLARED
125 #if _MSC_VER >= 1900
126 #define HAVE_VSNPRINTF
127 #endif
128 /* Visual Studio 2012 errors out when we macroize keywords in C++ mode */
129 #ifndef __cplusplus
130 #define inline __inline
131 #endif
132 #define NEED_INSIXADDR_ANY
133 #define ENABLE_THREADS
134 #endif
135 
136 #define WM_KERBEROS5_CHANGED "Kerberos5 Changed"
137 #ifdef KRB4
138 #define WM_KERBEROS_CHANGED "Kerberos Changed"
139 #endif
140 
141 /* Kerberos Windows initialization file */
142 #define KERBEROS_INI    "kerberos.ini"
143 #ifdef CYGNUS
144 #define KERBEROS_HLP    "kerbnet.hlp"
145 #else
146 #define KERBEROS_HLP    "krb5clnt.hlp"
147 #endif
148 #define INI_DEFAULTS    "Defaults"
149 #define   INI_USER        "User"          /* Default user */
150 #define   INI_INSTANCE    "Instance"      /* Default instance */
151 #define   INI_REALM       "Realm"         /* Default realm */
152 #define   INI_POSITION    "Position"
153 #define   INI_OPTIONS     "Options"
154 #define   INI_DURATION    "Duration"   /* Ticket duration in minutes */
155 #define INI_EXPIRATION  "Expiration" /* Action on expiration (alert or beep) */
156 #define   INI_ALERT       "Alert"
157 #define   INI_BEEP        "Beep"
158 #define   INI_FILES       "Files"
159 #ifdef KRB4
160 #define   INI_KRB_CONF    "krb.conf"     /* Location of krb.conf file */
161 #define   DEF_KRB_CONF    "krb.conf"      /* Default name for krb.conf file */
162 #else
163 #define INI_KRB5_CONF   "krb5.ini"      /* From k5-config.h */
164 #define INI_KRB_CONF    INI_KRB5_CONF   /* Location of krb.conf file */
165 #define DEF_KRB_CONF    INI_KRB5_CONF   /* Default name for krb.conf file */
166 #define INI_TICKETOPTS  "TicketOptions" /* Ticket options */
167 #define   INI_FORWARDABLE  "Forwardable" /* get forwardable tickets */
168 #define INI_KRB_CCACHE  "krb5cc"        /* From k5-config.h */
169 #endif
170 #define INI_KRB_REALMS  "krb.realms"    /* Location of krb.realms file */
171 #define DEF_KRB_REALMS  "krb.realms"    /* Default name for krb.realms file */
172 #define INI_RECENT_LOGINS "Recent Logins"
173 #define INI_LOGIN       "Login"
174 
175 #ifdef KRB5_PRIVATE
176 #define HAS_VOID_TYPE
177 #define HAVE_STDARG_H
178 #define HAVE_SYS_TYPES_H
179 #define HAVE_STDLIB_H
180 #endif
181 
182 /* Ugly. Microsoft, in stdc mode, doesn't support the low-level i/o
183  * routines directly. Rather, they only export the _<function> version.
184  * The following defines works around this problem.
185  */
186 #include <sys\types.h>
187 #include <sys\stat.h>
188 #include <fcntl.h>
189 #include <io.h>
190 #include <process.h>
191 #include <wincrypt.h>
192 
193 #ifdef NEED_SYSERROR
194 /* Only needed by util/et/error_message.c but let's keep the source clean */
195 #define sys_nerr        _sys_nerr
196 #define sys_errlist     _sys_errlist
197 #endif
198 
199 /*
200  * Functions with slightly different names on the PC
201  */
202 #ifndef strcasecmp
203 #define strcasecmp   _stricmp
204 #endif
205 #ifndef strncasecmp
206 #define strncasecmp  _strnicmp
207 #endif
208 
209 /* VS2005 has deprecated strdup */
210 #ifndef strdup
211 #define strdup _strdup
212 #endif
213 
214 /* Windows has its own name for reentrant strtok. */
215 #define strtok_r strtok_s
216 
217 HINSTANCE get_lib_instance(void);
218 
219 #define GETSOCKNAME_ARG3_TYPE   size_t
220 #define GETPEERNAME_ARG3_TYPE   GETSOCKNAME_ARG3_TYPE
221 
222 #endif /* !RES_ONLY */
223 
224 #endif /* _WIN32 */
225 
226 #define THREEPARAMOPEN(x,y,z) open(x,y,z)
227 
228 #define DEFKTNAME "FILE:%{WINDOWS}\\krb5kt"
229 #define DEFCKTNAME "FILE:%{WINDOWS}\\krb5clientkt"
230 
231 #ifndef KRB5_CALLCONV
232 #define KRB5_CALLCONV
233 #endif
234 
235 #ifndef KRB5_CALLCONV_C
236 #define KRB5_CALLCONV_C
237 #endif
238 
239 #endif /* _KRB5_WIN_MAC_H */
240