Coverage Report

Created: 2026-08-11 07:29

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libzip/lib/zip_source_at_eof.c
Line
Count
Source
1
#include "zipint.h"
2
3
8.88k
ZIP_EXTERN int zip_source_at_eof(zip_source_t *src) {
4
8.88k
    zip_uint8_t d[1];
5
8.88k
    zip_int64_t n;
6
7
8.88k
    if (!ZIP_SOURCE_IS_OPEN_READING(src)) {
8
0
        zip_error_set(&src->error, ZIP_ER_INVAL, 0);
9
0
        return -1;
10
0
    }
11
12
8.88k
    if (!src->eof) {
13
6.79k
        if (src->supports & ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_AT_EOF)) {
14
1.84k
            n = _zip_source_call(src, NULL, 0, ZIP_SOURCE_AT_EOF);
15
1.84k
            if (n < 0) {
16
0
                return -1;
17
0
            }
18
1.84k
            if (n != 0) {
19
1.47k
                src->eof = true;
20
1.47k
            }
21
1.84k
        }
22
4.95k
        else {
23
4.95k
            n = zip_source_read(src, d, sizeof(d));
24
4.95k
            if (n < 0) {
25
1.88k
                return -1;
26
1.88k
            }
27
3.07k
            if (n > 0) {
28
938
                if (src->supports & ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_SEEK)) {
29
0
                    if (zip_source_seek(src, -1, SEEK_CUR) < 0) {
30
0
                        return -1;
31
0
                    }
32
0
                }
33
938
                else {
34
938
                    src->have_next_byte = true;
35
938
                    src->next_byte = d[0];
36
938
                    src->bytes_read -= 1;
37
938
                }
38
938
            }
39
3.07k
        }
40
6.79k
    }
41
42
7.00k
    return src->eof ? 1 : 0;
43
8.88k
}