LCOV - code coverage report
Current view: top level - lib/util - file.c (source / functions) Hit Total Coverage
Test: ut_cov_unit.info Lines: 20 29 69.0 %
Date: 2024-07-11 05:53:45 Functions: 2 2 100.0 %

          Line data    Source code
       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           5 : spdk_posix_file_load(FILE *file, size_t *size)
      10             : {
      11           5 :         uint8_t *newbuf, *buf = NULL;
      12           5 :         size_t rc, buf_size, cur_size = 0;
      13             : 
      14           5 :         *size = 0;
      15           5 :         buf_size = 128 * 1024;
      16             : 
      17           5 :         while (buf_size <= 1024 * 1024 * 1024) {
      18           5 :                 newbuf = realloc(buf, buf_size);
      19           5 :                 if (newbuf == NULL) {
      20           0 :                         free(buf);
      21           0 :                         return NULL;
      22             :                 }
      23           5 :                 buf = newbuf;
      24             : 
      25           5 :                 rc = fread(buf + cur_size, 1, buf_size - cur_size, file);
      26           5 :                 cur_size += rc;
      27             : 
      28           5 :                 if (feof(file)) {
      29           5 :                         *size = cur_size;
      30           5 :                         return buf;
      31             :                 }
      32             : 
      33           0 :                 if (ferror(file)) {
      34           0 :                         free(buf);
      35           0 :                         return NULL;
      36             :                 }
      37             : 
      38           0 :                 buf_size *= 2;
      39             :         }
      40             : 
      41           0 :         free(buf);
      42           0 :         return NULL;
      43             : }
      44             : 
      45             : void *
      46           5 : spdk_posix_file_load_from_name(const char *file_name, size_t *size)
      47             : {
      48           5 :         FILE *file = fopen(file_name, "r");
      49             :         void *data;
      50             : 
      51           5 :         if (file == NULL) {
      52           0 :                 return NULL;
      53             :         }
      54             : 
      55           5 :         data = spdk_posix_file_load(file, size);
      56           5 :         fclose(file);
      57             : 
      58           5 :         return data;
      59             : }

Generated by: LCOV version 1.15