diff options
| author | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
|---|---|---|
| committer | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
| commit | 7e2ccccace24636f29ddc210b94606abd4c7e42b (patch) | |
| tree | 545d43ea12671048956cafeb12303e84d601e571 /BaseTools/Source/C/PyEfiCompressor | |
| parent | 27b044605cd5f6b33a3d231576003850b3fe305b (diff) | |
| download | edk2-trunk.tar.xz | |
Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305btrunk
Diffstat (limited to 'BaseTools/Source/C/PyEfiCompressor')
| -rw-r--r-- | BaseTools/Source/C/PyEfiCompressor/EfiCompressor.c | 412 | ||||
| -rw-r--r-- | BaseTools/Source/C/PyEfiCompressor/Makefile | 36 | ||||
| -rw-r--r-- | BaseTools/Source/C/PyEfiCompressor/setup.py | 74 |
3 files changed, 261 insertions, 261 deletions
diff --git a/BaseTools/Source/C/PyEfiCompressor/EfiCompressor.c b/BaseTools/Source/C/PyEfiCompressor/EfiCompressor.c index 74ca2cfc18..4c9ce4421f 100644 --- a/BaseTools/Source/C/PyEfiCompressor/EfiCompressor.c +++ b/BaseTools/Source/C/PyEfiCompressor/EfiCompressor.c @@ -1,206 +1,206 @@ -/** @file
-Efi Compressor
-
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <Python.h>
-#include <Decompress.h>
-
-/*
- UefiDecompress(data_buffer, size, original_size)
-*/
-STATIC
-PyObject*
-UefiDecompress(
- PyObject *Self,
- PyObject *Args
- )
-{
- PyObject *SrcData;
- UINT32 SrcDataSize;
- UINT32 DstDataSize;
- UINTN Status;
- UINT8 *SrcBuf;
- UINT8 *DstBuf;
- UINT8 *TmpBuf;
- Py_ssize_t SegNum;
- Py_ssize_t Index;
-
- Status = PyArg_ParseTuple(
- Args,
- "Oi",
- &SrcData,
- &SrcDataSize
- );
- if (Status == 0) {
- return NULL;
- }
-
- if (SrcData->ob_type->tp_as_buffer == NULL
- || SrcData->ob_type->tp_as_buffer->bf_getreadbuffer == NULL
- || SrcData->ob_type->tp_as_buffer->bf_getsegcount == NULL) {
- PyErr_SetString(PyExc_Exception, "First argument is not a buffer\n");
- return NULL;
- }
-
- // Because some Python objects which support "buffer" protocol have more than one
- // memory segment, we have to copy them into a contiguous memory.
- SrcBuf = PyMem_Malloc(SrcDataSize);
- if (SrcBuf == NULL) {
- PyErr_SetString(PyExc_Exception, "Not enough memory\n");
- goto ERROR;
- }
-
- SegNum = SrcData->ob_type->tp_as_buffer->bf_getsegcount((PyObject *)SrcData, NULL);
- TmpBuf = SrcBuf;
- for (Index = 0; Index < SegNum; ++Index) {
- VOID *BufSeg;
- Py_ssize_t Len;
-
- Len = SrcData->ob_type->tp_as_buffer->bf_getreadbuffer((PyObject *)SrcData, Index, &BufSeg);
- if (Len < 0) {
- PyErr_SetString(PyExc_Exception, "Buffer segment is not available\n");
- goto ERROR;
- }
- memcpy(TmpBuf, BufSeg, Len);
- TmpBuf += Len;
- }
-
- Status = Extract((VOID *)SrcBuf, SrcDataSize, (VOID **)&DstBuf, &DstDataSize, 1);
- if (Status != EFI_SUCCESS) {
- PyErr_SetString(PyExc_Exception, "Failed to decompress\n");
- goto ERROR;
- }
-
- return PyBuffer_FromMemory(DstBuf, (Py_ssize_t)DstDataSize);
-
-ERROR:
- if (SrcBuf != NULL) {
- free(SrcBuf);
- }
-
- if (DstBuf != NULL) {
- free(DstBuf);
- }
- return NULL;
-}
-
-
-STATIC
-PyObject*
-FrameworkDecompress(
- PyObject *Self,
- PyObject *Args
- )
-{
- PyObject *SrcData;
- UINT32 SrcDataSize;
- UINT32 DstDataSize;
- UINTN Status;
- UINT8 *SrcBuf;
- UINT8 *DstBuf;
- UINT8 *TmpBuf;
- Py_ssize_t SegNum;
- Py_ssize_t Index;
-
- Status = PyArg_ParseTuple(
- Args,
- "Oi",
- &SrcData,
- &SrcDataSize
- );
- if (Status == 0) {
- return NULL;
- }
-
- if (SrcData->ob_type->tp_as_buffer == NULL
- || SrcData->ob_type->tp_as_buffer->bf_getreadbuffer == NULL
- || SrcData->ob_type->tp_as_buffer->bf_getsegcount == NULL) {
- PyErr_SetString(PyExc_Exception, "First argument is not a buffer\n");
- return NULL;
- }
-
- // Because some Python objects which support "buffer" protocol have more than one
- // memory segment, we have to copy them into a contiguous memory.
- SrcBuf = PyMem_Malloc(SrcDataSize);
- if (SrcBuf == NULL) {
- PyErr_SetString(PyExc_Exception, "Not enough memory\n");
- goto ERROR;
- }
-
- SegNum = SrcData->ob_type->tp_as_buffer->bf_getsegcount((PyObject *)SrcData, NULL);
- TmpBuf = SrcBuf;
- for (Index = 0; Index < SegNum; ++Index) {
- VOID *BufSeg;
- Py_ssize_t Len;
-
- Len = SrcData->ob_type->tp_as_buffer->bf_getreadbuffer((PyObject *)SrcData, Index, &BufSeg);
- if (Len < 0) {
- PyErr_SetString(PyExc_Exception, "Buffer segment is not available\n");
- goto ERROR;
- }
- memcpy(TmpBuf, BufSeg, Len);
- TmpBuf += Len;
- }
-
- Status = Extract((VOID *)SrcBuf, SrcDataSize, (VOID **)&DstBuf, &DstDataSize, 2);
- if (Status != EFI_SUCCESS) {
- PyErr_SetString(PyExc_Exception, "Failed to decompress\n");
- goto ERROR;
- }
-
- return PyString_FromStringAndSize((CONST INT8*)DstBuf, (Py_ssize_t)DstDataSize);
-
-ERROR:
- if (SrcBuf != NULL) {
- free(SrcBuf);
- }
-
- if (DstBuf != NULL) {
- free(DstBuf);
- }
- return NULL;
-}
-
-
-STATIC
-PyObject*
-UefiCompress(
- PyObject *Self,
- PyObject *Args
- )
-{
- return NULL;
-}
-
-
-STATIC
-PyObject*
-FrameworkCompress(
- PyObject *Self,
- PyObject *Args
- )
-{
- return NULL;
-}
-
-STATIC INT8 DecompressDocs[] = "Decompress(): Decompress data using UEFI standard algorithm\n";
-STATIC INT8 CompressDocs[] = "Compress(): Compress data using UEFI standard algorithm\n";
-
-STATIC PyMethodDef EfiCompressor_Funcs[] = {
- {"UefiDecompress", (PyCFunction)UefiDecompress, METH_VARARGS, DecompressDocs},
- {"UefiCompress", (PyCFunction)UefiCompress, METH_VARARGS, DecompressDocs},
- {"FrameworkDecompress", (PyCFunction)FrameworkDecompress, METH_VARARGS, DecompressDocs},
- {"FrameworkCompress", (PyCFunction)FrameworkCompress, METH_VARARGS, DecompressDocs},
- {NULL, NULL, 0, NULL}
-};
-
-PyMODINIT_FUNC
-initEfiCompressor(VOID) {
- Py_InitModule3("EfiCompressor", EfiCompressor_Funcs, "EFI Compression Algorithm Extension Module");
-}
-
-
+/** @file +Efi Compressor + +Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> +SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include <Python.h> +#include <Decompress.h> + +/* + UefiDecompress(data_buffer, size, original_size) +*/ +STATIC +PyObject* +UefiDecompress( + PyObject *Self, + PyObject *Args + ) +{ + PyObject *SrcData; + UINT32 SrcDataSize; + UINT32 DstDataSize; + UINTN Status; + UINT8 *SrcBuf; + UINT8 *DstBuf; + UINT8 *TmpBuf; + Py_ssize_t SegNum; + Py_ssize_t Index; + + Status = PyArg_ParseTuple( + Args, + "Oi", + &SrcData, + &SrcDataSize + ); + if (Status == 0) { + return NULL; + } + + if (SrcData->ob_type->tp_as_buffer == NULL + || SrcData->ob_type->tp_as_buffer->bf_getreadbuffer == NULL + || SrcData->ob_type->tp_as_buffer->bf_getsegcount == NULL) { + PyErr_SetString(PyExc_Exception, "First argument is not a buffer\n"); + return NULL; + } + + // Because some Python objects which support "buffer" protocol have more than one + // memory segment, we have to copy them into a contiguous memory. + SrcBuf = PyMem_Malloc(SrcDataSize); + if (SrcBuf == NULL) { + PyErr_SetString(PyExc_Exception, "Not enough memory\n"); + goto ERROR; + } + + SegNum = SrcData->ob_type->tp_as_buffer->bf_getsegcount((PyObject *)SrcData, NULL); + TmpBuf = SrcBuf; + for (Index = 0; Index < SegNum; ++Index) { + VOID *BufSeg; + Py_ssize_t Len; + + Len = SrcData->ob_type->tp_as_buffer->bf_getreadbuffer((PyObject *)SrcData, Index, &BufSeg); + if (Len < 0) { + PyErr_SetString(PyExc_Exception, "Buffer segment is not available\n"); + goto ERROR; + } + memcpy(TmpBuf, BufSeg, Len); + TmpBuf += Len; + } + + Status = Extract((VOID *)SrcBuf, SrcDataSize, (VOID **)&DstBuf, &DstDataSize, 1); + if (Status != EFI_SUCCESS) { + PyErr_SetString(PyExc_Exception, "Failed to decompress\n"); + goto ERROR; + } + + return PyBuffer_FromMemory(DstBuf, (Py_ssize_t)DstDataSize); + +ERROR: + if (SrcBuf != NULL) { + free(SrcBuf); + } + + if (DstBuf != NULL) { + free(DstBuf); + } + return NULL; +} + + +STATIC +PyObject* +FrameworkDecompress( + PyObject *Self, + PyObject *Args + ) +{ + PyObject *SrcData; + UINT32 SrcDataSize; + UINT32 DstDataSize; + UINTN Status; + UINT8 *SrcBuf; + UINT8 *DstBuf; + UINT8 *TmpBuf; + Py_ssize_t SegNum; + Py_ssize_t Index; + + Status = PyArg_ParseTuple( + Args, + "Oi", + &SrcData, + &SrcDataSize + ); + if (Status == 0) { + return NULL; + } + + if (SrcData->ob_type->tp_as_buffer == NULL + || SrcData->ob_type->tp_as_buffer->bf_getreadbuffer == NULL + || SrcData->ob_type->tp_as_buffer->bf_getsegcount == NULL) { + PyErr_SetString(PyExc_Exception, "First argument is not a buffer\n"); + return NULL; + } + + // Because some Python objects which support "buffer" protocol have more than one + // memory segment, we have to copy them into a contiguous memory. + SrcBuf = PyMem_Malloc(SrcDataSize); + if (SrcBuf == NULL) { + PyErr_SetString(PyExc_Exception, "Not enough memory\n"); + goto ERROR; + } + + SegNum = SrcData->ob_type->tp_as_buffer->bf_getsegcount((PyObject *)SrcData, NULL); + TmpBuf = SrcBuf; + for (Index = 0; Index < SegNum; ++Index) { + VOID *BufSeg; + Py_ssize_t Len; + + Len = SrcData->ob_type->tp_as_buffer->bf_getreadbuffer((PyObject *)SrcData, Index, &BufSeg); + if (Len < 0) { + PyErr_SetString(PyExc_Exception, "Buffer segment is not available\n"); + goto ERROR; + } + memcpy(TmpBuf, BufSeg, Len); + TmpBuf += Len; + } + + Status = Extract((VOID *)SrcBuf, SrcDataSize, (VOID **)&DstBuf, &DstDataSize, 2); + if (Status != EFI_SUCCESS) { + PyErr_SetString(PyExc_Exception, "Failed to decompress\n"); + goto ERROR; + } + + return PyString_FromStringAndSize((CONST INT8*)DstBuf, (Py_ssize_t)DstDataSize); + +ERROR: + if (SrcBuf != NULL) { + free(SrcBuf); + } + + if (DstBuf != NULL) { + free(DstBuf); + } + return NULL; +} + + +STATIC +PyObject* +UefiCompress( + PyObject *Self, + PyObject *Args + ) +{ + return NULL; +} + + +STATIC +PyObject* +FrameworkCompress( + PyObject *Self, + PyObject *Args + ) +{ + return NULL; +} + +STATIC INT8 DecompressDocs[] = "Decompress(): Decompress data using UEFI standard algorithm\n"; +STATIC INT8 CompressDocs[] = "Compress(): Compress data using UEFI standard algorithm\n"; + +STATIC PyMethodDef EfiCompressor_Funcs[] = { + {"UefiDecompress", (PyCFunction)UefiDecompress, METH_VARARGS, DecompressDocs}, + {"UefiCompress", (PyCFunction)UefiCompress, METH_VARARGS, DecompressDocs}, + {"FrameworkDecompress", (PyCFunction)FrameworkDecompress, METH_VARARGS, DecompressDocs}, + {"FrameworkCompress", (PyCFunction)FrameworkCompress, METH_VARARGS, DecompressDocs}, + {NULL, NULL, 0, NULL} +}; + +PyMODINIT_FUNC +initEfiCompressor(VOID) { + Py_InitModule3("EfiCompressor", EfiCompressor_Funcs, "EFI Compression Algorithm Extension Module"); +} + + diff --git a/BaseTools/Source/C/PyEfiCompressor/Makefile b/BaseTools/Source/C/PyEfiCompressor/Makefile index dd1669cda4..46322b8d21 100644 --- a/BaseTools/Source/C/PyEfiCompressor/Makefile +++ b/BaseTools/Source/C/PyEfiCompressor/Makefile @@ -1,18 +1,18 @@ -## @file
-# Makefile
-#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-!INCLUDE ..\Makefiles\ms.common
-
-APPNAME = GenSec
-
-LIBS = $(LIB_PATH)\Common.lib
-
-OBJECTS = GenSec.obj
-
-#CFLAGS = $(CFLAGS) /nodefaultlib:libc.lib
-
-!INCLUDE ..\Makefiles\ms.app
-
+## @file +# Makefile +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent + +!INCLUDE ..\Makefiles\ms.common + +APPNAME = GenSec + +LIBS = $(LIB_PATH)\Common.lib + +OBJECTS = GenSec.obj + +#CFLAGS = $(CFLAGS) /nodefaultlib:libc.lib + +!INCLUDE ..\Makefiles\ms.app + diff --git a/BaseTools/Source/C/PyEfiCompressor/setup.py b/BaseTools/Source/C/PyEfiCompressor/setup.py index 3daf178b54..7ccc6d8c6d 100644 --- a/BaseTools/Source/C/PyEfiCompressor/setup.py +++ b/BaseTools/Source/C/PyEfiCompressor/setup.py @@ -1,37 +1,37 @@ -## @file
-# package and install PyEfiCompressor extension
-#
-# Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-##
-# Import Modules
-#
-from distutils.core import setup, Extension
-import os
-
-if 'BASE_TOOLS_PATH' not in os.environ:
- raise "Please define BASE_TOOLS_PATH to the root of base tools tree"
-
-BaseToolsDir = os.environ['BASE_TOOLS_PATH']
-setup(
- name="EfiCompressor",
- version="0.01",
- ext_modules=[
- Extension(
- 'EfiCompressor',
- sources=[
- os.path.join(BaseToolsDir, 'Source', 'C', 'Common', 'Decompress.c'),
- 'EfiCompressor.c'
- ],
- include_dirs=[
- os.path.join(BaseToolsDir, 'Source', 'C', 'Include'),
- os.path.join(BaseToolsDir, 'Source', 'C', 'Include', 'Ia32'),
- os.path.join(BaseToolsDir, 'Source', 'C', 'Common')
- ],
- )
- ],
- )
-
+## @file +# package and install PyEfiCompressor extension +# +# Copyright (c) 2008, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +## +# Import Modules +# +from distutils.core import setup, Extension +import os + +if 'BASE_TOOLS_PATH' not in os.environ: + raise "Please define BASE_TOOLS_PATH to the root of base tools tree" + +BaseToolsDir = os.environ['BASE_TOOLS_PATH'] +setup( + name="EfiCompressor", + version="0.01", + ext_modules=[ + Extension( + 'EfiCompressor', + sources=[ + os.path.join(BaseToolsDir, 'Source', 'C', 'Common', 'Decompress.c'), + 'EfiCompressor.c' + ], + include_dirs=[ + os.path.join(BaseToolsDir, 'Source', 'C', 'Include'), + os.path.join(BaseToolsDir, 'Source', 'C', 'Include', 'Ia32'), + os.path.join(BaseToolsDir, 'Source', 'C', 'Common') + ], + ) + ], + ) + |
