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-11-15 06:04:45 Functions: 3 6 50.0 %

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

Generated by: LCOV version 1.14