/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 | } |