| /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ |
| /* dbus-sysdeps-wince-glue.h Emulation of system/libc features for Windows CE (internal to D-Bus implementation) |
| * |
| * Copyright (C) 2002, 2003 Red Hat, Inc. |
| * Copyright (C) 2003 CodeFactory AB |
| * |
| * Licensed under the Academic Free License version 2.1 |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| * |
| */ |
| |
| #ifndef DBUS_SYSDEPS_WINCE_GLUE_H |
| #define DBUS_SYSDEPS_WINCE_GLUE_H |
| |
| #include <time.h> |
| #include <stdarg.h> |
| |
| /* For getaddrinfo, configure/cmake defined _WIN32_WCE to something >= 0x0401. */ |
| #include <windows.h> |
| #undef interface |
| |
| DBUS_BEGIN_DECLS |
| |
| /* shlobj.h declares these only for _WIN32_IE that we don't want to define. |
| In any case, with mingw32ce we only get a SHGetSpecialFolderPath. */ |
| #define SHGetSpecialFolderPathW SHGetSpecialFolderPath |
| BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); |
| BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL); |
| |
| #ifndef TLS_OUT_OF_INDEXES |
| #define TLS_OUT_OF_INDEXES 0xffffffff |
| #endif |
| |
| |
| /* Seriously. Windows CE does not have errno. Don't you hate it when |
| that happens? */ |
| #define errno ((int)GetLastError ()) |
| |
| #define ENOENT ERROR_FILE_NOT_FOUND |
| #define EMFILE ERROR_TOO_MANY_OPEN_FILES |
| #define EACCES ERROR_ACCESS_DENIED |
| #define EBADF ERROR_INVALID_HANDLE |
| #define ENOMEM ERROR_NOT_ENOUGH_MEMORY |
| #define EXDEV ERROR_NOT_SAME_DEVICE |
| #define ENFILE ERROR_NO_MORE_FILES |
| #define EROFS ERROR_WRITE_PROTECT |
| #define ENOLCK ERROR_SHARING_BUFFER_EXCEEDED |
| #define ENOSYS ERROR_NOT_SUPPORTED |
| #define EEXIST ERROR_FILE_EXISTS |
| #define EPERM ERROR_CANNOT_MAKE |
| #define EINVAL ERROR_INVALID_PARAMETER |
| #define EINTR ERROR_INVALID_AT_INTERRUPT_TIME |
| #define EPIPE ERROR_BROKEN_PIPE |
| #define ENOSPC ERROR_DISK_FULL |
| #define ENOTEMPTY ERROR_DIR_NOT_EMPTY |
| #define EBUSY ERROR_BUSY |
| #define ENAMETOOLONG ERROR_FILENAME_EXCED_RANGE |
| #define EAGAIN ERROR_MORE_DATA |
| #define ENOTDIR ERROR_DIRECTORY |
| #define ERANGE ERROR_ARITHMETIC_OVERFLOW |
| #define ENXIO ERROR_FILE_INVALID |
| #define EFAULT ERROR_PROCESS_ABORTED |
| #define EIO ERROR_IO_DEVICE |
| #define EDEADLOCK ERROR_POSSIBLE_DEADLOCK |
| #define ENODEV ERROR_BAD_DEVICE |
| |
| /* Windows CE is missing more stuff that is pretty standard. */ |
| |
| #define strdup _strdup |
| #define stricmp _stricmp |
| #define strnicmp _strnicmp |
| |
| #define environ _dbus_wince_environ |
| extern char *environ[]; |
| |
| #define getenv _dbus_wince_getenv |
| char *getenv (const char *name); |
| |
| #define putenv _dbus_wince_putenv |
| int putenv (char *str); |
| |
| #define clock _dbus_wince_clock |
| clock_t clock (void); |
| |
| #define abort _dbus_wince_abort |
| void abort (void); |
| |
| #define _S_IFMT 0170000 /* file type mask */ |
| #define _S_IFDIR 0040000 /* directory */ |
| #define _S_IFCHR 0020000 /* character special */ |
| #define _S_IFIFO 0010000 /* pipe */ |
| #define _S_IFREG 0100000 /* regular */ |
| #define _S_IREAD 0000400 /* read permission, owner */ |
| #define _S_IWRITE 0000200 /* write permission, owner */ |
| #define _S_IEXEC 0000100 /* execute/search permission, owner */ |
| |
| #ifndef __OFF_T_DEFINED |
| typedef long off_t; |
| #define __OFF_T_DEFINED |
| #endif |
| #ifndef _INTPTR_T_DEFINED |
| typedef int intptr_t; |
| #define _INTPTR_T_DEFINED |
| #endif |
| #ifndef _UINTPTR_T_DEFINED |
| typedef unsigned int uintptr_t; |
| #define _UINTPTR_T_DEFINED |
| #endif |
| |
| #ifndef _MAX_FNAME |
| #define _MAX_FNAME 256 |
| #endif |
| |
| #ifndef _IOFBF |
| #define _IOFBF 0 |
| #endif |
| #ifndef _IOLBF |
| #define _IOLBF 1 |
| #endif |
| #ifndef _IONBF |
| #define _IONBF 2 |
| #endif |
| |
| |
| /* Windows CE is missing some Windows functions that we want. */ |
| |
| #define GetSystemTimeAsFileTime _dbus_wince_GetSystemTimeAsFileTime |
| void GetSystemTimeAsFileTime (LPFILETIME ftp); |
| |
| #define _mbsrchr _dbus_wince_mbsrchr |
| unsigned char* _mbsrchr (const unsigned char*, unsigned int); |
| |
| #define OpenFileMappingA _dbus_wince_OpenFileMappingA |
| HANDLE OpenFileMappingA(DWORD,BOOL,LPCSTR); |
| |
| #define MoveFileExA _dbus_wince_MoveFileExA |
| BOOL MoveFileExA(LPCSTR,LPCSTR,DWORD); |
| #ifndef MOVEFILE_REPLACE_EXISTING |
| #define MOVEFILE_REPLACE_EXISTING 0x00000001 |
| #endif |
| |
| #define SetHandleInformation _dbus_wince_SetHandleInformation |
| BOOL SetHandleInformation(HANDLE,DWORD,DWORD); |
| #ifndef HANDLE_FLAG_INHERIT |
| #define HANDLE_FLAG_INHERIT 0x01 |
| #endif |
| #ifndef HANDLE_FLAG_PROTECT |
| #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x02 |
| #endif |
| |
| #define SearchPathA _dbus_wince_SearchPathA |
| DWORD SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*); |
| |
| /* Instead of emulating all functions needed for this, we replace the |
| whole thing. */ |
| dbus_bool_t _dbus_getsid(char **sid); |
| |
| |
| #define LookupAccountNameW _dbus_wince_LookupAccountNameW |
| BOOL LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE); |
| |
| #define IsValidSid _dbus_wince_IsValidSid |
| BOOL IsValidSid(PSID); |
| |
| |
| /* Windows CE does only have the UNICODE interfaces (FooW), but we |
| want to use the ASCII interfaces (FooA). We implement them |
| here. */ |
| |
| #define CreateFileA _dbus_wince_CreateFileA |
| HANDLE CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE); |
| |
| #define DeleteFileA _dbus_wince_DeleteFileA |
| BOOL DeleteFileA(LPCSTR); |
| |
| #define GetFileAttributesA _dbus_wince_GetFileAttributesA |
| DWORD GetFileAttributesA(LPCSTR); |
| |
| #define GetFileAttributesExA _dbus_wince_GetFileAttributesExA |
| BOOL GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,PVOID); |
| |
| #define CreateFileMappingA _dbus_wince_CreateFileMappingA |
| HANDLE CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR); |
| |
| #define CreateDirectoryA _dbus_wince_CreateDirectoryA |
| BOOL CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES); |
| |
| #define RemoveDirectoryA _dbus_wince_RemoveDirectoryA |
| BOOL RemoveDirectoryA(LPCSTR); |
| |
| #define FindFirstFileA _dbus_wince_FindFirstFileA |
| HANDLE FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA); |
| |
| #define FindNextFileA _dbus_wince_FindNextFileA |
| BOOL FindNextFileA(HANDLE,LPWIN32_FIND_DATAA); |
| |
| #define CreateMutexA _dbus_wince_CreateMutexA |
| HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR); |
| |
| #define CreateProcessA _dbus_wince_CreateProcessA |
| BOOL CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION); |
| #ifndef CREATE_NO_WINDOW |
| #define CREATE_NO_WINDOW 0x08000000 |
| #endif |
| |
| |
| #define RegOpenKeyExA _dbus_wince_RegOpenKeyExA |
| LONG RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY); |
| |
| #define RegQueryValueExA _dbus_wince_RegQueryValueExA |
| LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); |
| |
| |
| #define FormatMessageA _dbus_wince_FormatMessageA |
| DWORD FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*); |
| |
| #define GetModuleFileNameA _dbus_wince_GetModuleFileNameA |
| DWORD GetModuleFileNameA(HINSTANCE,LPSTR,DWORD); |
| |
| #define GetTempPathA _dbus_wince_GetTempPathA |
| DWORD GetTempPathA(DWORD,LPSTR); |
| |
| #define SHGetSpecialFolderPathA _dbus_wince_SHGetSpecialFolderPathA |
| BOOL SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); |
| |
| |
| #define OutputDebugStringA _dbus_wince_OutputDebugStringA |
| void OutputDebugStringA(LPCSTR); |
| |
| |
| DBUS_END_DECLS |
| |
| #endif /* DBUS_SYSDEPS_WINCE_GLUE_H */ |