OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
UserFile.c
Go to the documentation of this file.
1
6#include <UserFile.h>
7#include <Library/DebugLib.h>
8#include <Library/MemoryAllocationLib.h>
9
10#ifdef COVERAGE_TEST
11 #if defined (__clang__)
12void
13__wrap_llvm_gcda_emit_arcs (
14 uint32_t num_counters,
15 uint64_t *counters
16 )
17{
18 uint32_t i;
19 uint64_t *old_ctrs = NULL;
20
21 old_ctrs = malloc (num_counters * sizeof (uint64_t));
22 if (old_ctrs == NULL) {
23 return;
24 }
25
26 memcpy (old_ctrs, counters, num_counters * sizeof (uint64_t));
27
28 __real_llvm_gcda_emit_arcs (num_counters, counters);
29
30 for (i = 0; i < num_counters; ++i) {
31 if ((old_ctrs[i] == counters[i]) && (counters[i] > 0)) {
32 fprintf (stdout, "CoverageHit\n");
33 }
34 }
35
36 free (old_ctrs);
37}
38
39 #elif defined (__GNUC__)
40void
41__gcov_merge_add (
42 gcov_type *counters,
43 unsigned n_counters
44 )
45{
46 gcov_type prev;
47
48 for ( ; n_counters; counters++, n_counters--) {
49 prev = __gcov_read_counter ();
50 if ((prev == 0) && (*counters > 0)) {
51 fprintf (stdout, "CoverageHit\n");
52 }
53
54 *counters += prev;
55 }
56}
57
58 #endif
59#endif
60
61UINT8 *
63 IN CONST CHAR8 *FileName,
64 OUT UINT32 *Size
65 )
66{
67 FILE *FilePtr;
68 INT64 FileSize;
69 UINT8 *Buffer;
70
71 ASSERT (FileName != NULL);
72 ASSERT (Size != NULL);
73
74 FilePtr = fopen (FileName, "rb");
75 if (FilePtr == NULL) {
76 return NULL;
77 }
78
79 if (fseek (FilePtr, 0, SEEK_END) != 0) {
80 fclose (FilePtr);
81 return NULL;
82 }
83
84 FileSize = ftell (FilePtr);
85 if (FileSize <= 0) {
86 fclose (FilePtr);
87 return NULL;
88 }
89
90 if (fseek (FilePtr, 0, SEEK_SET) != 0) {
91 fclose (FilePtr);
92 return NULL;
93 }
94
95 Buffer = AllocatePool ((UINTN)FileSize + 1);
96 if (Buffer == NULL) {
97 fclose (FilePtr);
98 return NULL;
99 }
100
101 if (fread (Buffer, (size_t)FileSize, 1, FilePtr) != 1) {
102 fclose (FilePtr);
103 free (Buffer);
104 return NULL;
105 }
106
107 fclose (FilePtr);
108
109 Buffer[FileSize] = 0;
110 *Size = (UINT32)FileSize;
111
112 return Buffer;
113}
114
115VOID
117 IN CONST CHAR8 *FileName,
118 IN CONST VOID *Data,
119 IN UINT32 Size
120 )
121{
122 FILE *FilePtr;
123
124 ASSERT (FileName != NULL);
125 ASSERT (Data != NULL);
126
127 FilePtr = fopen (FileName, "wb");
128
129 if (FilePtr == NULL) {
130 abort ();
131 }
132
133 if (fwrite (Data, Size, 1, FilePtr) != 1) {
134 fclose (FilePtr);
135 abort ();
136 }
137
138 fclose (FilePtr);
139}
DMG_SIZE_DEVICE_PATH Size
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
Definition OcTypingLib.h:42
UINT8 * UserReadFile(IN CONST CHAR8 *FileName, OUT UINT32 *Size)
Definition UserFile.c:62
VOID UserWriteFile(IN CONST CHAR8 *FileName, IN CONST VOID *Data, IN UINT32 Size)
Definition UserFile.c:116
#define ASSERT(x)
Definition coder.h:55
UINT32 uint32_t
UINT64 uint64_t
#define malloc(Size)
Definition lzss.h:49
#define free(Ptr)
Definition lzss.h:50
#define memcpy(Dst, Src, Size)
Definition lzvn.h:57