LCOV - code coverage report
Current view: top level - src - error.c (source / functions) Hit Total Coverage
Test: passgen-test.info Lines: 15 32 46.9 %
Date: 2024-05-03 06:05:14 Functions: 3 6 50.0 %

          Line data    Source code
       1             : #include <passgen/error.h>
       2             : #include <stdio.h>
       3             : #include <string.h>
       4             : 
       5       10619 : void passgen_error_init_raw(passgen_error *error, const char *message) {
       6       10619 :     passgen_array_init(&error->causes, 0);
       7       10619 :     memset(&error->source, 0, sizeof(passgen_error_source));
       8       10619 :     memset(&error->offset, 0, sizeof(passgen_error_offset));
       9       10619 :     memset(&error->end, 0, sizeof(passgen_error_offset));
      10       10619 :     error->message = message;
      11       10619 : }
      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             :         stderr,
      21             :         "\033[1;31merror\033[0m parsing pattern: %s\n",
      22             :         error->message);
      23           0 :     if(error->source.file) {
      24           0 :         fprintf(stderr, "location %s:%zu\n", error->source.file, error->source.line);
      25             :     }
      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             :     }
      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       10619 : void passgen_error_offset_set(passgen_error *error, size_t codepoint, size_t byte) {
      39       10619 :     error->offset.codepoint = codepoint;
      40       10619 :     error->offset.byte = byte;
      41       10619 : }
      42             : 
      43       10619 : void passgen_error_source_set(passgen_error *error, const char *file, size_t line) {
      44       10619 :     error->source.file = file;
      45       10619 :     error->source.line = line;
      46       10619 : }

Generated by: LCOV version 1.14