--- old/src/jdk.jpackage/share/native/libapplauncher/WindowsPlatform.h 2019-02-15 18:14:18.005909700 -0800 +++ /dev/null 2019-02-15 18:14:19.000000000 -0800 @@ -1,190 +0,0 @@ -/* - * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code 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 - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#include "Platform.h" - -#ifdef WINDOWS - -#ifndef WINDOWSPLATFORM_H -#define WINDOWSPLATFORM_H - -#include "GenericPlatform.h" - -#include - -#pragma warning( push ) -// C4250 - 'class1' : inherits 'class2::member' -#pragma warning( disable : 4250 ) -class WindowsPlatform : virtual public Platform, GenericPlatform { -private: - DWORD FMainThread; - -public: - WindowsPlatform(void); - virtual ~WindowsPlatform(void); - - virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, - bool &release); - virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, - bool &release); - - virtual void ShowMessage(TString title, TString description); - virtual void ShowMessage(TString description); - virtual MessageResponse ShowResponseMessage(TString title, - TString description); - //virtual MessageResponse ShowResponseMessage(TString description); - - virtual void SetCurrentDirectory(TString Value); - virtual TString GetPackageRootDirectory(); - virtual TString GetAppDataDirectory(); - virtual TString GetBundledJVMLibraryFileName(TString RuntimePath); - - virtual ISectionalPropertyContainer* GetConfigFile(TString FileName); - - virtual TString GetModuleFileName(); - virtual Module LoadLibrary(TString FileName); - virtual void FreeLibrary(Module AModule); - virtual Procedure GetProcAddress(Module AModule, std::string MethodName); - virtual std::vector GetLibraryImports(const TString FileName); - virtual std::vector FilterOutRuntimeDependenciesForPlatform( - std::vector Imports); - - virtual Process* CreateProcess(); - - virtual bool IsMainThread(); - virtual TPlatformNumber GetMemorySize(); - - virtual TString GetTempDirectory(); - -#ifdef DEBUG - virtual bool IsNativeDebuggerPresent(); - virtual int GetProcessID(); -#endif //DEBUG -}; -#pragma warning( pop ) // C4250 - - -class FileHandle { -private: - HANDLE FHandle; - -public: - FileHandle(std::wstring FileName); - ~FileHandle(); - - bool IsValid(); - HANDLE GetHandle(); -}; - - -class FileMappingHandle { -private: - HANDLE FHandle; - -public: - FileMappingHandle(HANDLE FileHandle); - ~FileMappingHandle(); - - bool IsValid(); - HANDLE GetHandle(); -}; - - -class FileData { -private: - LPVOID FBaseAddress; - -public: - FileData(HANDLE Handle); - ~FileData(); - - bool IsValid(); - LPVOID GetBaseAddress(); -}; - - -class WindowsLibrary { -private: - TString FFileName; - - // Given an RVA, look up the section header that encloses it and return a - // pointer to its IMAGE_SECTION_HEADER - static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, - PIMAGE_NT_HEADERS pNTHeader); - static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, - DWORD imageBase); - static std::vector GetImportsSection(DWORD base, - PIMAGE_NT_HEADERS pNTHeader); - static std::vector DumpPEFile(PIMAGE_DOS_HEADER dosHeader); - -public: - WindowsLibrary(const TString FileName); - - std::vector GetImports(); -}; - - -class WindowsJob { -private: - HANDLE FHandle; - -public: - WindowsJob(); - ~WindowsJob(); - - HANDLE GetHandle(); -}; - - -class WindowsProcess : public Process { -private: - bool FRunning; - - PROCESS_INFORMATION FProcessInfo; - static WindowsJob FJob; - - void Cleanup(); - bool ReadOutput(); - -public: - WindowsProcess(); - virtual ~WindowsProcess(); - - virtual bool IsRunning(); - virtual bool Terminate(); - virtual bool Execute(const TString Application, - const std::vector Arguments, bool AWait = false); - virtual bool Wait(); - virtual TProcessID GetProcessID(); - virtual void SetInput(TString Value); - virtual std::list GetOutput(); -}; - - - - -#endif // WINDOWSPLATFORM_H - -#endif // WINDOWS --- /dev/null 2019-02-15 18:14:19.000000000 -0800 +++ new/src/jdk.jpackage/windows/native/libapplauncher/WindowsPlatform.h 2019-02-15 18:14:14.639573100 -0800 @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#ifndef WINDOWSPLATFORM_H +#define WINDOWSPLATFORM_H + +#include +#include "Platform.h" + +class WindowsPlatform : virtual public Platform { +private: + DWORD FMainThread; + +public: + WindowsPlatform(void); + virtual ~WindowsPlatform(void); + + virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, + bool &release); + virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, + bool &release); + + virtual void ShowMessage(TString title, TString description); + virtual void ShowMessage(TString description); + virtual MessageResponse ShowResponseMessage(TString title, + TString description); + + virtual void SetCurrentDirectory(TString Value); + virtual TString GetPackageRootDirectory(); + virtual TString GetAppDataDirectory(); + virtual TString GetAppName(); + virtual TString GetBundledJVMLibraryFileName(TString RuntimePath); + TString GetPackageAppDirectory(); + TString GetPackageLauncherDirectory(); + TString GetPackageRuntimeBinDirectory(); + + virtual ISectionalPropertyContainer* GetConfigFile(TString FileName); + + virtual TString GetModuleFileName(); + virtual Module LoadLibrary(TString FileName); + virtual void FreeLibrary(Module AModule); + virtual Procedure GetProcAddress(Module AModule, std::string MethodName); + + virtual Process* CreateProcess(); + + virtual bool IsMainThread(); + virtual TPlatformNumber GetMemorySize(); + + virtual TString GetTempDirectory(); + void InitStreamLocale(wios *stream); + void addPlatformDependencies(JavaLibrary *pJavaLibrary); +}; + +class FileHandle { +private: + HANDLE FHandle; + +public: + FileHandle(std::wstring FileName); + ~FileHandle(); + + bool IsValid(); + HANDLE GetHandle(); +}; + + +class FileMappingHandle { +private: + HANDLE FHandle; + +public: + FileMappingHandle(HANDLE FileHandle); + ~FileMappingHandle(); + + bool IsValid(); + HANDLE GetHandle(); +}; + + +class FileData { +private: + LPVOID FBaseAddress; + +public: + FileData(HANDLE Handle); + ~FileData(); + + bool IsValid(); + LPVOID GetBaseAddress(); +}; + + +class WindowsLibrary { +private: + TString FFileName; + + // Given an RVA, look up the section header that encloses it and return a + // pointer to its IMAGE_SECTION_HEADER + static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, + PIMAGE_NT_HEADERS pNTHeader); + static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, + DWORD imageBase); + static std::vector GetImportsSection(DWORD base, + PIMAGE_NT_HEADERS pNTHeader); + static std::vector DumpPEFile(PIMAGE_DOS_HEADER dosHeader); + +public: + WindowsLibrary(const TString FileName); + + std::vector GetImports(); +}; + + +class WindowsJob { +private: + HANDLE FHandle; + +public: + WindowsJob(); + ~WindowsJob(); + + HANDLE GetHandle(); +}; + + +class WindowsProcess : public Process { +private: + bool FRunning; + + PROCESS_INFORMATION FProcessInfo; + static WindowsJob FJob; + + void Cleanup(); + bool ReadOutput(); + +public: + WindowsProcess(); + virtual ~WindowsProcess(); + + virtual bool IsRunning(); + virtual bool Terminate(); + virtual bool Execute(const TString Application, + const std::vector Arguments, bool AWait = false); + virtual bool Wait(); + virtual TProcessID GetProcessID(); + virtual void SetInput(TString Value); + virtual std::list GetOutput(); +}; + +#endif // WINDOWSPLATFORM_H