LCOV - code coverage report
Current view: top level - spdk/lib/util - file.c (source / functions) Hit Total Coverage
Test: Combined Lines: 21 29 72.4 %
Date: 2024-07-15 11:23:48 Functions: 2 2 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 5 10 50.0 %

           Branch data     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                 :       1170 : spdk_posix_file_load(FILE *file, size_t *size)
      10                 :            : {
      11                 :       1170 :         uint8_t *newbuf, *buf = NULL;
      12                 :       1170 :         size_t rc, buf_size, cur_size = 0;
      13                 :            : 
      14                 :       1170 :         *size = 0;
      15                 :       1170 :         buf_size = 128 * 1024;
      16                 :            : 
      17         [ +  - ]:       1170 :         while (buf_size <= 1024 * 1024 * 1024) {
      18                 :       1170 :                 newbuf = realloc(buf, buf_size);
      19         [ -  + ]:       1170 :                 if (newbuf == NULL) {
      20                 :          0 :                         free(buf);
      21                 :          0 :                         return NULL;
      22                 :            :                 }
      23                 :       1170 :                 buf = newbuf;
      24                 :            : 
      25                 :       1170 :                 rc = fread(buf + cur_size, 1, buf_size - cur_size, file);
      26                 :       1170 :                 cur_size += rc;
      27                 :            : 
      28         [ +  - ]:       1170 :                 if (feof(file)) {
      29                 :       1170 :                         *size = cur_size;
      30                 :       1170 :                         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                 :       1171 : spdk_posix_file_load_from_name(const char *file_name, size_t *size)
      47                 :            : {
      48                 :       1171 :         FILE *file = fopen(file_name, "r");
      49                 :            :         void *data;
      50                 :            : 
      51         [ +  + ]:       1171 :         if (file == NULL) {
      52                 :          1 :                 return NULL;
      53                 :            :         }
      54                 :            : 
      55                 :       1170 :         data = spdk_posix_file_load(file, size);
      56                 :       1170 :         fclose(file);
      57                 :            : 
      58                 :       1170 :         return data;
      59                 :            : }

Generated by: LCOV version 1.14