From feccee87a78e68d575dbdf44b34ca0cb5a21ea8d Mon Sep 17 00:00:00 2001 From: lhauch Date: Thu, 5 Oct 2006 23:12:07 +0000 Subject: Restructuring for better separation of Tool packages. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1674 6f19259b-4bc3-4df7-8a09-765794883524 --- .../CodeTools/TianoTools/CompressDll/CompressDll.c | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Tools/CodeTools/TianoTools/CompressDll/CompressDll.c (limited to 'Tools/CodeTools/TianoTools/CompressDll/CompressDll.c') diff --git a/Tools/CodeTools/TianoTools/CompressDll/CompressDll.c b/Tools/CodeTools/TianoTools/CompressDll/CompressDll.c new file mode 100644 index 0000000000..cc06f26c05 --- /dev/null +++ b/Tools/CodeTools/TianoTools/CompressDll/CompressDll.c @@ -0,0 +1,105 @@ +/** @file + Compression DLL used by PCD Tools + + Copyright (c) 2006, Intel Corporation All rights reserved. + This program and the accompanying materials are licensed and made available + under the terms and conditions of the BSD License which accompanies this + distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ +#if defined(__GNUC__) +typedef long long __int64;/*For cygwin build*/ +#endif +#include "CompressDll.h" +#include "EfiCompress.h" + +extern +EFI_STATUS +Compress ( + IN UINT8 *SrcBuffer, + IN UINT32 SrcSize, + IN UINT8 *DstBuffer, + IN OUT UINT32 *DstSize + ); + +JNIEXPORT jbyteArray JNICALL Java_org_tianocore_framework_tasks_Compress_CallCompress +(JNIEnv *env, jobject obj, jbyteArray SourceBuffer, jint SourceSize, jstring path) +{ + char* DestBuffer; + int DestSize; + int Result; + char *InputBuffer; + jbyteArray OutputBuffer; + jbyte *TempByte; + + DestSize = 0; + DestBuffer = NULL; + + TempByte = (*env)->GetByteArrayElements(env, SourceBuffer, 0); + InputBuffer = (char*) TempByte; + + + // + // First call compress function and get need buffer size + // + + Result = Compress ( + (char*) InputBuffer, + SourceSize, + DestBuffer, + &DestSize + ); + + if (Result = EFI_BUFFER_TOO_SMALL) { + DestBuffer = malloc (DestSize); + } + + // + // Second call compress and get the DestBuffer value + // + Result = Compress( + (char*) InputBuffer, + SourceSize, + DestBuffer, + &DestSize + ); + + // + // new a MV array to store the return compressed buffer + // + OutputBuffer = (*env)->NewByteArray(env, DestSize); + (*env)->SetByteArrayRegion(env, OutputBuffer,0, DestSize, (jbyte*) DestBuffer); + + // + // Free Ouputbuffer. + // + free (DestBuffer); + + + if (Result != 0) { + return NULL; + } else { + return OutputBuffer; + } +} + +#ifdef _MSC_VER +BOOLEAN +__stdcall +DllMainCRTStartup( + unsigned int hDllHandle, + unsigned int nReason, + void* Reserved +) +{ + return TRUE; +} +#else +#ifdef __GNUC__ +#endif +#endif + -- cgit v1.2.3