]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / OnigurumaUefiPort.c
CommitLineData
48b6c60c
SZ
1/** @file\r
2\r
3 Module to rewrite stdlib references within Oniguruma\r
4\r
d10e0580 5 (C) Copyright 2014-2021 Hewlett Packard Enterprise Development LP<BR>\r
48b6c60c
SZ
6 Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>\r
7\r
8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
9**/\r
10#include "OnigurumaUefiPort.h"\r
11\r
1436aea4 12#define ONIGMEM_HEAD_SIGNATURE SIGNATURE_32('o','m','h','d')\r
48b6c60c
SZ
13\r
14typedef struct {\r
15 UINT32 Signature;\r
16 UINTN Size;\r
17} ONIGMEM_HEAD;\r
18\r
1436aea4 19#define ONIGMEM_OVERHEAD sizeof(ONIGMEM_HEAD)\r
48b6c60c 20\r
1436aea4
MK
21int EFIAPI\r
22sprintf_s (\r
23 char *str,\r
24 size_t sizeOfBuffer,\r
25 char const *fmt,\r
26 ...\r
27 )\r
48b6c60c 28{\r
1436aea4
MK
29 VA_LIST Marker;\r
30 int NumberOfPrinted;\r
48b6c60c
SZ
31\r
32 VA_START (Marker, fmt);\r
33 NumberOfPrinted = (int)AsciiVSPrint (str, sizeOfBuffer, fmt, Marker);\r
34 VA_END (Marker);\r
35\r
36 return NumberOfPrinted;\r
37}\r
38\r
1436aea4
MK
39int\r
40OnigStrCmp (\r
41 const char *Str1,\r
42 const char *Str2\r
43 )\r
48b6c60c
SZ
44{\r
45 return (int)AsciiStrCmp (Str1, Str2);\r
46}\r
47\r
1436aea4
MK
48int\r
49strlen (\r
50 const char *str\r
51 )\r
48b6c60c 52{\r
1436aea4 53 return strlen_s (str, MAX_STRING_SIZE);\r
48b6c60c
SZ
54}\r
55\r
1436aea4
MK
56void *\r
57malloc (\r
58 size_t size\r
59 )\r
48b6c60c
SZ
60{\r
61 ONIGMEM_HEAD *PoolHdr;\r
1436aea4
MK
62 UINTN NewSize;\r
63 VOID *Data;\r
48b6c60c
SZ
64\r
65 NewSize = (UINTN)(size) + ONIGMEM_OVERHEAD;\r
66\r
1436aea4 67 Data = AllocatePool (NewSize);\r
48b6c60c 68 if (Data != NULL) {\r
1436aea4 69 PoolHdr = (ONIGMEM_HEAD *)Data;\r
48b6c60c
SZ
70 PoolHdr->Signature = ONIGMEM_HEAD_SIGNATURE;\r
71 PoolHdr->Size = size;\r
72\r
73 return (VOID *)(PoolHdr + 1);\r
74 }\r
1436aea4 75\r
48b6c60c
SZ
76 return NULL;\r
77}\r
78\r
1436aea4
MK
79void *\r
80realloc (\r
81 void *ptr,\r
82 size_t size\r
83 )\r
48b6c60c
SZ
84{\r
85 ONIGMEM_HEAD *OldPoolHdr;\r
86 ONIGMEM_HEAD *NewPoolHdr;\r
1436aea4
MK
87 UINTN OldSize;\r
88 UINTN NewSize;\r
89 VOID *Data;\r
48b6c60c
SZ
90\r
91 NewSize = (UINTN)size + ONIGMEM_OVERHEAD;\r
1436aea4 92 Data = AllocatePool (NewSize);\r
48b6c60c 93 if (Data != NULL) {\r
1436aea4 94 NewPoolHdr = (ONIGMEM_HEAD *)Data;\r
48b6c60c
SZ
95 NewPoolHdr->Signature = ONIGMEM_HEAD_SIGNATURE;\r
96 NewPoolHdr->Size = size;\r
97 if (ptr != NULL) {\r
98 OldPoolHdr = (ONIGMEM_HEAD *)ptr - 1;\r
99 ASSERT (OldPoolHdr->Signature == ONIGMEM_HEAD_SIGNATURE);\r
100 OldSize = OldPoolHdr->Size;\r
101\r
102 CopyMem ((VOID *)(NewPoolHdr + 1), ptr, MIN (OldSize, size));\r
103 FreePool ((VOID *)OldPoolHdr);\r
104 }\r
1436aea4 105\r
48b6c60c
SZ
106 return (VOID *)(NewPoolHdr + 1);\r
107 }\r
1436aea4 108\r
48b6c60c
SZ
109 return NULL;\r
110}\r
111\r
1436aea4
MK
112void *\r
113memcpy (\r
114 void *dest,\r
115 const void *src,\r
116 unsigned int count\r
117 )\r
8b680e4a
SZ
118{\r
119 return CopyMem (dest, src, (UINTN)count);\r
120}\r
121\r
1436aea4
MK
122void *\r
123memset (\r
124 void *dest,\r
125 char ch,\r
126 unsigned int count\r
127 )\r
8b680e4a 128{\r
1f304300 129 return SetMem (dest, count, ch);\r
8b680e4a
SZ
130}\r
131\r
1436aea4
MK
132void\r
133free (\r
134 void *ptr\r
135 )\r
d10e0580 136{\r
1436aea4
MK
137 VOID *EvalOnce;\r
138 ONIGMEM_HEAD *PoolHdr;\r
d10e0580
NW
139\r
140 EvalOnce = ptr;\r
141 if (EvalOnce == NULL) {\r
142 return;\r
143 }\r
144\r
145 PoolHdr = (ONIGMEM_HEAD *)EvalOnce - 1;\r
146 if (PoolHdr->Signature == ONIGMEM_HEAD_SIGNATURE) {\r
147 FreePool (PoolHdr);\r
148 } else {\r
149 FreePool (EvalOnce);\r
150 }\r
151}\r