/* -*- 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 #include /* For getaddrinfo, configure/cmake defined _WIN32_WCE to something >= 0x0401. */ #include #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 */