More moves for Tool Packages
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1676 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
105
Tools/CCode/Source/CompressDll/CompressDll.c
Normal file
105
Tools/CCode/Source/CompressDll/CompressDll.c
Normal file
@@ -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
|
||||
|
Reference in New Issue
Block a user