diff options
author | wtc%google.com <devnull@localhost> | 2009-02-04 23:44:01 +0000 |
---|---|---|
committer | wtc%google.com <devnull@localhost> | 2009-02-04 23:44:01 +0000 |
commit | 5f3512947578deaf6300792fb3870df8de00994c (patch) | |
tree | 44c32f9c39a0967ebc837fed8078570de81998d8 /pr | |
parent | 3ca11c8f4870a716ce8d017f307b0fc24d35a553 (diff) | |
download | nspr-hg-5f3512947578deaf6300792fb3870df8de00994c.tar.gz |
Bug 456449: checked in some more WinMobile WinCE porting changes from
Brad Lassey <bugmail@lassey.us>. r=wtc.
Modified Files: Makefile.in ntsec.c objs.mk w32ipcsem.c w32shm.c w95sock.c
w95thred.c
Diffstat (limited to 'pr')
-rw-r--r-- | pr/src/md/windows/Makefile.in | 2 | ||||
-rw-r--r-- | pr/src/md/windows/ntsec.c | 13 | ||||
-rw-r--r-- | pr/src/md/windows/objs.mk | 2 | ||||
-rw-r--r-- | pr/src/md/windows/w32ipcsem.c | 35 | ||||
-rw-r--r-- | pr/src/md/windows/w32shm.c | 26 | ||||
-rw-r--r-- | pr/src/md/windows/w95sock.c | 2 | ||||
-rw-r--r-- | pr/src/md/windows/w95thred.c | 10 |
7 files changed, 85 insertions, 5 deletions
diff --git a/pr/src/md/windows/Makefile.in b/pr/src/md/windows/Makefile.in index c97c9821..4675bf89 100644 --- a/pr/src/md/windows/Makefile.in +++ b/pr/src/md/windows/Makefile.in @@ -62,7 +62,7 @@ CSRCS = \ ntinrval.c \ $(NULL) else -ifeq ($(OS_TARGET), WIN95) +ifeq (,$(filter-out WIN95 WINCE, $(OS_TARGET))) CSRCS = \ ntmisc.c \ ntsec.c \ diff --git a/pr/src/md/windows/ntsec.c b/pr/src/md/windows/ntsec.c index 89ac1dfb..2ef73a05 100644 --- a/pr/src/md/windows/ntsec.c +++ b/pr/src/md/windows/ntsec.c @@ -69,6 +69,9 @@ static struct { */ void _PR_NT_InitSids(void) { +#ifdef WINCE /* not supported */ + return; +#else SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY; HANDLE hToken = NULL; /* initialized to an arbitrary value to * silence a Purify UMR warning */ @@ -128,6 +131,7 @@ void _PR_NT_InitSids(void) 0, 0, 0, 0, 0, 0, 0, &_pr_nt_sids.everyone); PR_ASSERT(rv != 0); +#endif } /* @@ -139,6 +143,9 @@ void _PR_NT_InitSids(void) void _PR_NT_FreeSids(void) { +#ifdef WINCE + return; +#else if (_pr_nt_sids.owner) { PR_Free(_pr_nt_sids.owner); } @@ -148,6 +155,7 @@ _PR_NT_FreeSids(void) if (_pr_nt_sids.everyone) { FreeSid(_pr_nt_sids.everyone); } +#endif } /* @@ -168,6 +176,10 @@ _PR_NT_MakeSecurityDescriptorACL( PSECURITY_DESCRIPTOR *resultSD, PACL *resultACL) { +#ifdef WINCE + PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0); + return PR_FAILURE; +#else PSECURITY_DESCRIPTOR pSD = NULL; PACL pACL = NULL; DWORD cbACL; /* size of ACL */ @@ -261,6 +273,7 @@ failed: PR_Free(pACL); } return PR_FAILURE; +#endif } /* diff --git a/pr/src/md/windows/objs.mk b/pr/src/md/windows/objs.mk index 36f21a44..0c3fa665 100644 --- a/pr/src/md/windows/objs.mk +++ b/pr/src/md/windows/objs.mk @@ -51,7 +51,7 @@ CSRCS = ntmisc.c \ w32rng.c \ w32shm.c else -ifeq ($(OS_TARGET),WIN95) +ifeq (,$(filter-out WIN95 WINCE, $(OS_TARGET))) CSRCS = ntmisc.c \ ntsec.c \ ntsem.c \ diff --git a/pr/src/md/windows/w32ipcsem.c b/pr/src/md/windows/w32ipcsem.c index 82201a80..443cd7fa 100644 --- a/pr/src/md/windows/w32ipcsem.c +++ b/pr/src/md/windows/w32ipcsem.c @@ -42,6 +42,30 @@ #include "primpl.h" +#ifdef WINCE +static HANDLE OpenSemaphore(DWORD inDesiredAccess, + BOOL inInheritHandle, + const char *inName) +{ + HANDLE retval = NULL; + HANDLE semaphore = NULL; + PRUnichar wideName[MAX_PATH]; /* name size is limited to MAX_PATH */ + + MultiByteToWideChar(CP_ACP, 0, inName, -1, wideName, MAX_PATH); + /* 0x7fffffff is the max count for our semaphore */ + semaphore = CreateSemaphoreW(NULL, 0, 0x7fffffff, wideName); + if (NULL != semaphore) { + DWORD lastErr = GetLastError(); + + if (ERROR_ALREADY_EXISTS != lastErr) + CloseHandle(semaphore); + else + retval = semaphore; + } + return retval; +} +#endif + /* * NSPR-to-NT access right mapping table for semaphore objects. * @@ -147,7 +171,16 @@ PRSem *_PR_MD_OPEN_SEMAPHORE( sa.bInheritHandle = FALSE; lpSA = &sa; } - sem->sem = CreateSemaphore(lpSA, value, 0x7fffffff, osname); +#ifdef WINCE + { + /* The size of a sem's name is limited to MAX_PATH. */ + PRUnichar wosname[MAX_PATH]; + MultiByteToWideChar(CP_ACP, 0, osname, -1, wosname, MAX_PATH); + sem->sem = CreateSemaphoreW(lpSA, value, 0x7fffffff, wosname); + } +#else + sem->sem = CreateSemaphoreA(lpSA, value, 0x7fffffff, osname); +#endif if (lpSA != NULL) { _PR_NT_FreeSecurityDescriptorACL(pSD, pACL); } diff --git a/pr/src/md/windows/w32shm.c b/pr/src/md/windows/w32shm.c index 136b20d2..e34a436a 100644 --- a/pr/src/md/windows/w32shm.c +++ b/pr/src/md/windows/w32shm.c @@ -119,13 +119,32 @@ extern PRSharedMemory * _MD_OpenSharedMemory( sa.bInheritHandle = FALSE; lpSA = &sa; } - shm->handle = CreateFileMapping( +#ifdef WINCE + { + /* + * This is assuming that the name will never be larger than + * MAX_PATH. Should we dynamically allocate? + */ + PRUnichar wideIpcName[MAX_PATH]; + MultiByteToWideChar(CP_ACP, 0, shm->ipcname, -1, + wideIpcName, MAX_PATH); + shm->handle = CreateFileMappingW( + (HANDLE)-1 , + lpSA, + flProtect, + dwHi, + dwLo, + wideIpcName); + } +#else + shm->handle = CreateFileMappingA( (HANDLE)-1 , lpSA, flProtect, dwHi, dwLo, shm->ipcname); +#endif if (lpSA != NULL) { _PR_NT_FreeSecurityDescriptorACL(pSD, pACL); } @@ -156,7 +175,12 @@ extern PRSharedMemory * _MD_OpenSharedMemory( } } } else { +#ifdef WINCE + PR_SetError( PR_NOT_IMPLEMENTED_ERROR, 0 ); + shm->handle = NULL; /* OpenFileMapping not supported */ +#else shm->handle = OpenFileMapping( FILE_MAP_WRITE, TRUE, shm->ipcname ); +#endif if ( NULL == shm->handle ) { _PR_MD_MAP_DEFAULT_ERROR( GetLastError()); PR_LOG(_pr_shm_lm, PR_LOG_DEBUG, diff --git a/pr/src/md/windows/w95sock.c b/pr/src/md/windows/w95sock.c index fa5cd0d2..e7a6a87b 100644 --- a/pr/src/md/windows/w95sock.c +++ b/pr/src/md/windows/w95sock.c @@ -119,7 +119,7 @@ void _PR_MD_InitSockets(void) /* if Vista or later... */ if (osvi.dwMajorVersion >= 6) { - libWinsock2 = LoadLibrary("Ws2_32.dll"); + libWinsock2 = LoadLibraryW(L"Ws2_32.dll"); if (libWinsock2) { wsaioctlProc = (WSAIOCTLPROC)GetProcAddress(libWinsock2, diff --git a/pr/src/md/windows/w95thred.c b/pr/src/md/windows/w95thred.c index 5d8045aa..fcf0a549 100644 --- a/pr/src/md/windows/w95thred.c +++ b/pr/src/md/windows/w95thred.c @@ -234,15 +234,24 @@ _PR_MD_EXIT(PRIntn status) PRInt32 _PR_MD_SETTHREADAFFINITYMASK(PRThread *thread, PRUint32 mask ) { +#ifdef WINCE + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return -1; +#else DWORD_PTR rv; rv = SetThreadAffinityMask(thread->md.handle, mask); return rv?0:-1; +#endif } PRInt32 _PR_MD_GETTHREADAFFINITYMASK(PRThread *thread, PRUint32 *mask) { +#ifdef WINCE + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return -1; +#else BOOL rv; DWORD_PTR process_mask; DWORD_PTR system_mask; @@ -253,6 +262,7 @@ PRInt32 _PR_MD_GETTHREADAFFINITYMASK(PRThread *thread, PRUint32 *mask) *mask = (PRUint32)process_mask; return rv?0:-1; +#endif } void |