1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (C) 2015 Intel Corporation. 3 * All rights reserved. 4 */ 5 6 #include "spdk/file.h" 7 8 void * 9 spdk_posix_file_load(FILE *file, size_t *size) 10 { 11 uint8_t *newbuf, *buf = NULL; 12 size_t rc, buf_size, cur_size = 0; 13 14 *size = 0; 15 buf_size = 128 * 1024; 16 17 while (buf_size <= 1024 * 1024 * 1024) { 18 newbuf = realloc(buf, buf_size); 19 if (newbuf == NULL) { 20 free(buf); 21 return NULL; 22 } 23 buf = newbuf; 24 25 rc = fread(buf + cur_size, 1, buf_size - cur_size, file); 26 cur_size += rc; 27 28 if (feof(file)) { 29 *size = cur_size; 30 return buf; 31 } 32 33 if (ferror(file)) { 34 free(buf); 35 return NULL; 36 } 37 38 buf_size *= 2; 39 } 40 41 free(buf); 42 return NULL; 43 } 44