1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 /* dbus-sysdeps-wince-glue.h Emulation of system/libc features for Windows CE (internal to D-Bus implementation) 3 * 4 * Copyright (C) 2002, 2003 Red Hat, Inc. 5 * Copyright (C) 2003 CodeFactory AB 6 * 7 * Licensed under the Academic Free License version 2.1 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 22 * 23 */ 24 25 #ifndef DBUS_SYSDEPS_WINCE_GLUE_H 26 #define DBUS_SYSDEPS_WINCE_GLUE_H 27 28 #include <time.h> 29 #include <stdarg.h> 30 31 /* For getaddrinfo, configure/cmake defined _WIN32_WCE to something >= 0x0401. */ 32 #include <windows.h> 33 #undef interface 34 35 DBUS_BEGIN_DECLS 36 37 /* shlobj.h declares these only for _WIN32_IE that we don't want to define. 38 In any case, with mingw32ce we only get a SHGetSpecialFolderPath. */ 39 #define SHGetSpecialFolderPathW SHGetSpecialFolderPath 40 BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); 41 BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL); 42 43 #ifndef TLS_OUT_OF_INDEXES 44 #define TLS_OUT_OF_INDEXES 0xffffffff 45 #endif 46 47 48 /* Seriously. Windows CE does not have errno. Don't you hate it when 49 that happens? */ 50 #define errno ((int)GetLastError ()) 51 52 #define ENOENT ERROR_FILE_NOT_FOUND 53 #define EMFILE ERROR_TOO_MANY_OPEN_FILES 54 #define EACCES ERROR_ACCESS_DENIED 55 #define EBADF ERROR_INVALID_HANDLE 56 #define ENOMEM ERROR_NOT_ENOUGH_MEMORY 57 #define EXDEV ERROR_NOT_SAME_DEVICE 58 #define ENFILE ERROR_NO_MORE_FILES 59 #define EROFS ERROR_WRITE_PROTECT 60 #define ENOLCK ERROR_SHARING_BUFFER_EXCEEDED 61 #define ENOSYS ERROR_NOT_SUPPORTED 62 #define EEXIST ERROR_FILE_EXISTS 63 #define EPERM ERROR_CANNOT_MAKE 64 #define EINVAL ERROR_INVALID_PARAMETER 65 #define EINTR ERROR_INVALID_AT_INTERRUPT_TIME 66 #define EPIPE ERROR_BROKEN_PIPE 67 #define ENOSPC ERROR_DISK_FULL 68 #define ENOTEMPTY ERROR_DIR_NOT_EMPTY 69 #define EBUSY ERROR_BUSY 70 #define ENAMETOOLONG ERROR_FILENAME_EXCED_RANGE 71 #define EAGAIN ERROR_MORE_DATA 72 #define ENOTDIR ERROR_DIRECTORY 73 #define ERANGE ERROR_ARITHMETIC_OVERFLOW 74 #define ENXIO ERROR_FILE_INVALID 75 #define EFAULT ERROR_PROCESS_ABORTED 76 #define EIO ERROR_IO_DEVICE 77 #define EDEADLOCK ERROR_POSSIBLE_DEADLOCK 78 #define ENODEV ERROR_BAD_DEVICE 79 80 /* Windows CE is missing more stuff that is pretty standard. */ 81 82 #define strdup _strdup 83 #define stricmp _stricmp 84 #define strnicmp _strnicmp 85 86 #define environ _dbus_wince_environ 87 extern char *environ[]; 88 89 #define getenv _dbus_wince_getenv 90 char *getenv (const char *name); 91 92 #define putenv _dbus_wince_putenv 93 int putenv (char *str); 94 95 #define clock _dbus_wince_clock 96 clock_t clock (void); 97 98 #define abort _dbus_wince_abort 99 void abort (void); 100 101 #define _S_IFMT 0170000 /* file type mask */ 102 #define _S_IFDIR 0040000 /* directory */ 103 #define _S_IFCHR 0020000 /* character special */ 104 #define _S_IFIFO 0010000 /* pipe */ 105 #define _S_IFREG 0100000 /* regular */ 106 #define _S_IREAD 0000400 /* read permission, owner */ 107 #define _S_IWRITE 0000200 /* write permission, owner */ 108 #define _S_IEXEC 0000100 /* execute/search permission, owner */ 109 110 #ifndef __OFF_T_DEFINED 111 typedef long off_t; 112 #define __OFF_T_DEFINED 113 #endif 114 #ifndef _INTPTR_T_DEFINED 115 typedef int intptr_t; 116 #define _INTPTR_T_DEFINED 117 #endif 118 #ifndef _UINTPTR_T_DEFINED 119 typedef unsigned int uintptr_t; 120 #define _UINTPTR_T_DEFINED 121 #endif 122 123 #ifndef _MAX_FNAME 124 #define _MAX_FNAME 256 125 #endif 126 127 #ifndef _IOFBF 128 #define _IOFBF 0 129 #endif 130 #ifndef _IOLBF 131 #define _IOLBF 1 132 #endif 133 #ifndef _IONBF 134 #define _IONBF 2 135 #endif 136 137 138 /* Windows CE is missing some Windows functions that we want. */ 139 140 #define GetSystemTimeAsFileTime _dbus_wince_GetSystemTimeAsFileTime 141 void GetSystemTimeAsFileTime (LPFILETIME ftp); 142 143 #define _mbsrchr _dbus_wince_mbsrchr 144 unsigned char* _mbsrchr (const unsigned char*, unsigned int); 145 146 #define OpenFileMappingA _dbus_wince_OpenFileMappingA 147 HANDLE OpenFileMappingA(DWORD,BOOL,LPCSTR); 148 149 #define MoveFileExA _dbus_wince_MoveFileExA 150 BOOL MoveFileExA(LPCSTR,LPCSTR,DWORD); 151 #ifndef MOVEFILE_REPLACE_EXISTING 152 #define MOVEFILE_REPLACE_EXISTING 0x00000001 153 #endif 154 155 #define SetHandleInformation _dbus_wince_SetHandleInformation 156 BOOL SetHandleInformation(HANDLE,DWORD,DWORD); 157 #ifndef HANDLE_FLAG_INHERIT 158 #define HANDLE_FLAG_INHERIT 0x01 159 #endif 160 #ifndef HANDLE_FLAG_PROTECT 161 #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02 162 #endif 163 164 #define SearchPathA _dbus_wince_SearchPathA 165 DWORD SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*); 166 167 /* Instead of emulating all functions needed for this, we replace the 168 whole thing. */ 169 dbus_bool_t _dbus_getsid(char **sid); 170 171 172 #define LookupAccountNameW _dbus_wince_LookupAccountNameW 173 BOOL LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE); 174 175 #define IsValidSid _dbus_wince_IsValidSid 176 BOOL IsValidSid(PSID); 177 178 179 /* Windows CE does only have the UNICODE interfaces (FooW), but we 180 want to use the ASCII interfaces (FooA). We implement them 181 here. */ 182 183 #define CreateFileA _dbus_wince_CreateFileA 184 HANDLE CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE); 185 186 #define DeleteFileA _dbus_wince_DeleteFileA 187 BOOL DeleteFileA(LPCSTR); 188 189 #define GetFileAttributesA _dbus_wince_GetFileAttributesA 190 DWORD GetFileAttributesA(LPCSTR); 191 192 #define GetFileAttributesExA _dbus_wince_GetFileAttributesExA 193 BOOL GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,PVOID); 194 195 #define CreateFileMappingA _dbus_wince_CreateFileMappingA 196 HANDLE CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR); 197 198 #define CreateDirectoryA _dbus_wince_CreateDirectoryA 199 BOOL CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES); 200 201 #define RemoveDirectoryA _dbus_wince_RemoveDirectoryA 202 BOOL RemoveDirectoryA(LPCSTR); 203 204 #define FindFirstFileA _dbus_wince_FindFirstFileA 205 HANDLE FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA); 206 207 #define FindNextFileA _dbus_wince_FindNextFileA 208 BOOL FindNextFileA(HANDLE,LPWIN32_FIND_DATAA); 209 210 #define CreateMutexA _dbus_wince_CreateMutexA 211 HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR); 212 213 #define CreateProcessA _dbus_wince_CreateProcessA 214 BOOL CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION); 215 #ifndef CREATE_NO_WINDOW 216 #define CREATE_NO_WINDOW 0x08000000 217 #endif 218 219 220 #define RegOpenKeyExA _dbus_wince_RegOpenKeyExA 221 LONG RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY); 222 223 #define RegQueryValueExA _dbus_wince_RegQueryValueExA 224 LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); 225 226 227 #define FormatMessageA _dbus_wince_FormatMessageA 228 DWORD FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*); 229 230 #define GetModuleFileNameA _dbus_wince_GetModuleFileNameA 231 DWORD GetModuleFileNameA(HINSTANCE,LPSTR,DWORD); 232 233 #define GetTempPathA _dbus_wince_GetTempPathA 234 DWORD GetTempPathA(DWORD,LPSTR); 235 236 #define SHGetSpecialFolderPathA _dbus_wince_SHGetSpecialFolderPathA 237 BOOL SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); 238 239 240 #define OutputDebugStringA _dbus_wince_OutputDebugStringA 241 void OutputDebugStringA(LPCSTR); 242 243 244 DBUS_END_DECLS 245 246 #endif /* DBUS_SYSDEPS_WINCE_GLUE_H */ 247