Coverage Report

Created: 2025-07-23 06:46

/src/dovecot/src/lib/read-full.c
Line
Count
Source (jump to first uncovered line)
1
/* Copyright (c) 2003-2018 Dovecot authors, see the included COPYING file */
2
3
#include "lib.h"
4
#include "read-full.h"
5
6
#include <unistd.h>
7
8
int read_full(int fd, void *data, size_t size)
9
0
{
10
0
  ssize_t ret;
11
12
0
  i_assert(size <= SSIZE_T_MAX);
13
14
0
  while (size > 0) {
15
0
    ret = read(fd, data, size);
16
0
    if (ret <= 0)
17
0
      return ret;
18
19
0
    data = PTR_OFFSET(data, ret);
20
0
    size -= ret;
21
0
  }
22
23
0
  return 1;
24
0
}
25
26
int pread_full(int fd, void *data, size_t size, off_t offset)
27
0
{
28
0
  ssize_t ret;
29
30
0
  i_assert(size <= SSIZE_T_MAX);
31
32
0
  while (size > 0) {
33
0
    ret = pread(fd, data, size, offset);
34
0
    if (ret <= 0)
35
0
      return ret;
36
37
0
    data = PTR_OFFSET(data, ret);
38
0
    size -= ret;
39
0
    offset += ret;
40
0
  }
41
42
0
  return 1;
43
0
}