Index: nspr/pr/src/md/windows/w95io.c |
=================================================================== |
--- nspr/pr/src/md/windows/w95io.c (revision 233722) |
+++ nspr/pr/src/md/windows/w95io.c (working copy) |
@@ -16,197 +16,6 @@ |
#include <wchar.h> |
#endif /* MOZ_UNICODE */ |
-#ifdef WINCE |
- |
-static HANDLE CreateFileA(LPCSTR lpFileName, |
- DWORD dwDesiredAccess, |
- DWORD dwShareMode, |
- LPSECURITY_ATTRIBUTES lpSecurityAttributes, |
- DWORD dwCreationDisposition, |
- DWORD dwFlagsAndAttributes, |
- HANDLE hTemplateFile) |
-{ |
- PRUnichar wFileName[MAX_PATH]; |
- MultiByteToWideChar(CP_ACP, 0, lpFileName, -1, wFileName, MAX_PATH); |
- return CreateFileW(wFileName, dwDesiredAccess, dwShareMode, |
- lpSecurityAttributes, dwCreationDisposition, |
- dwFlagsAndAttributes, hTemplateFile); |
-} |
- |
-/* |
- * We seem to call FindFirstFileA and FindNextFileA just to get |
- * the file names in a directory listing. If so, we could define |
- * a custom WIN32_FIND_DATAA structure with just the cFileName |
- * member, and the CopyFindFileDataW2A function could just |
- * copy/convert the cFileName member. |
- */ |
-static void CopyFindFileDataW2A(LPWIN32_FIND_DATAW from, |
- LPWIN32_FIND_DATAA to) |
-{ |
- /* |
- * WIN32_FIND_DATAA and WIN32_FIND_DATAW are slightly different. |
- * The dwReserved0, dwReserved1, and cAlternateFileName members |
- * exist only in WIN32_FIND_DATAA. The dwOID member exists only |
- * in WIN32_FIND_DATAW. |
- */ |
- to->dwFileAttributes = from->dwFileAttributes; |
- to->ftCreationTime = from->ftCreationTime; |
- to->ftLastAccessTime = from->ftLastAccessTime; |
- to->ftLastWriteTime = from->ftLastWriteTime; |
- to->nFileSizeHigh = from->nFileSizeHigh; |
- to->nFileSizeLow = from->nFileSizeLow; |
- to->dwReserved0 = 0; |
- to->dwReserved1 = 0; |
- WideCharToMultiByte(CP_ACP, 0, from->cFileName, -1, |
- to->cFileName, MAX_PATH, NULL, NULL); |
- to->cAlternateFileName[0] = '\0'; |
-} |
- |
-static HANDLE FindFirstFileA(LPCSTR lpFileName, |
- LPWIN32_FIND_DATAA lpFindFileData) |
-{ |
- PRUnichar wFileName[MAX_PATH]; |
- HANDLE hFindFile; |
- WIN32_FIND_DATAW wFindFileData; |
- |
- MultiByteToWideChar(CP_ACP, 0, lpFileName, -1, wFileName, MAX_PATH); |
- hFindFile = FindFirstFileW(wFileName, &wFindFileData); |
- if (hFindFile != INVALID_HANDLE_VALUE) { |
- CopyFindFileDataW2A(&wFindFileData, lpFindFileData); |
- } |
- return hFindFile; |
-} |
- |
-static BOOL FindNextFileA(HANDLE hFindFile, |
- LPWIN32_FIND_DATAA lpFindFileData) |
-{ |
- WIN32_FIND_DATAW wFindFileData; |
- BOOL rv; |
- |
- rv = FindNextFileW(hFindFile, &wFindFileData); |
- if (rv) { |
- CopyFindFileDataW2A(&wFindFileData, lpFindFileData); |
- } |
- return rv; |
-} |
- |
-static BOOL GetFileAttributesExA(LPCSTR lpFileName, |
- GET_FILEEX_INFO_LEVELS fInfoLevelId, |
- LPVOID lpFileInformation) |
-{ |
- PRUnichar wFileName[MAX_PATH]; |
- MultiByteToWideChar(CP_ACP, 0, lpFileName, -1, wFileName, MAX_PATH); |
- return GetFileAttributesExW(wFileName, fInfoLevelId, lpFileInformation); |
-} |
- |
-static BOOL DeleteFileA(LPCSTR lpFileName) |
-{ |
- PRUnichar wFileName[MAX_PATH]; |
- MultiByteToWideChar(CP_ACP, 0, lpFileName, -1, wFileName, MAX_PATH); |
- return DeleteFileW(wFileName); |
-} |
- |
-static BOOL MoveFileA(LPCSTR from, LPCSTR to) |
-{ |
- PRUnichar wFrom[MAX_PATH]; |
- PRUnichar wTo[MAX_PATH]; |
- MultiByteToWideChar(CP_ACP, 0, from, -1, wFrom, MAX_PATH); |
- MultiByteToWideChar(CP_ACP, 0, to, -1, wTo, MAX_PATH); |
- return MoveFileW(wFrom, wTo); |
-} |
- |
-static BOOL CreateDirectoryA(LPCSTR lpPathName, |
- LPSECURITY_ATTRIBUTES lpSecurityAttributes) |
-{ |
- PRUnichar wPathName[MAX_PATH]; |
- MultiByteToWideChar(CP_ACP, 0, lpPathName, -1, wPathName, MAX_PATH); |
- return CreateDirectoryW(wPathName, lpSecurityAttributes); |
-} |
- |
-static BOOL RemoveDirectoryA(LPCSTR lpPathName) |
-{ |
- PRUnichar wPathName[MAX_PATH]; |
- MultiByteToWideChar(CP_ACP, 0, lpPathName, -1, wPathName, MAX_PATH); |
- return RemoveDirectoryW(wPathName); |
-} |
- |
-static long GetDriveType(const char *lpRootPathName) |
-{ |
- PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0); |
- return 0; // The drive type cannot be determined. |
-} |
- |
-static DWORD GetFullPathName(const char *lpFileName, |
- DWORD nBufferLength, |
- const char *lpBuffer, |
- const char **lpFilePart) |
-{ |
- // needs work dft |
- DWORD len = strlen(lpFileName); |
- if (len > nBufferLength) |
- return len; |
- |
- strncpy((char *)lpBuffer, lpFileName, len); |
- ((char *)lpBuffer)[len] = '\0'; |
- |
- if (lpFilePart) { |
- char *sep = strrchr(lpBuffer, '\\'); |
- if (sep) { |
- sep++; // pass the seperator |
- *lpFilePart = sep; |
- } else { |
- *lpFilePart = lpBuffer; |
- } |
- } |
- return len; |
-} |
- |
-static BOOL LockFile(HANDLE hFile, |
- DWORD dwFileOffsetLow, |
- DWORD dwFileOffsetHigh, |
- DWORD nNumberOfBytesToLockLow, |
- DWORD nNumberOfBytesToLockHigh) |
-{ |
- OVERLAPPED overlapped = {0}; |
- overlapped.Offset = dwFileOffsetLow; |
- overlapped.OffsetHigh = dwFileOffsetHigh; |
- return LockFileEx(hFile, |
- LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY, |
- 0, // reserved |
- nNumberOfBytesToLockLow, |
- nNumberOfBytesToLockHigh, &overlapped); |
-} |
- |
-static BOOL UnlockFile(HANDLE hFile, |
- DWORD dwFileOffsetLow, |
- DWORD dwFileOffsetHigh, |
- DWORD nNumberOfBytesToUnlockLow, |
- DWORD nNumberOfBytesToUnlockHigh) |
-{ |
- OVERLAPPED overlapped = {0}; |
- overlapped.Offset = dwFileOffsetLow; |
- overlapped.OffsetHigh = dwFileOffsetHigh; |
- return UnlockFileEx(hFile, |
- 0, // reserved |
- nNumberOfBytesToUnlockLow, |
- nNumberOfBytesToUnlockHigh, &overlapped); |
-} |
- |
-static unsigned char *_mbsdec(const unsigned char *string1, |
- const unsigned char *string2) |
-{ |
- // needs work dft |
- return NULL; |
-} |
- |
-static unsigned char *_mbsinc(const unsigned char *inCurrent) |
-{ |
- // needs work dft |
- return (unsigned char *)(inCurrent + 1); |
-} |
- |
-#endif |
- |
struct _MDLock _pr_ioq_lock; |
/* |
@@ -227,17 +36,6 @@ |
FILE_GENERIC_EXECUTE |
}; |
-/* Windows CE has GetFileAttributesEx. */ |
-#ifndef WINCE |
-typedef BOOL (WINAPI *GetFileAttributesExFn)(LPCTSTR, |
- GET_FILEEX_INFO_LEVELS, |
- LPVOID); |
-static GetFileAttributesExFn getFileAttributesEx; |
-static void InitGetFileInfo(void); |
-#endif |
- |
-static void InitUnicodeSupport(void); |
- |
static PRBool IsPrevCharSlash(const char *str, const char *current); |
void |
@@ -277,12 +75,6 @@ |
_PR_NT_InitSids(); |
-#ifndef WINCE |
- InitGetFileInfo(); |
-#endif |
- |
- InitUnicodeSupport(); |
- |
_PR_MD_InitSockets(); |
} |
@@ -795,11 +587,6 @@ |
PRInt32 |
_PR_MD_STAT(const char *fn, struct stat *info) |
{ |
-#ifdef WINCE |
- // needs work. dft |
- PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0); |
- return -1; |
-#else |
PRInt32 rv; |
rv = _stat(fn, (struct _stat *)info); |
@@ -831,7 +618,6 @@ |
_PR_MD_MAP_STAT_ERROR(errno); |
} |
return rv; |
-#endif |
} |
#define _PR_IS_SLASH(ch) ((ch) == '/' || (ch) == '\\') |
@@ -935,117 +721,10 @@ |
return rv; |
} |
-#ifndef WINCE |
-/* |
- * InitGetFileInfo -- |
- * |
- * Called during IO init. Checks for the existence of the system function |
- * GetFileAttributeEx, which when available is used in GETFILEINFO calls. |
- * If the routine exists, then the address of the routine is stored in the |
- * variable getFileAttributesEx, which will be used to call the routine. |
- */ |
-static void InitGetFileInfo(void) |
-{ |
- HMODULE module; |
- module = GetModuleHandle("Kernel32.dll"); |
- if (!module) { |
- PR_LOG(_pr_io_lm, PR_LOG_DEBUG, |
- ("InitGetFileInfo: GetModuleHandle() failed: %d", |
- GetLastError())); |
- return; |
- } |
- |
- getFileAttributesEx = (GetFileAttributesExFn) |
- GetProcAddress(module, "GetFileAttributesExA"); |
-} |
- |
-/* |
- * If GetFileAttributeEx doesn't exist, we call FindFirstFile as a |
- * fallback. |
- */ |
-static BOOL |
-GetFileAttributesExFB(const char *fn, WIN32_FIND_DATA *findFileData) |
-{ |
- HANDLE hFindFile; |
- |
- /* |
- * FindFirstFile() expands wildcard characters. So |
- * we make sure the pathname contains no wildcard. |
- */ |
- if (NULL != _mbspbrk(fn, "?*")) { |
- SetLastError(ERROR_INVALID_NAME); |
- return FALSE; |
- } |
- |
- hFindFile = FindFirstFile(fn, findFileData); |
- if (INVALID_HANDLE_VALUE == hFindFile) { |
- DWORD len; |
- char *filePart; |
- char pathbuf[MAX_PATH + 1]; |
- |
- /* |
- * FindFirstFile() does not work correctly on root directories. |
- * It also doesn't work correctly on a pathname that ends in a |
- * slash. So we first check to see if the pathname specifies a |
- * root directory. If not, and if the pathname ends in a slash, |
- * we remove the final slash and try again. |
- */ |
- |
- /* |
- * If the pathname does not contain ., \, and /, it cannot be |
- * a root directory or a pathname that ends in a slash. |
- */ |
- if (NULL == _mbspbrk(fn, ".\\/")) { |
- return FALSE; |
- } |
- len = GetFullPathName(fn, sizeof(pathbuf), pathbuf, |
- &filePart); |
- if (0 == len) { |
- return FALSE; |
- } |
- if (len > sizeof(pathbuf)) { |
- SetLastError(ERROR_FILENAME_EXCED_RANGE); |
- return FALSE; |
- } |
- if (IsRootDirectory(pathbuf, sizeof(pathbuf))) { |
- findFileData->dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY; |
- /* The file size doesn't have a meaning for directories. */ |
- findFileData->nFileSizeHigh = 0; |
- findFileData->nFileSizeLow = 0; |
- /* |
- * For a directory, these timestamps all specify when the |
- * directory is created. The creation time doesn't make |
- * sense for root directories, so we set it to (NSPR) time 0. |
- */ |
- memcpy(&findFileData->ftCreationTime, &_pr_filetime_offset, 8); |
- findFileData->ftLastAccessTime = findFileData->ftCreationTime; |
- findFileData->ftLastWriteTime = findFileData->ftCreationTime; |
- return TRUE; |
- } |
- if (!IsPrevCharSlash(pathbuf, pathbuf + len)) { |
- return FALSE; |
- } else { |
- pathbuf[len - 1] = '\0'; |
- hFindFile = FindFirstFile(pathbuf, findFileData); |
- if (INVALID_HANDLE_VALUE == hFindFile) { |
- return FALSE; |
- } |
- } |
- } |
- |
- FindClose(hFindFile); |
- return TRUE; |
-} |
-#endif |
- |
PRInt32 |
_PR_MD_GETFILEINFO64(const char *fn, PRFileInfo64 *info) |
{ |
-#ifdef WINCE |
WIN32_FILE_ATTRIBUTE_DATA findFileData; |
-#else |
- WIN32_FIND_DATA findFileData; |
-#endif |
BOOL rv; |
if (NULL == fn || '\0' == *fn) { |
@@ -1053,16 +732,7 @@ |
return -1; |
} |
-#ifdef WINCE |
- rv = GetFileAttributesExA(fn, GetFileExInfoStandard, &findFileData); |
-#else |
- /* GetFileAttributesEx is supported on Win 2K and up. */ |
- if (getFileAttributesEx) { |
- rv = getFileAttributesEx(fn, GetFileExInfoStandard, &findFileData); |
- } else { |
- rv = GetFileAttributesExFB(fn, &findFileData); |
- } |
-#endif |
+ rv = GetFileAttributesEx(fn, GetFileExInfoStandard, &findFileData); |
if (!rv) { |
_PR_MD_MAP_OPENDIR_ERROR(GetLastError()); |
return -1; |
@@ -1150,10 +820,6 @@ |
PRStatus |
_PR_MD_SET_FD_INHERITABLE(PRFileDesc *fd, PRBool inheritable) |
{ |
-#ifdef WINCE |
- PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0); |
- return PR_FAILURE; |
-#else |
BOOL rv; |
/* |
@@ -1169,7 +835,6 @@ |
return PR_FAILURE; |
} |
return PR_SUCCESS; |
-#endif |
} |
void |
@@ -1185,9 +850,6 @@ |
void |
_PR_MD_QUERY_FD_INHERITABLE(PRFileDesc *fd) |
{ |
-#ifdef WINCE |
- fd->secret->inheritable = _PR_TRI_FALSE; |
-#else |
DWORD flags; |
PR_ASSERT(_PR_TRI_UNKNOWN == fd->secret->inheritable); |
@@ -1198,7 +860,6 @@ |
fd->secret->inheritable = _PR_TRI_FALSE; |
} |
} |
-#endif |
} |
PRInt32 |
@@ -1216,10 +877,6 @@ |
PRInt32 |
_PR_MD_ACCESS(const char *name, PRAccessHow how) |
{ |
-#ifdef WINCE |
- PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0); |
- return -1; |
-#else |
PRInt32 rv; |
switch (how) { |
case PR_ACCESS_WRITE_OK: |
@@ -1238,7 +895,6 @@ |
if (rv < 0) |
_PR_MD_MAP_ACCESS_ERROR(errno); |
return rv; |
-#endif |
} |
PRInt32 |
@@ -1364,40 +1020,6 @@ |
#endif /* MOZ_UNICODE */ |
-PRBool _pr_useUnicode = PR_FALSE; |
- |
-static void InitUnicodeSupport(void) |
-{ |
-#ifdef WINCE |
- /* The A functions don't even exist in Windows Mobile. */ |
- _pr_useUnicode = PR_TRUE; |
-#else |
- /* |
- * The W functions exist on Win9x as stubs that fail with the |
- * ERROR_CALL_NOT_IMPLEMENTED error. We plan to emulate the |
- * MSLU W functions on Win9x in the future. |
- */ |
- |
- /* Find out if we are running on a Unicode enabled version of Windows */ |
- OSVERSIONINFOA osvi = {0}; |
- |
- osvi.dwOSVersionInfoSize = sizeof(osvi); |
- if (GetVersionExA(&osvi)) { |
- _pr_useUnicode = (osvi.dwPlatformId >= VER_PLATFORM_WIN32_NT); |
- } else { |
- _pr_useUnicode = PR_FALSE; |
- } |
-#ifdef DEBUG |
- /* |
- * In debug builds, allow explicit use of ANSI methods to simulate |
- * a Win9x environment for testing purposes. |
- */ |
- if (getenv("WINAPI_USE_ANSI")) |
- _pr_useUnicode = PR_FALSE; |
-#endif |
-#endif |
-} |
- |
#ifdef MOZ_UNICODE |
/* ================ UTF16 Interfaces ================================ */ |