]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / OnigurumaUefiPort.c
1 /** @file
2
3 Module to rewrite stdlib references within Oniguruma
4
5 (C) Copyright 2014-2015 Hewlett Packard Enterprise Development LP<BR>
6 Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
7
8 SPDX-License-Identifier: BSD-2-Clause-Patent
9 **/
10 #include "OnigurumaUefiPort.h"
11
12 #define ONIGMEM_HEAD_SIGNATURE SIGNATURE_32('o','m','h','d')
13
14 typedef struct {
15 UINT32 Signature;
16 UINTN Size;
17 } ONIGMEM_HEAD;
18
19 #define ONIGMEM_OVERHEAD sizeof(ONIGMEM_HEAD)
20
21 int EFIAPI sprintf_s(char *str, size_t sizeOfBuffer, char const *fmt, ...)
22 {
23 VA_LIST Marker;
24 int NumberOfPrinted;
25
26 VA_START (Marker, fmt);
27 NumberOfPrinted = (int)AsciiVSPrint (str, sizeOfBuffer, fmt, Marker);
28 VA_END (Marker);
29
30 return NumberOfPrinted;
31 }
32
33 int OnigStrCmp (const char* Str1, const char* Str2)
34 {
35 return (int)AsciiStrCmp (Str1, Str2);
36 }
37
38 int strlen(const char* str)
39 {
40 return strlen_s(str, MAX_STRING_SIZE);
41 }
42
43 void * malloc (size_t size)
44 {
45 ONIGMEM_HEAD *PoolHdr;
46 UINTN NewSize;
47 VOID *Data;
48
49 NewSize = (UINTN)(size) + ONIGMEM_OVERHEAD;
50
51 Data = AllocatePool (NewSize);
52 if (Data != NULL) {
53 PoolHdr = (ONIGMEM_HEAD *)Data;
54 PoolHdr->Signature = ONIGMEM_HEAD_SIGNATURE;
55 PoolHdr->Size = size;
56
57 return (VOID *)(PoolHdr + 1);
58 }
59 return NULL;
60 }
61
62 void * realloc (void *ptr, size_t size)
63 {
64 ONIGMEM_HEAD *OldPoolHdr;
65 ONIGMEM_HEAD *NewPoolHdr;
66 UINTN OldSize;
67 UINTN NewSize;
68 VOID *Data;
69
70 NewSize = (UINTN)size + ONIGMEM_OVERHEAD;
71 Data = AllocatePool (NewSize);
72 if (Data != NULL) {
73 NewPoolHdr = (ONIGMEM_HEAD *)Data;
74 NewPoolHdr->Signature = ONIGMEM_HEAD_SIGNATURE;
75 NewPoolHdr->Size = size;
76 if (ptr != NULL) {
77 OldPoolHdr = (ONIGMEM_HEAD *)ptr - 1;
78 ASSERT (OldPoolHdr->Signature == ONIGMEM_HEAD_SIGNATURE);
79 OldSize = OldPoolHdr->Size;
80
81 CopyMem ((VOID *)(NewPoolHdr + 1), ptr, MIN (OldSize, size));
82 FreePool ((VOID *)OldPoolHdr);
83 }
84 return (VOID *)(NewPoolHdr + 1);
85 }
86 return NULL;
87 }
88
89 void* memcpy (void *dest, const void *src, unsigned int count)
90 {
91 return CopyMem (dest, src, (UINTN)count);
92 }
93
94 void* memset (void *dest, char ch, unsigned int count)
95 {
96 return SetMem (dest, ch, count);
97 }
98