[Libreoffice-commits] .: sal/osl
Tor Lillqvist
tml at kemper.freedesktop.org
Sun Jan 23 15:58:44 PST 2011
sal/osl/w32/MAKEFILE.MK | 4
sal/osl/w32/dllentry.c | 19 -
sal/osl/w32/libutil.c | 57 ---
sal/osl/w32/module.cxx | 72 ----
sal/osl/w32/pipe.c | 332 ++++++--------------
sal/osl/w32/pipeimpl.cxx | 772 -----------------------------------------------
sal/osl/w32/pipeimpl.h | 91 -----
sal/osl/w32/system.h | 20 -
8 files changed, 112 insertions(+), 1255 deletions(-)
New commits:
commit f7c8e364fe17c0f4bf7b69f7f36dba57986a8645
Author: Tor Lillqvist <tlillqvist at novell.com>
Date: Mon Jan 24 01:57:17 2011 +0200
Kill Win9x code
diff --git a/sal/osl/w32/MAKEFILE.MK b/sal/osl/w32/MAKEFILE.MK
index 4749048..a760171 100644
--- a/sal/osl/w32/MAKEFILE.MK
+++ b/sal/osl/w32/MAKEFILE.MK
@@ -84,7 +84,6 @@ SLOFILES= $(SLO)$/conditn.obj \
OBJFILES= $(OBJ)$/conditn.obj \
$(OBJ)$/diagnose.obj \
- $(OBJ)$/libutil.obj \
$(OBJ)$/semaphor.obj \
$(OBJ)$/socket.obj \
$(OBJ)$/interlck.obj \
@@ -97,7 +96,6 @@ OBJFILES= $(OBJ)$/conditn.obj \
$(OBJ)$/profile.obj \
$(OBJ)$/time.obj \
$(OBJ)$/signal.obj \
- $(OBJ)$/pipeimpl.obj \
$(OBJ)$/pipe.obj \
$(OBJ)$/util.obj \
$(OBJ)$/file.obj\
@@ -114,5 +112,3 @@ OBJFILES= $(OBJ)$/conditn.obj \
# --- Targets ------------------------------------------------------
.INCLUDE : target.mk
-
-
diff --git a/sal/osl/w32/dllentry.c b/sal/osl/w32/dllentry.c
index 9a39865..09628d7 100644
--- a/sal/osl/w32/dllentry.c
+++ b/sal/osl/w32/dllentry.c
@@ -90,17 +90,9 @@ extern BOOL (WINAPI *_pRawDllMain)(HANDLE, DWORD, LPVOID) = _RawDllMain;
#endif
//------------------------------------------------------------------------------
-// globales
-//------------------------------------------------------------------------------
-
-DWORD g_dwPlatformId = VER_PLATFORM_WIN32_WINDOWS; // remember plattform
-
-//------------------------------------------------------------------------------
// DllMain
//------------------------------------------------------------------------------
-#ifdef _M_IX86
int osl_isSingleCPU = 0;
-#endif
#ifdef __MINGW32__
@@ -177,9 +169,7 @@ static BOOL WINAPI _RawDllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvR
case DLL_PROCESS_ATTACH:
{
#endif
- OSVERSIONINFO aInfo;
-#ifdef _M_IX86
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
@@ -193,7 +183,7 @@ static BOOL WINAPI _RawDllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvR
if ( SystemInfo.dwNumberOfProcessors == 1 ) {
osl_isSingleCPU = 1;
}
-#endif
+
#if OSL_DEBUG_LEVEL < 2
/* Suppress file error messages from system like "Floppy A: not inserted" */
SetErrorMode( SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS );
@@ -205,13 +195,6 @@ static BOOL WINAPI _RawDllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvR
/* initialize "current directory" mutex */
g_CurrentDirectoryMutex = osl_createMutex();
-
- /* initialize Win9x unicode functions */
- aInfo.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
-
- if ( GetVersionEx(&aInfo) )
- g_dwPlatformId = aInfo.dwPlatformId;
-
g_dwTLSTextEncodingIndex = TlsAlloc();
InitializeCriticalSection( &g_ThreadKeyListCS );
diff --git a/sal/osl/w32/libutil.c b/sal/osl/w32/libutil.c
deleted file mode 100644
index 5457619..0000000
--- a/sal/osl/w32/libutil.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifdef _MSC_VER
-#pragma warning(push,1) /* disable warnings within system headers */
-#endif
-#include <windows.h>
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-static BOOL g_bInit = FALSE;
-static DWORD g_dwPlatformId = VER_PLATFORM_WIN32_WINDOWS;
-
-DWORD GetPlatformId()
-{
-
- if (!g_bInit)
- {
- OSVERSIONINFO aInfo;
-
- aInfo.dwOSVersionInfoSize = sizeof(aInfo);
- if (GetVersionEx(&aInfo))
- g_dwPlatformId = aInfo.dwPlatformId;
-
- g_bInit = TRUE;
- }
-
- return g_dwPlatformId;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/osl/w32/module.cxx b/sal/osl/w32/module.cxx
index ad67487..11461af 100644
--- a/sal/osl/w32/module.cxx
+++ b/sal/osl/w32/module.cxx
@@ -189,73 +189,6 @@ osl_getAsciiFunctionSymbol( oslModule Module, const sal_Char *pSymbol )
#undef LPMODULEENTRY32
#endif
-typedef HANDLE (WINAPI *CreateToolhelp32Snapshot_PROC)( DWORD dwFlags, DWORD th32ProcessID );
-typedef BOOL (WINAPI *Module32First_PROC)( HANDLE hSnapshot, LPMODULEENTRY32 lpme32 );
-typedef BOOL (WINAPI *Module32Next_PROC)( HANDLE hSnapshot, LPMODULEENTRY32 lpme32 );
-
-static sal_Bool SAL_CALL _osl_addressGetModuleURL_Windows( void *pv, rtl_uString **pustrURL )
-{
- sal_Bool bSuccess = sal_False; /* Assume failure */
- HMODULE hModKernel32 = GetModuleHandleA( "KERNEL32.DLL" );
-
- if ( hModKernel32 )
- {
- CreateToolhelp32Snapshot_PROC lpfnCreateToolhelp32Snapshot = (CreateToolhelp32Snapshot_PROC)GetProcAddress( hModKernel32, "CreateToolhelp32Snapshot" );
- Module32First_PROC lpfnModule32First = (Module32First_PROC)GetProcAddress( hModKernel32, "Module32First" );
- Module32Next_PROC lpfnModule32Next = (Module32Next_PROC)GetProcAddress( hModKernel32, "Module32Next" );
-
- if ( lpfnCreateToolhelp32Snapshot && lpfnModule32First && lpfnModule32Next )
- {
- HANDLE hModuleSnap = NULL;
- DWORD dwProcessId = GetCurrentProcessId();
-
- // Take a snapshot of all modules in the specified process.
-
- hModuleSnap = lpfnCreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId );
-
- if ( INVALID_HANDLE_VALUE != hModuleSnap )
- {
- MODULEENTRY32 me32 = {0};
-
- // Fill the size of the structure before using it.
-
- me32.dwSize = sizeof(MODULEENTRY32);
-
- // Walk the module list of the process, and find the module of
- // interest. Then copy the information to the buffer pointed
- // to by lpMe32 so that it can be returned to the caller.
-
- if ( lpfnModule32First(hModuleSnap, &me32) )
- {
- do
- {
- if ( (BYTE *)pv >= (BYTE *)me32.hModule && (BYTE *)pv < (BYTE *)me32.hModule + me32.modBaseSize )
- {
- rtl_uString *ustrSysPath = NULL;
-
- rtl_string2UString( &ustrSysPath, me32.szExePath, strlen(me32.szExePath), osl_getThreadTextEncoding(), OSTRING_TO_OUSTRING_CVTFLAGS );
- OSL_ASSERT(ustrSysPath != NULL);
- osl_getFileURLFromSystemPath( ustrSysPath, pustrURL );
- rtl_uString_release( ustrSysPath );
-
- bSuccess = sal_True;
- }
-
- } while ( !bSuccess && lpfnModule32Next( hModuleSnap, &me32 ) );
- }
-
-
- // Do not forget to clean up the snapshot object.
-
- CloseHandle (hModuleSnap);
- }
-
- }
- }
-
- return bSuccess;
-}
-
/***************************************************************************************/
/* Implementation for Windows NT, 2K and XP (2K and XP could use the above method too) */
/***************************************************************************************/
@@ -455,10 +388,7 @@ static sal_Bool SAL_CALL _osl_addressGetModuleURL_NT( void *pv, rtl_uString **pu
sal_Bool SAL_CALL osl_getModuleURLFromAddress( void *pv, rtl_uString **pustrURL )
{
/* Use ..._NT first because ..._NT4 is much slower */
- if ( IS_NT )
- return _osl_addressGetModuleURL_NT( pv, pustrURL ) || _osl_addressGetModuleURL_NT4( pv, pustrURL );
- else
- return _osl_addressGetModuleURL_Windows( pv, pustrURL );
+ return _osl_addressGetModuleURL_NT( pv, pustrURL ) || _osl_addressGetModuleURL_NT4( pv, pustrURL );
}
/*****************************************************************************/
diff --git a/sal/osl/w32/pipe.c b/sal/osl/w32/pipe.c
index f284a02..3d00aa2 100644
--- a/sal/osl/w32/pipe.c
+++ b/sal/osl/w32/pipe.c
@@ -28,8 +28,6 @@
#include "system.h"
-#include "pipeimpl.h"
-
#include <osl/pipe.h>
#include <osl/diagnose.h>
#include <osl/thread.h>
@@ -139,7 +137,7 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
rtl_uString_newFromAscii(&path, PIPESYSTEM);
rtl_uString_newFromAscii(&name, PIPEPREFIX);
- if ( /*IS_NT &&*/ Security)
+ if ( Security)
{
rtl_uString *Ident = NULL;
rtl_uString *Delim = NULL;
@@ -189,20 +187,7 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
{
SetLastError( ERROR_SUCCESS );
- if ( IS_NT )
- pPipe->m_NamedObject = CreateMutexW( NULL, FALSE, name->buffer );
- else
- {
- LPSTR pszTempBuffer = NULL;
- int nCharsNeeded;
-
- nCharsNeeded = WideCharToMultiByte( CP_ACP, 0, name->buffer, name->length, NULL, 0, NULL, NULL );
- pszTempBuffer = alloca( nCharsNeeded * sizeof(CHAR) );
- nCharsNeeded = WideCharToMultiByte( CP_ACP, 0, name->buffer, name->length, pszTempBuffer, nCharsNeeded, NULL, NULL );
- pszTempBuffer[nCharsNeeded-1] = 0;
-
- pPipe->m_NamedObject = CreateMutexA( NULL, FALSE, pszTempBuffer );
- }
+ pPipe->m_NamedObject = CreateMutexW( NULL, FALSE, name->buffer );
if ( pPipe->m_NamedObject != INVALID_HANDLE_VALUE && pPipe->m_NamedObject != NULL )
{
@@ -211,45 +196,22 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
pPipe->m_Security = pSecAttr;
rtl_uString_assign(&pPipe->m_Name, name);
- if (IS_NT)
+ /* try to open system pipe */
+ pPipe->m_File = CreateNamedPipeW(
+ path->buffer,
+ PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
+ PIPE_WAIT | PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,
+ PIPE_UNLIMITED_INSTANCES,
+ 4096, 4096,
+ NMPWAIT_WAIT_FOREVER,
+ pPipe->m_Security);
+
+ if (pPipe->m_File != INVALID_HANDLE_VALUE)
{
- /* try to open system pipe */
- pPipe->m_File = CreateNamedPipeW(
- path->buffer,
- PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
- PIPE_WAIT | PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,
- PIPE_UNLIMITED_INSTANCES,
- 4096, 4096,
- NMPWAIT_WAIT_FOREVER,
- pPipe->m_Security);
-
- if (pPipe->m_File != INVALID_HANDLE_VALUE)
- {
- rtl_uString_release( name );
- rtl_uString_release( path );
+ rtl_uString_release( name );
+ rtl_uString_release( path );
- return pPipe;
- }
- }
- else /* Win 9x */
- {
- LPSTR pszTempBuffer = NULL;
- int nCharsNeeded;
-
- nCharsNeeded = WideCharToMultiByte( CP_ACP, 0, path->buffer, path->length, NULL, 0, NULL, NULL );
- pszTempBuffer = alloca( nCharsNeeded * sizeof(CHAR) );
- nCharsNeeded = WideCharToMultiByte( CP_ACP, 0, path->buffer, path->length, pszTempBuffer, nCharsNeeded, NULL, NULL );
- pszTempBuffer[nCharsNeeded-1] = 0;
-
- pPipe->m_File = CreateSimplePipe( pszTempBuffer );
-
- if ( IsValidHandle(pPipe->m_File) )
- {
- rtl_uString_release( name );
- rtl_uString_release( path );
-
- return pPipe;
- }
+ return pPipe;
}
}
else
@@ -261,63 +223,39 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
}
else
{
- if (IS_NT)
+ BOOL fPipeAvailable;
+
+ do
{
- BOOL fPipeAvailable;
+ /* free instance should be available first */
+ fPipeAvailable = WaitNamedPipeW(path->buffer, NMPWAIT_WAIT_FOREVER);
- do
+ /* first try to open system pipe */
+ if ( fPipeAvailable )
{
- /* free instance should be available first */
- fPipeAvailable = WaitNamedPipeW(path->buffer, NMPWAIT_WAIT_FOREVER);
-
- /* first try to open system pipe */
- if ( fPipeAvailable )
+ pPipe->m_File = CreateFileW(
+ path->buffer,
+ GENERIC_READ|GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL,
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
+ NULL);
+
+ if ( pPipe->m_File != INVALID_HANDLE_VALUE )
{
- pPipe->m_File = CreateFileW(
- path->buffer,
- GENERIC_READ|GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL,
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
- NULL);
-
- if ( pPipe->m_File != INVALID_HANDLE_VALUE )
- {
- // We got it !
- rtl_uString_release( name );
- rtl_uString_release( path );
+ // We got it !
+ rtl_uString_release( name );
+ rtl_uString_release( path );
- return (pPipe);
- }
- else
- {
- // Pipe instance maybe catched by another client -> try again
- }
+ return (pPipe);
+ }
+ else
+ {
+ // Pipe instance maybe catched by another client -> try again
}
- } while ( fPipeAvailable );
- }
- else /* Win 9x */
- {
- LPSTR pszTempBuffer = NULL;
- int nCharsNeeded;
-
- nCharsNeeded = WideCharToMultiByte( CP_ACP, 0, path->buffer, path->length, NULL, 0, NULL, NULL );
- pszTempBuffer = alloca( nCharsNeeded * sizeof(CHAR) );
- nCharsNeeded = WideCharToMultiByte( CP_ACP, 0, path->buffer, path->length, pszTempBuffer, nCharsNeeded, NULL, NULL );
- pszTempBuffer[nCharsNeeded-1] = 0;
-
- pPipe->m_File = OpenSimplePipe( pszTempBuffer );
-
- if ( IsValidHandle(pPipe->m_File) )
- {
- // We got it !
- rtl_uString_release( name );
- rtl_uString_release( path );
-
- return (pPipe);
}
- }
+ } while ( fPipeAvailable );
}
/* if we reach here something went wrong */
@@ -352,21 +290,13 @@ void SAL_CALL osl_closePipe( oslPipe pPipe )
if( pPipe && ! pPipe->m_bClosed )
{
pPipe->m_bClosed = sal_True;
- if (IS_NT)
+ /* if we have a system pipe close it */
+ if (pPipe->m_File != INVALID_HANDLE_VALUE)
{
- /* if we have a system pipe close it */
- if (pPipe->m_File != INVALID_HANDLE_VALUE)
- {
- /* FlushFileBuffers(pPipe->m_File); */
- DisconnectNamedPipe(pPipe->m_File);
- CloseHandle(pPipe->m_File);
- }
- }
- else
- {
- CloseSimplePipe( pPipe->m_File );
+ /* FlushFileBuffers(pPipe->m_File); */
+ DisconnectNamedPipe(pPipe->m_File);
+ CloseHandle(pPipe->m_File);
}
-
}
}
@@ -380,25 +310,23 @@ oslPipe SAL_CALL osl_acceptPipe(oslPipe pPipe)
HANDLE Event;
OVERLAPPED os;
- OSL_ASSERT(pPipe);
+ DWORD nBytesTransfered;
+ rtl_uString* path = NULL;
+ rtl_uString* temp = NULL;
- if (IS_NT)
- {
- DWORD nBytesTransfered;
- rtl_uString* path = NULL;
- rtl_uString* temp = NULL;
+ OSL_ASSERT(pPipe);
- OSL_ASSERT (pPipe->m_File != INVALID_HANDLE_VALUE);
+ OSL_ASSERT (pPipe->m_File != INVALID_HANDLE_VALUE);
- Event = pPipe->m_AcceptEvent;
- rtl_zeroMemory(&os, sizeof(OVERLAPPED));
- os.hEvent = pPipe->m_AcceptEvent;
- ResetEvent(pPipe->m_AcceptEvent);
+ Event = pPipe->m_AcceptEvent;
+ rtl_zeroMemory(&os, sizeof(OVERLAPPED));
+ os.hEvent = pPipe->m_AcceptEvent;
+ ResetEvent(pPipe->m_AcceptEvent);
- if ( !ConnectNamedPipe(pPipe->m_File, &os))
+ if ( !ConnectNamedPipe(pPipe->m_File, &os))
+ {
+ switch ( GetLastError() )
{
- switch ( GetLastError() )
- {
case ERROR_PIPE_CONNECTED: // Client already connected to pipe
case ERROR_NO_DATA: // Client was connected but has already closed pipe end
// should only appear in nonblocking mode but in fact does
@@ -426,43 +354,30 @@ oslPipe SAL_CALL osl_acceptPipe(oslPipe pPipe)
break;
default: // All other error say that somethings going wrong.
return 0;
- }
}
-
-
- pAcceptedPipe = __osl_createPipeImpl();
- OSL_ASSERT(pAcceptedPipe);
-
- osl_incrementInterlockedCount(&(pAcceptedPipe->m_Reference));
- rtl_uString_assign(&pAcceptedPipe->m_Name, pPipe->m_Name);
- pAcceptedPipe->m_File = pPipe->m_File;
-
- rtl_uString_newFromAscii(&temp, PIPESYSTEM);
- rtl_uString_newConcat(&path, temp, pPipe->m_Name);
- rtl_uString_release(temp);
-
- // prepare for next accept
- pPipe->m_File =
- CreateNamedPipeW(path->buffer,
- PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
- PIPE_WAIT | PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,
- PIPE_UNLIMITED_INSTANCES,
- 4096, 4096,
- NMPWAIT_WAIT_FOREVER,
- pAcceptedPipe->m_Security);
- rtl_uString_release( path );
}
- else /* Win9x */
- {
- pAcceptedPipe = __osl_createPipeImpl();
- OSL_ASSERT(pAcceptedPipe);
- osl_incrementInterlockedCount(&(pAcceptedPipe->m_Reference));
- rtl_uString_assign(&pAcceptedPipe->m_Name, pPipe->m_Name);
- pAcceptedPipe->m_File = pPipe->m_File;
+ pAcceptedPipe = __osl_createPipeImpl();
+ OSL_ASSERT(pAcceptedPipe);
- pAcceptedPipe->m_File = AcceptSimplePipeConnection( pPipe->m_File );
- }
+ osl_incrementInterlockedCount(&(pAcceptedPipe->m_Reference));
+ rtl_uString_assign(&pAcceptedPipe->m_Name, pPipe->m_Name);
+ pAcceptedPipe->m_File = pPipe->m_File;
+
+ rtl_uString_newFromAscii(&temp, PIPESYSTEM);
+ rtl_uString_newConcat(&path, temp, pPipe->m_Name);
+ rtl_uString_release(temp);
+
+ // prepare for next accept
+ pPipe->m_File =
+ CreateNamedPipeW(path->buffer,
+ PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
+ PIPE_WAIT | PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,
+ PIPE_UNLIMITED_INSTANCES,
+ 4096, 4096,
+ NMPWAIT_WAIT_FOREVER,
+ pAcceptedPipe->m_Security);
+ rtl_uString_release( path );
return pAcceptedPipe;
}
@@ -475,47 +390,32 @@ sal_Int32 SAL_CALL osl_receivePipe(oslPipe pPipe,
sal_Int32 BytesToRead)
{
DWORD nBytes;
+ OVERLAPPED os;
OSL_ASSERT(pPipe);
- /* if we have a system pipe use it */
- if ( IS_NT /*pPipe->m_File != INVALID_HANDLE_VALUE*/)
- {
- OVERLAPPED os;
- rtl_zeroMemory(&os,sizeof(OVERLAPPED));
- os.hEvent = pPipe->m_ReadEvent;
+ rtl_zeroMemory(&os,sizeof(OVERLAPPED));
+ os.hEvent = pPipe->m_ReadEvent;
- ResetEvent(pPipe->m_ReadEvent);
-
- if (! ReadFile(pPipe->m_File, pBuffer, BytesToRead, &nBytes, &os) &&
- ((GetLastError() != ERROR_IO_PENDING) ||
- ! GetOverlappedResult(pPipe->m_File, &os, &nBytes, TRUE)))
- {
- DWORD lastError = GetLastError();
-
- if (lastError == ERROR_MORE_DATA)
- nBytes = BytesToRead;
- else
- {
- if (lastError == ERROR_PIPE_NOT_CONNECTED)
- nBytes = 0;
- else
- nBytes = (DWORD) -1;
-
- pPipe->m_Error = osl_Pipe_E_ConnectionAbort;
- }
- }
- }
- else
+ ResetEvent(pPipe->m_ReadEvent);
+
+ if (! ReadFile(pPipe->m_File, pBuffer, BytesToRead, &nBytes, &os) &&
+ ((GetLastError() != ERROR_IO_PENDING) ||
+ ! GetOverlappedResult(pPipe->m_File, &os, &nBytes, TRUE)))
{
- BOOL fSuccess = ReadSimplePipe( pPipe->m_File, pBuffer, BytesToRead, &nBytes, TRUE );
+ DWORD lastError = GetLastError();
+
+ if (lastError == ERROR_MORE_DATA)
+ nBytes = BytesToRead;
+ else
+ {
+ if (lastError == ERROR_PIPE_NOT_CONNECTED)
+ nBytes = 0;
+ else
+ nBytes = (DWORD) -1;
- if ( !fSuccess )
- {
- nBytes = 0;
pPipe->m_Error = osl_Pipe_E_ConnectionAbort;
}
-
}
return (nBytes);
@@ -529,36 +429,24 @@ sal_Int32 SAL_CALL osl_sendPipe(oslPipe pPipe,
sal_Int32 BytesToSend)
{
DWORD nBytes;
+ OVERLAPPED os;
+
OSL_ASSERT(pPipe);
- if (IS_NT/*pPipe->m_File != INVALID_HANDLE_VALUE*/)
- {
- OVERLAPPED os;
- rtl_zeroMemory(&os, sizeof(OVERLAPPED));
- os.hEvent = pPipe->m_WriteEvent;
- ResetEvent(pPipe->m_WriteEvent);
-
- if (! WriteFile(pPipe->m_File, pBuffer, BytesToSend, &nBytes, &os) &&
- ((GetLastError() != ERROR_IO_PENDING) ||
- ! GetOverlappedResult(pPipe->m_File, &os, &nBytes, TRUE)))
- {
- if (GetLastError() == ERROR_PIPE_NOT_CONNECTED)
- nBytes = 0;
- else
- nBytes = (DWORD) -1;
+ rtl_zeroMemory(&os, sizeof(OVERLAPPED));
+ os.hEvent = pPipe->m_WriteEvent;
+ ResetEvent(pPipe->m_WriteEvent);
- pPipe->m_Error = osl_Pipe_E_ConnectionAbort;
- }
- }
- else
+ if (! WriteFile(pPipe->m_File, pBuffer, BytesToSend, &nBytes, &os) &&
+ ((GetLastError() != ERROR_IO_PENDING) ||
+ ! GetOverlappedResult(pPipe->m_File, &os, &nBytes, TRUE)))
{
- BOOL fSuccess = WriteSimplePipe( pPipe->m_File, pBuffer, BytesToSend, &nBytes, TRUE );
-
- if ( !fSuccess )
- {
+ if (GetLastError() == ERROR_PIPE_NOT_CONNECTED)
nBytes = 0;
- pPipe->m_Error = osl_Pipe_E_ConnectionAbort;
- }
+ else
+ nBytes = (DWORD) -1;
+
+ pPipe->m_Error = osl_Pipe_E_ConnectionAbort;
}
return (nBytes);
diff --git a/sal/osl/w32/pipeimpl.cxx b/sal/osl/w32/pipeimpl.cxx
deleted file mode 100644
index c7cb159..0000000
--- a/sal/osl/w32/pipeimpl.cxx
+++ /dev/null
@@ -1,772 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sal.hxx"
-# include "pipeimpl.h"
-
-#ifndef _INC_MALLOC
-# include <malloc.h>
-#endif
-
-#ifndef _INC_TCHAR
-# ifdef UNICODE
-# define _UNICODE
-# endif
-# include <tchar.h>
-#endif
-
-const TCHAR PIPE_NAME_PREFIX_MAPPING[] = TEXT("PIPE_FILE_MAPPING_");
-const TCHAR PIPE_NAME_PREFIX_SYNCHRONIZE[] = TEXT("PIPE_SYNCHRONIZE_MUTEX_");
-const TCHAR PIPE_NAME_PREFIX_CONNECTION[] = TEXT("PIPE_CONNECTION_SEMAPHORE_");
-
-const DWORD PIPE_BUFFER_SIZE = 4096;
-
-
-//============================================================================
-// PipeData
-//============================================================================
-
-struct PipeData
-{
- DWORD dwProcessId;
- HANDLE hReadPipe;
- HANDLE hWritePipe;
-};
-
-//============================================================================
-// Pipe
-//============================================================================
-
-#ifdef UNICODE
-#define Pipe PipeW
-#define ClientPipe ClientPipeW
-#define ServerPipe ServerPipeW
-#else
-#define Pipe PipeA
-#define ClientPipe ClientPipeA
-#define ServerPipe ServerPipeA
-#endif
-
-class Pipe
-{
-protected:
- HANDLE m_hReadPipe; // Handle to use for reading
- HANDLE m_hWritePipe; // Handle to use for writing
-
- Pipe( HANDLE hReadPipe, HANDLE hWritePipe );
-
- static HANDLE CreatePipeDataMutex( LPCTSTR lpName, BOOL bInitialOwner );
- static HANDLE CreatePipeDataMapping( LPCTSTR lpName );
- static HANDLE OpenPipeDataMapping( LPCTSTR lpName );
- static HANDLE CreatePipeConnectionSemaphore( LPCTSTR lpName, LONG lInitialCount, LONG lMaximumcount );
-
-public:
- Pipe( const Pipe& );
- const Pipe& operator = ( const Pipe& );
- virtual ~Pipe();
-
- virtual bool Close();
- virtual bool Write( LPCVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpBytesWritten, bool bWait = true );
- virtual bool Read( LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpBytesRead, bool bWait = true );
-
- virtual Pipe *AcceptConnection()
- {
- SetLastError( ERROR_INVALID_HANDLE );
- return NULL;
- }
-
- void * operator new( size_t nBytes )
- {
- return HeapAlloc( GetProcessHeap(), 0, nBytes );
- }
-
- void operator delete( void *ptr )
- {
- HeapFree( GetProcessHeap(), 0, ptr );
- }
-
- bool is() const
- {
- return (FALSE != HeapValidate( GetProcessHeap(), 0, this ));
- }
-
-};
-
-//============================================================================
-// ClientPipe
-//============================================================================
-
-class ClientPipe : public Pipe
-{
-protected:
- ClientPipe( HANDLE hReadPipe, HANDLE hWritePipe );
-public:
- static ClientPipe* Create( LPCTSTR lpName );
-};
-
-//============================================================================
-// ServerPipe
-//============================================================================
-
-class ServerPipe : public Pipe
-{
-protected:
- HANDLE m_hMapping;
- HANDLE m_hSynchronize;
- LPTSTR m_lpName;
-
- ServerPipe( LPCTSTR lpName, HANDLE hMapping, HANDLE hSynchronize, HANDLE hReadPipe, HANDLE hWritePipe );
-public:
- virtual ~ServerPipe();
-
- static ServerPipe *Create( LPCTSTR lpName );
-
- virtual Pipe *AcceptConnection();
-};
-
-HANDLE Pipe::CreatePipeDataMapping( LPCTSTR lpName )
-{
- HANDLE hMapping = NULL;
- LPTSTR lpMappingName = (LPTSTR)alloca( _tcslen(lpName) * sizeof(TCHAR) + sizeof(PIPE_NAME_PREFIX_MAPPING) );
-
- if ( lpMappingName )
- {
- _tcscpy( lpMappingName, PIPE_NAME_PREFIX_MAPPING );
- _tcscat( lpMappingName, lpName );
-
- LPTSTR lpMappingFileName = (LPTSTR)alloca( MAX_PATH * sizeof(TCHAR) );
-
- if ( lpMappingFileName )
- {
- DWORD nChars = GetTempPath( MAX_PATH, lpMappingFileName );
-
- if ( MAX_PATH + _tcslen(lpName) < nChars + 1 )
- {
- lpMappingFileName = (LPTSTR)alloca( (nChars + 1 + _tcslen(lpName)) * sizeof(TCHAR) );
- if ( lpMappingFileName )
- nChars = GetTempPath( nChars, lpMappingFileName );
- else
- {
- nChars = 0;
- SetLastError( ERROR_NOT_ENOUGH_MEMORY );
- }
- }
-
- if ( nChars )
- {
- _tcscat( lpMappingFileName, lpMappingName );
-
- HANDLE hFile = CreateFile(
- lpMappingFileName,
- GENERIC_READ | GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL,
- OPEN_ALWAYS,
- FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,
- NULL );
-
- if ( IsValidHandle(hFile) )
- {
- hMapping = CreateFileMapping(
- (HANDLE)hFile,
- (LPSECURITY_ATTRIBUTES)NULL,
- PAGE_READWRITE,
- 0,
- sizeof(PipeData),
- lpMappingName );
-
- CloseHandle( hFile );
- }
- }
- }
- else
- SetLastError( ERROR_NOT_ENOUGH_MEMORY );
- }
-
- return hMapping;
-}
-
-HANDLE Pipe::OpenPipeDataMapping( LPCTSTR lpName )
-{
- HANDLE hMapping = NULL;
- LPTSTR lpMappingName = (LPTSTR)alloca( _tcslen(lpName) * sizeof(TCHAR) + sizeof(PIPE_NAME_PREFIX_MAPPING) );
-
- if ( lpMappingName )
- {
- _tcscpy( lpMappingName, PIPE_NAME_PREFIX_MAPPING );
- _tcscat( lpMappingName, lpName );
-
- hMapping = OpenFileMapping( FILE_MAP_ALL_ACCESS, FALSE, lpMappingName );
- }
-
- return hMapping;
-}
-
-HANDLE Pipe::CreatePipeDataMutex( LPCTSTR lpName, BOOL bInitialOwner )
-{
- HANDLE hMutex = NULL;
- LPTSTR lpMutexName = (LPTSTR)alloca( _tcslen(lpName) * sizeof(TCHAR) + sizeof(PIPE_NAME_PREFIX_SYNCHRONIZE) );
-
- if ( lpMutexName )
- {
- _tcscpy( lpMutexName, PIPE_NAME_PREFIX_SYNCHRONIZE );
- _tcscat( lpMutexName, lpName );
-
- hMutex = CreateMutex( NULL, bInitialOwner, lpMutexName );
- }
-
- return hMutex;
-}
-
-HANDLE Pipe::CreatePipeConnectionSemaphore( LPCTSTR lpName, LONG lInitialCount, LONG lMaximumCount )
-{
- HANDLE hSemaphore = NULL;
- LPTSTR lpSemaphoreName = (LPTSTR)alloca( _tcslen(lpName) * sizeof(TCHAR) + sizeof(PIPE_NAME_PREFIX_CONNECTION) );
-
- if ( lpSemaphoreName )
- {
- _tcscpy( lpSemaphoreName, PIPE_NAME_PREFIX_CONNECTION );
- _tcscat( lpSemaphoreName, lpName );
-
- hSemaphore = CreateSemaphore( NULL, lInitialCount, lMaximumCount, lpSemaphoreName );
- }
-
- return hSemaphore;
-}
-
-
-//----------------------------------------------------------------------------
-// Pipe copy ctor
-//----------------------------------------------------------------------------
-
-Pipe::Pipe( const Pipe& rPipe ) :
-m_hReadPipe( INVALID_HANDLE_VALUE ),
-m_hWritePipe( INVALID_HANDLE_VALUE )
-{
- DuplicateHandle(
- GetCurrentProcess(),
- rPipe.m_hReadPipe,
- GetCurrentProcess(),
- &m_hReadPipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-
- DuplicateHandle(
- GetCurrentProcess(),
- rPipe.m_hWritePipe,
- GetCurrentProcess(),
- &m_hWritePipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-}
-
-//----------------------------------------------------------------------------
-// Pipe assignment operator
-//----------------------------------------------------------------------------
-
-const Pipe& Pipe::operator = ( const Pipe& rPipe )
-{
- Close();
-
- DuplicateHandle(
- GetCurrentProcess(),
- rPipe.m_hReadPipe,
- GetCurrentProcess(),
- &m_hReadPipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-
- DuplicateHandle(
- GetCurrentProcess(),
- rPipe.m_hWritePipe,
- GetCurrentProcess(),
- &m_hWritePipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-
- return *this;
-}
-
-//----------------------------------------------------------------------------
-// Pipe ctor
-//----------------------------------------------------------------------------
-
-Pipe::Pipe( HANDLE hReadPipe, HANDLE hWritePipe ) :
-m_hReadPipe( INVALID_HANDLE_VALUE ),
-m_hWritePipe( INVALID_HANDLE_VALUE )
-{
- DuplicateHandle(
- GetCurrentProcess(),
- hReadPipe,
- GetCurrentProcess(),
- &m_hReadPipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-
- DuplicateHandle(
- GetCurrentProcess(),
- hWritePipe,
- GetCurrentProcess(),
- &m_hWritePipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-}
-
-//----------------------------------------------------------------------------
-// Pipe dtor
-//----------------------------------------------------------------------------
-
-Pipe::~Pipe()
-{
- Close();
-}
-
-//----------------------------------------------------------------------------
-// Pipe Close
-//----------------------------------------------------------------------------
-
-bool Pipe::Close()
-{
- bool fSuccess = false; // Assume failure
-
- if ( IsValidHandle(m_hReadPipe) )
- {
- CloseHandle( m_hReadPipe );
- m_hReadPipe = INVALID_HANDLE_VALUE;
- }
-
- if ( IsValidHandle(m_hWritePipe) )
- {
- CloseHandle( m_hWritePipe );
- m_hWritePipe = INVALID_HANDLE_VALUE;
- }
-
- return fSuccess;
-}
-
-//----------------------------------------------------------------------------
-// Pipe Write
-//----------------------------------------------------------------------------
-
-bool Pipe::Write( LPCVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpBytesWritten, bool bWait )
-{
- DWORD dwBytesAvailable = 0;
- BOOL fSuccess = TRUE;
-
- if ( !bWait )
- fSuccess = PeekNamedPipe( m_hReadPipe, NULL, 0, NULL, &dwBytesAvailable, NULL );
-
- if ( fSuccess )
- {
- if ( !bWait && dwBytesToWrite > PIPE_BUFFER_SIZE - dwBytesAvailable )
- dwBytesToWrite = PIPE_BUFFER_SIZE - dwBytesAvailable ;
-
- return !!WriteFile( m_hWritePipe, lpBuffer, dwBytesToWrite, lpBytesWritten, NULL );
- }
-
- return false;
-}
-
-//----------------------------------------------------------------------------
-// Pipe Read
-//----------------------------------------------------------------------------
-
-bool Pipe::Read( LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpBytesRead, bool bWait )
-{
- DWORD dwBytesAvailable = 0;
- BOOL fSuccess = TRUE;
-
- if ( !bWait )
- fSuccess = PeekNamedPipe( m_hReadPipe, NULL, 0, NULL, &dwBytesAvailable, NULL );
-
- if ( fSuccess )
- {
- if ( bWait || dwBytesAvailable )
- return !!ReadFile( m_hReadPipe, lpBuffer, dwBytesToRead, lpBytesRead, NULL );
- else
- {
- *lpBytesRead = 0;
- return true;
- }
- }
-
- return false;
-}
-
-
-
-//----------------------------------------------------------------------------
-// Client pipe dtor
-//----------------------------------------------------------------------------
-
-ClientPipe::ClientPipe( HANDLE hReadPipe, HANDLE hWritePipe ) : Pipe( hReadPipe, hWritePipe )
-{
-}
-
-//----------------------------------------------------------------------------
-// Client pipe creation
-//----------------------------------------------------------------------------
-
-ClientPipe *ClientPipe::Create( LPCTSTR lpName )
-{
- ClientPipe *pPipe = NULL; // Assume failure
-
- HANDLE hMapping = OpenPipeDataMapping( lpName );
-
- if ( IsValidHandle(hMapping) )
- {
- PipeData *pData = (PipeData*)MapViewOfFile( hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
-
- if ( pData )
- {
- HANDLE hSourceProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, pData->dwProcessId );
-
- if ( IsValidHandle(hSourceProcess) )
- {
- BOOL fSuccess;
- HANDLE hReadPipe = INVALID_HANDLE_VALUE, hWritePipe = INVALID_HANDLE_VALUE;
-
- fSuccess = DuplicateHandle(
- hSourceProcess,
- pData->hReadPipe,
- GetCurrentProcess(),
- &hReadPipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-
- fSuccess = fSuccess && DuplicateHandle(
- hSourceProcess,
- pData->hWritePipe,
- GetCurrentProcess(),
- &hWritePipe,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-
- if ( fSuccess )
- pPipe = new ClientPipe( hReadPipe, hWritePipe );
-
- if ( IsValidHandle(hWritePipe) )
- CloseHandle( hWritePipe );
-
- if ( IsValidHandle(hReadPipe) )
- CloseHandle( hReadPipe );
-
- HANDLE hConnectionRequest = CreatePipeConnectionSemaphore( lpName, 0, 1 );
-
- ReleaseSemaphore( hConnectionRequest, 1, NULL );
-
- CloseHandle( hConnectionRequest );
-
- CloseHandle( hSourceProcess );
- }
-
- UnmapViewOfFile( pData );
- }
-
- CloseHandle( hMapping );
- }
-
- return pPipe;
-}
-
-
-
-//----------------------------------------------------------------------------
-// ServerPipe ctor
-//----------------------------------------------------------------------------
-
-ServerPipe::ServerPipe( LPCTSTR lpName, HANDLE hMapping, HANDLE hSynchronize, HANDLE hReadPipe, HANDLE hWritePipe ) : Pipe( hReadPipe, hWritePipe ),
-m_hMapping( NULL ),
-m_hSynchronize( NULL ),
-m_lpName( NULL )
-{
- DuplicateHandle(
- GetCurrentProcess(),
- hMapping,
- GetCurrentProcess(),
- &m_hMapping,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS );
-
- DuplicateHandle(
- GetCurrentProcess(),
- hSynchronize,
- GetCurrentProcess(),
- &m_hSynchronize,
- 0,
- FALSE,
- DUPLICATE_SAME_ACCESS
- );
- m_lpName = new TCHAR[_tcslen(lpName) + 1];
- if ( m_lpName )
- _tcscpy( m_lpName, lpName );
-}
-
-//----------------------------------------------------------------------------
-// ServerPipe dtor
-//----------------------------------------------------------------------------
-
-ServerPipe::~ServerPipe()
-{
- if ( IsValidHandle(m_hMapping) )
- CloseHandle( m_hMapping );
- if ( m_lpName )
- delete[]m_lpName;
-}
-
-//----------------------------------------------------------------------------
-// ServerPipe AcceptConnection
-//----------------------------------------------------------------------------
-
-Pipe *ServerPipe::AcceptConnection()
-{
- Pipe *pPipe = NULL; // Assume failure;
-
- HANDLE hConnectionRequest = CreatePipeConnectionSemaphore( m_lpName, 0, 1 );
-
- if ( WAIT_OBJECT_0 == WaitForSingleObject( hConnectionRequest, INFINITE ) )
- {
- pPipe = new Pipe( *this );
- Close();
-
- // Create new inbound Pipe
-
- HANDLE hClientWritePipe = NULL, hServerReadPipe = NULL;
-
- BOOL fSuccess = CreatePipe( &hServerReadPipe, &hClientWritePipe, NULL, PIPE_BUFFER_SIZE );
-
-
- if ( fSuccess )
- {
- // Create outbound pipe
-
- HANDLE hClientReadPipe = NULL, hServerWritePipe = NULL;
-
- if ( CreatePipe( &hClientReadPipe, &hServerWritePipe, NULL, PIPE_BUFFER_SIZE ) )
- {
- m_hReadPipe = hServerReadPipe;
- m_hWritePipe = hServerWritePipe;
-
- PipeData *pData = (PipeData *)MapViewOfFile( m_hMapping, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(PipeData) );
-
- HANDLE hSynchronize = CreatePipeDataMutex( m_lpName, TRUE );
-
- CloseHandle( pData->hReadPipe );
- CloseHandle( pData->hWritePipe );
-
- pData->hReadPipe = hClientReadPipe;
- pData->hWritePipe = hClientWritePipe;
-
- ReleaseMutex( hSynchronize );
-
- CloseHandle( hSynchronize );
-
- }
- else
- {
- CloseHandle( hClientWritePipe );
- CloseHandle( hServerWritePipe );
- }
- }
-
- ReleaseMutex( hConnectionRequest );
- }
-
- CloseHandle( hConnectionRequest );
-
- return pPipe;
-}
-
-//----------------------------------------------------------------------------
-// Pipe creation
-//----------------------------------------------------------------------------
-
-ServerPipe *ServerPipe::Create( LPCTSTR lpName )
-{
- ServerPipe *pPipe = NULL;
-
- HANDLE hMapping = CreatePipeDataMapping( lpName );
-
- if ( IsValidHandle(hMapping) )
- {
- if ( ERROR_FILE_EXISTS != GetLastError() )
- {
- HANDLE hSynchronize = CreatePipeDataMutex( lpName, FALSE);
-
- WaitForSingleObject( hSynchronize, INFINITE );
-
- PipeData *pData = (PipeData*)MapViewOfFile( hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
-
- if ( pData )
- {
-
- // Initialize pipe data
-
- pData->dwProcessId = 0;
- pData->hReadPipe = NULL;
- pData->hWritePipe = NULL;
-
- // Create inbound pipe
-
- HANDLE hServerReadPipe = NULL, hClientWritePipe = NULL;
-
- BOOL fSuccess = CreatePipe( &hServerReadPipe, &hClientWritePipe, NULL, PIPE_BUFFER_SIZE );
-
- if ( fSuccess )
- {
- // Create outbound pipe
-
- HANDLE hServerWritePipe = NULL, hClientReadPipe = NULL;
-
- fSuccess = CreatePipe( &hClientReadPipe, &hServerWritePipe, NULL, PIPE_BUFFER_SIZE );
-
- if ( fSuccess )
- {
- pData->dwProcessId = GetCurrentProcessId();
- pData->hReadPipe = hClientReadPipe;
- pData->hWritePipe = hClientWritePipe;
- pPipe = new ServerPipe( lpName, hMapping, hSynchronize, hServerReadPipe, hServerWritePipe );
-
- CloseHandle( hServerWritePipe );
- CloseHandle( hServerReadPipe );
- }
- else
- {
- CloseHandle( hServerReadPipe );
- CloseHandle( hClientWritePipe );
- }
- }
-
- UnmapViewOfFile( pData );
- }
-
- ReleaseMutex( hSynchronize );
- CloseHandle( hSynchronize );
- }
-
- CloseHandle( hMapping );
- }
-
- return pPipe;
-}
-
-
-//----------------------------------------------------------------------------
-// C style API
-//----------------------------------------------------------------------------
-
-const TCHAR LOCAL_PIPE_PREFIX[] = TEXT("\\\\.\\PIPE\\" );
-
-extern "C" HANDLE WINAPI CreateSimplePipe( LPCTSTR lpName )
-{
- int nPrefixLen = _tcslen( LOCAL_PIPE_PREFIX );
- if ( 0 == _tcsnicmp( lpName, LOCAL_PIPE_PREFIX, nPrefixLen ) )
- lpName += nPrefixLen;
- return (HANDLE)ServerPipe::Create( lpName );
-}
-
-extern "C" HANDLE WINAPI OpenSimplePipe( LPCTSTR lpName )
-{
- int nPrefixLen = _tcslen( LOCAL_PIPE_PREFIX );
- if ( 0 == _tcsnicmp( lpName, LOCAL_PIPE_PREFIX, nPrefixLen ) )
- lpName += nPrefixLen;
- return (HANDLE)ClientPipe::Create( lpName );
-}
-
-extern "C" HANDLE WINAPI AcceptSimplePipeConnection( HANDLE hPipe )
-{
- Pipe *pPipe = (Pipe *)hPipe;
-
- if ( pPipe->is() )
- return (HANDLE)pPipe->AcceptConnection();
- else
- {
- SetLastError( ERROR_INVALID_HANDLE );
- return NULL;
- }
-}
-
-extern "C" BOOL WINAPI WaitForSimplePipe( LPCTSTR /*lpName*/, DWORD /*dwTimeOut*/ )
-{
- return FALSE;
-}
-
-extern "C" BOOL WINAPI WriteSimplePipe( HANDLE hPipe, LPCVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpBytesWritten, BOOL bWait )
-{
- Pipe *pPipe = (Pipe *)hPipe;
-
- if ( pPipe->is() )
- return pPipe->Write( lpBuffer, dwBytesToWrite, lpBytesWritten, bWait );
- else
- {
- SetLastError( ERROR_INVALID_HANDLE );
- return FALSE;
- }
-}
-
-extern "C" BOOL WINAPI ReadSimplePipe( HANDLE hPipe, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpBytesRead, BOOL bWait )
-{
- Pipe *pPipe = (Pipe *)hPipe;
-
- if ( pPipe->is() )
- return pPipe->Read( lpBuffer, dwBytesToRead, lpBytesRead, bWait );
- else
- {
- SetLastError( ERROR_INVALID_HANDLE );
- return FALSE;
- }
-}
-
-extern "C" BOOL WINAPI CloseSimplePipe( HANDLE hPipe )
-{
- Pipe *pPipe = (Pipe *)hPipe;
-
- if ( pPipe->is() )
- {
- delete pPipe;
- return TRUE;
- }
- else
- {
- SetLastError( ERROR_INVALID_HANDLE );
- return FALSE;
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/osl/w32/pipeimpl.h b/sal/osl/w32/pipeimpl.h
deleted file mode 100644
index 2f705a9..0000000
--- a/sal/osl/w32/pipeimpl.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-#ifndef _PIPEIMPL_H_
-#define _PIPEIMPL_H_
-
-#ifndef _WINDOWS_
-# ifdef _MSC_VER
-# pragma warning(push,1) /* disable warnings within system headers */
-# endif
-# include <windows.h>
-# ifdef _MSC_VER
-# pragma warning(pop)
-# endif
-#endif
-
-#ifndef _INC_MALLOC
-# include <malloc.h>
-#endif
-
-#ifndef _INC_TCHAR
-# ifdef UNICODE
-# define _UNICODE
-# endif
-# include <tchar.h>
-#endif
-
-#define EXPORT_PIPE_API
-
-//============================================================================
-// Helper functions
-//============================================================================
-
-// Because the value of an invalid HANDLE returned by API functions differs
-// between different functions and differs on different Windows platforms,
-// this function checks wether the handle has a meaningfull value.
-#ifndef __cplusplus
-
-#define IsValidHandle( handle ) ((DWORD)(handle) + 1 > 1)
-
-#else
-
-inline bool IsValidHandle( HANDLE handle )
-{
- return INVALID_HANDLE_VALUE != handle && NULL != handle;
-}
-
-extern "C" {
-
-#endif // __cplusplus
-
-
-EXPORT_PIPE_API HANDLE WINAPI CreateSimplePipeA( LPCSTR lpName );
-EXPORT_PIPE_API HANDLE WINAPI CreateSimplePipeW( LPCWSTR lpName );
-
-#ifdef UNICODE
-#define CreateSimplePipe CreateSimplePipeW
-#else
-#define CreateSimplePipe CreateSimplePipeA
-#endif
-
-EXPORT_PIPE_API HANDLE WINAPI OpenSimplePipeA( LPCSTR lpName );
-EXPORT_PIPE_API HANDLE WINAPI OpenSimplePipeW( LPCWSTR lpName );
-
-#ifdef UNICODE
-#define OpenSimplePipe OpenSimplePipeW
-#else
-#define OpenSimplePipe OpenSimplePipeA
-#endif
-
-EXPORT_PIPE_API HANDLE WINAPI AcceptSimplePipeConnection( HANDLE hPipe );
-
-EXPORT_PIPE_API BOOL WINAPI WaitForSimplePipeA( LPCSTR lpName, DWORD dwTimeOut );
-EXPORT_PIPE_API BOOL WINAPI WaitForSimplePipeW( LPCWSTR lpName, DWORD dwTimeOut );
-
-#ifdef UNICODE
-#define WaitForSimplePipe WaitForSimplePipeW
-#else
-#define WaitForSimplePipe WaitForSimplePipeA
-#endif
-
-
-EXPORT_PIPE_API BOOL WINAPI WriteSimplePipe( HANDLE hPipe, LPCVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpBytesWritten, BOOL bWait );
-EXPORT_PIPE_API BOOL WINAPI ReadSimplePipe( HANDLE hPipe, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpBytesRead, BOOL bWait );
-EXPORT_PIPE_API BOOL WINAPI CloseSimplePipe( HANDLE hPipe );
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // _PIPEIMPL_H_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/osl/w32/system.h b/sal/osl/w32/system.h
index 76dc928..d778828 100644
--- a/sal/osl/w32/system.h
+++ b/sal/osl/w32/system.h
@@ -105,24 +105,4 @@
# define NSPROTO_SPXII 1257
#endif // #ifdef GCC
-#ifdef _DLL_
-
-#ifdef __cplusplus
- extern "C" DWORD g_dwPlatformId;
-#else
- extern DWORD g_dwPlatformId;
-#endif // #ifdef __cplusplus
-
- #define IS_NT (g_dwPlatformId == VER_PLATFORM_WIN32_NT)
-#else
-
-#ifdef __cplusplus
- extern "C" DWORD GetPlatformId(void);
-#else
- extern DWORD GetPlatformId(void);
-#endif // #ifdef __cplusplus
-
- #define IS_NT (GetPlatformId() == VER_PLATFORM_WIN32_NT)
-#endif // #ifdef _DLL_
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list