Coverage Report

Created: 2024-05-03 06:05

/builds/xfbs/passgen/src/error.c
Line
Count
Source (jump to first uncovered line)
1
#include <passgen/error.h>
2
#include <stdio.h>
3
#include <string.h>
4
5
10.6k
void passgen_error_init_raw(passgen_error *error, const char *message) {
6
10.6k
    passgen_array_init(&error->causes, 0);
7
10.6k
    memset(&error->source, 0, sizeof(passgen_error_source));
8
10.6k
    memset(&error->offset, 0, sizeof(passgen_error_offset));
9
10.6k
    memset(&error->end, 0, sizeof(passgen_error_offset));
10
10.6k
    error->message = message;
11
10.6k
}
12
13
0
void passgen_error_free(passgen_error *error) {
14
0
    passgen_array_free(&error->causes);
15
0
    memset(error, 0, sizeof(passgen_error));
16
0
}
17
18
0
void passgen_error_print(passgen_error *error, const char *pattern) {
19
0
    fprintf(
20
0
        stderr,
21
0
        "\033[1;31merror\033[0m parsing pattern: %s\n",
22
0
        error->message);
23
0
    if(error->source.file) {
24
0
        fprintf(stderr, "location %s:%zu\n", error->source.file, error->source.line);
25
0
    }
26
0
    fprintf(stderr, "\033[1;33mpattern\033[0m: %s\n", pattern);
27
0
    fprintf(stderr, "         ");
28
0
    for(size_t i = 1; i < error->offset.byte; i++) {
29
0
        fprintf(stderr, " ");
30
0
    }
31
0
    fprintf(stderr, "\033[1;31m^\033[0m\n");
32
0
}
33
34
0
void passgen_error_cause_add(passgen_error *error, const passgen_error *cause) {
35
0
    passgen_array_push(&error->causes, (void *) cause);
36
0
}
37
38
10.6k
void passgen_error_offset_set(passgen_error *error, size_t codepoint, size_t byte) {
39
10.6k
    error->offset.codepoint = codepoint;
40
10.6k
    error->offset.byte = byte;
41
10.6k
}
42
43
10.6k
void passgen_error_source_set(passgen_error *error, const char *file, size_t line) {
44
10.6k
    error->source.file = file;
45
10.6k
    error->source.line = line;
46
10.6k
}