LCOV - code coverage report
Current view: top level - src - operator.c (source / functions) Hit Total Coverage
Test: report.info Lines: 43 46 93.5 %
Date: 2024-01-02 12:43:31 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #include "operator.h"
       2             : 
       3             : /**
       4             :  * Order by operator length (longest first) to avoid matching << when looking for <
       5             :  */
       6         437 : OperatorType get_operator_type(const char *operator_str)
       7             : {
       8             : 
       9         437 :     if (operator_str == NULL)
      10             :     {
      11           0 :         return UNKNOWN;
      12             :     }
      13             : 
      14         437 :     size_t len = 2;
      15             : 
      16         437 :     if (strncmp(operator_str, "&&", len) == 0)
      17             :     {
      18           8 :         return AND;
      19             :     }
      20             : 
      21         429 :     if (strncmp(operator_str, "||", len) == 0)
      22             :     {
      23           4 :         return OR;
      24             :     }
      25             : 
      26         425 :     if (strncmp(operator_str, ">>", len) == 0)
      27             :     {
      28           4 :         return REDIRECTION_APPEND_OUTPUT;
      29             :     }
      30             : 
      31         421 :     if (strncmp(operator_str, "<<", len) == 0)
      32             :     {
      33           4 :         return REDIRECTION_APPEND_INPUT;
      34             :     }
      35             : 
      36         417 :     len = 1;
      37             : 
      38         417 :     if (strncmp(operator_str, ";", len) == 0)
      39             :     {
      40          10 :         return SEMICOLON;
      41             :     }
      42             : 
      43         407 :     if (strncmp(operator_str, "|", len) == 0)
      44             :     {
      45           4 :         return PIPE;
      46             :     }
      47             : 
      48         403 :     if (strncmp(operator_str, "&", len) == 0)
      49             :     {
      50           4 :         return BACKGROUND;
      51             :     }
      52             : 
      53         399 :     if (strncmp(operator_str, ">", len) == 0)
      54             :     {
      55           4 :         return REDIRECTION_OUTPUT;
      56             :     }
      57             : 
      58         395 :     if (strncmp(operator_str, "<", len) == 0)
      59             :     {
      60           4 :         return REDIRECTION_INPUT;
      61             :     }
      62             : 
      63         391 :     return UNKNOWN;
      64             : }
      65             : 
      66          24 : const char *get_operator_string(OperatorType operator_type)
      67             : {
      68             : 
      69          24 :     switch (operator_type)
      70             :     {
      71           4 :     case AND:
      72           4 :         return "&&";
      73           2 :     case OR:
      74           2 :         return "||";
      75           2 :     case REDIRECTION_APPEND_OUTPUT:
      76           2 :         return ">>";
      77           2 :     case REDIRECTION_APPEND_INPUT:
      78           2 :         return "<<";
      79           6 :     case SEMICOLON:
      80           6 :         return ";";
      81           2 :     case PIPE:
      82           2 :         return "|";
      83           2 :     case BACKGROUND:
      84           2 :         return "&";
      85           2 :     case REDIRECTION_OUTPUT:
      86           2 :         return ">";
      87           2 :     case REDIRECTION_INPUT:
      88           2 :         return "<";
      89           0 :     default:
      90           0 :         return "UNKNOWN";
      91             :     }
      92             : }

Generated by: LCOV version 1.14