LCOV - code coverage report
Current view: top level - src - init_signals.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 68.4 % 19 13
Test Date: 2026-01-12 05:34:38 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #include "precizer.h"
       2              : 
       3              : /**
       4              :  *
       5              :  * Initialize signals interception like Ctrl+C
       6              :  * The application controls signals like Ctrl+C to
       7              :  * prevent database corruption.
       8              :  * It always try to complete work in correct way and
       9              :  * sync data from memory to disk even user interrupts
      10              :  * running of the program.
      11              :  *
      12              :  */
      13          202 : Return init_signals(void)
      14              : {
      15              :         /// The status that will be passed to return() before exiting.
      16              :         /// By default, the function worked without errors.
      17          202 :         Return status = SUCCESS;
      18              : 
      19              :         /// Disable key echo in terminal
      20              :         struct termios term;
      21          202 :         tcgetattr(fileno(stdin),&term);
      22          202 :         term.c_lflag &= (unsigned int)~(ICANON|ECHO);  // knock down keybuffer
      23          202 :         tcsetattr(fileno(stdin),TCSANOW,&term);
      24              : 
      25              :         // kill -USR2 <pid>
      26          202 :         if((signal(SIGUSR2,&notify_quit_handler)==SIG_ERR)!=0)
      27              :         {
      28            0 :                 slog(ERROR,"Failed set signal SIGUSR2\n");
      29            0 :                 status = FAILURE;
      30              :         } else {
      31          202 :                 slog(TRACE,"Set signal SIGUSR2 OK:pid:%i\n",getpid());
      32              :         }
      33              : 
      34              :         // Ctrl-C
      35          202 :         if((signal(SIGINT,&notify_quit_handler)==SIG_ERR)!=0)
      36              :         {
      37            0 :                 slog(ERROR,"Failed set signal SIGINT\n");
      38            0 :                 status = FAILURE;
      39              :         } else {
      40          202 :                 slog(TRACE,"Set signal SIGINT OK:pid:%i\n",getpid());
      41              :         }
      42              : 
      43              :         // Default kill Termination signal (15)
      44          202 :         if((signal(SIGTERM,&notify_quit_handler)==SIG_ERR)!=0)
      45              :         {
      46            0 :                 slog(ERROR,"Failed set signal SIGTERM\n");
      47            0 :                 status = FAILURE;
      48              :         } else {
      49          202 :                 slog(TRACE,"Set signal SIGTERM OK:pid:%i\n",getpid());
      50              :         }
      51              : 
      52          202 :         slog(TRACE,"Signals initialized\n");
      53              : 
      54          202 :         provide(status);
      55              : }
        

Generated by: LCOV version 2.0-1