]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - MdeModulePkg/Universal/RegularExpressionDxe/OnigurumaUefiPort.c
MdeModulePkg/GraphicsConsoleDxe: add modes
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / OnigurumaUefiPort.c
... / ...
CommitLineData
1/** @file\r
2\r
3 Module to rewrite stdlib references within Oniguruma\r
4\r
5 (C) Copyright 2014-2021 Hewlett Packard Enterprise Development LP<BR>\r
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
12#define ONIGMEM_HEAD_SIGNATURE SIGNATURE_32('o','m','h','d')\r
13\r
14typedef struct {\r
15 UINT32 Signature;\r
16 UINTN Size;\r
17} ONIGMEM_HEAD;\r
18\r
19#define ONIGMEM_OVERHEAD sizeof(ONIGMEM_HEAD)\r
20\r
21int EFIAPI\r
22sprintf_s (\r
23 char *str,\r
24 size_t sizeOfBuffer,\r
25 char const *fmt,\r
26 ...\r
27 )\r
28{\r
29 VA_LIST Marker;\r
30 int NumberOfPrinted;\r
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
39int\r
40OnigStrCmp (\r
41 const char *Str1,\r
42 const char *Str2\r
43 )\r
44{\r
45 return (int)AsciiStrCmp (Str1, Str2);\r
46}\r
47\r
48int\r
49strlen (\r
50 const char *str\r
51 )\r
52{\r
53 return strlen_s (str, MAX_STRING_SIZE);\r
54}\r
55\r
56void *\r
57malloc (\r
58 size_t size\r
59 )\r
60{\r
61 ONIGMEM_HEAD *PoolHdr;\r
62 UINTN NewSize;\r
63 VOID *Data;\r
64\r
65 NewSize = (UINTN)(size) + ONIGMEM_OVERHEAD;\r
66\r
67 Data = AllocatePool (NewSize);\r
68 if (Data != NULL) {\r
69 PoolHdr = (ONIGMEM_HEAD *)Data;\r
70 PoolHdr->Signature = ONIGMEM_HEAD_SIGNATURE;\r
71 PoolHdr->Size = size;\r
72\r
73 return (VOID *)(PoolHdr + 1);\r
74 }\r
75\r
76 return NULL;\r
77}\r
78\r
79void *\r
80realloc (\r
81 void *ptr,\r
82 size_t size\r
83 )\r
84{\r
85 ONIGMEM_HEAD *OldPoolHdr;\r
86 ONIGMEM_HEAD *NewPoolHdr;\r
87 UINTN OldSize;\r
88 UINTN NewSize;\r
89 VOID *Data;\r
90\r
91 NewSize = (UINTN)size + ONIGMEM_OVERHEAD;\r
92 Data = AllocatePool (NewSize);\r
93 if (Data != NULL) {\r
94 NewPoolHdr = (ONIGMEM_HEAD *)Data;\r
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
105\r
106 return (VOID *)(NewPoolHdr + 1);\r
107 }\r
108\r
109 return NULL;\r
110}\r
111\r
112void *\r
113memcpy (\r
114 void *dest,\r
115 const void *src,\r
116 unsigned int count\r
117 )\r
118{\r
119 return CopyMem (dest, src, (UINTN)count);\r
120}\r
121\r
122void *\r
123memset (\r
124 void *dest,\r
125 char ch,\r
126 unsigned int count\r
127 )\r
128{\r
129 return SetMem (dest, count, ch);\r
130}\r
131\r
132void\r
133free (\r
134 void *ptr\r
135 )\r
136{\r
137 VOID *EvalOnce;\r
138 ONIGMEM_HEAD *PoolHdr;\r
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