Coverage Report

Created: 2026-10-14 06:52

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.45k
ZIP_EXTERN int zip_source_at_eof(zip_source_t *src) {
4
8.45k
    zip_uint8_t d[1];
5
8.45k
    zip_int64_t n;
6
7
8.45k
    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.45k
    if (!src->eof) {
13
6.10k
        if (src->supports & ZIP_SOURCE_MAKE_COMMAND_BITMASK(ZIP_SOURCE_AT_EOF)) {
14
1.31k
            n = _zip_source_call(src, NULL, 0, ZIP_SOURCE_AT_EOF);
15
1.31k
            if (n < 0) {
16
0
                return -1;
17
0
            }
18
1.31k
            if (n != 0) {
19
1.18k
                src->eof = true;
20
1.18k
            }
21
1.31k
        }
22
4.78k
        else {
23
4.78k
            n = zip_source_read(src, d, sizeof(d));
24
4.78k
            if (n < 0) {
25
1.43k
                return -1;
26
1.43k
            }
27
3.35k
            if (n > 0) {
28
1.02k
                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
1.02k
                else {
34
1.02k
                    src->have_next_byte = true;
35
1.02k
                    src->next_byte = d[0];
36
1.02k
                    src->bytes_read -= 1;
37
1.02k
                }
38
1.02k
            }
39
3.35k
        }
40
6.10k
    }
41
42
7.02k
    return src->eof ? 1 : 0;
43
8.45k
}