MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / SetFileData

Function SetFileData

Library/OcFileLib/FileProtocol.c:210–267  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

208}
209
210EFI_STATUS
211SetFileData (
212 IN EFI_FILE_PROTOCOL *WritableFs OPTIONAL,
213 IN CONST CHAR16 *FileName,
214 IN CONST VOID *Buffer,
215 IN UINT32 Size
216 )
217{
218 EFI_STATUS Status;
219 EFI_FILE_PROTOCOL *Fs;
220 EFI_FILE_PROTOCOL *File;
221 UINTN WrittenSize;
222
223 if (WritableFs == NULL) {
224 Status = FindWritableFileSystem (&Fs);
225 if (EFI_ERROR(Status)) {
226 DEBUG ((DEBUG_VERBOSE, "OCFS: WriteFileData can't find writable FS\n"));
227 return Status;
228 }
229 } else {
230 Fs = WritableFs;
231 }
232
233 Status = SafeFileOpen (
234 Fs,
235 &File,
236 (CHAR16 *) FileName,
237 EFI_FILE_MODE_CREATE | EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE,
238 0
239 );
240
241 if (!EFI_ERROR(Status)) {
242 WrittenSize = Size;
243 Status = File->Write (File, &WrittenSize, (VOID *) Buffer);
244 Fs->Close (File);
245
246 if (EFI_ERROR(Status)) {
247 DEBUG ((DEBUG_VERBOSE, "OCFS: WriteFileData file->Write returned %r\n", Status));
248 } else if (WrittenSize != Size) {
249 DEBUG ((
250 DEBUG_VERBOSE,
251 "WriteFileData: File->Write truncated %u to %u\n",
252 Status,
253 Size,
254 (UINT32) WrittenSize
255 ));
256 Status = EFI_BAD_BUFFER_SIZE;
257 }
258 } else {
259 DEBUG ((DEBUG_VERBOSE, "OCFS: WriteFileData Fs->Open of %s returned %r\n", FileName, Status));
260 }
261
262 if (WritableFs == NULL) {
263 Fs->Close (Fs);
264 }
265
266 return Status;
267}

Callers 2

OcLogAddEntryFunction · 0.85
OcConfigureLogProtocolFunction · 0.85

Calls 4

FindWritableFileSystemFunction · 0.85
SafeFileOpenFunction · 0.85
WriteMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected