LCOV - code coverage report
Current view: top level - basic - ordered-set.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 29 39 74.4 %
Date: 2019-08-23 13:36:53 Functions: 4 5 80.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 14 24 58.3 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : 
       3                 :            : #include "fileio.h"
       4                 :            : #include "ordered-set.h"
       5                 :            : #include "strv.h"
       6                 :            : 
       7                 :         12 : int ordered_set_consume(OrderedSet *s, void *p) {
       8                 :            :         int r;
       9                 :            : 
      10                 :         12 :         r = ordered_set_put(s, p);
      11         [ +  + ]:         12 :         if (r <= 0)
      12                 :          4 :                 free(p);
      13                 :            : 
      14                 :         12 :         return r;
      15                 :            : }
      16                 :            : 
      17                 :         12 : int ordered_set_put_strdup(OrderedSet *s, const char *p) {
      18                 :            :         char *c;
      19                 :            :         int r;
      20                 :            : 
      21         [ -  + ]:         12 :         assert(s);
      22         [ -  + ]:         12 :         assert(p);
      23                 :            : 
      24                 :         12 :         c = strdup(p);
      25         [ -  + ]:         12 :         if (!c)
      26                 :          0 :                 return -ENOMEM;
      27                 :            : 
      28                 :         12 :         r = ordered_set_consume(s, c);
      29         [ +  + ]:         12 :         if (r == -EEXIST)
      30                 :          4 :                 return 0;
      31                 :            : 
      32                 :          8 :         return r;
      33                 :            : }
      34                 :            : 
      35                 :          0 : int ordered_set_put_strdupv(OrderedSet *s, char **l) {
      36                 :          0 :         int n = 0, r;
      37                 :            :         char **i;
      38                 :            : 
      39   [ #  #  #  # ]:          0 :         STRV_FOREACH(i, l) {
      40                 :          0 :                 r = ordered_set_put_strdup(s, *i);
      41         [ #  # ]:          0 :                 if (r < 0)
      42                 :          0 :                         return r;
      43                 :            : 
      44                 :          0 :                 n += r;
      45                 :            :         }
      46                 :            : 
      47                 :          0 :         return n;
      48                 :            : }
      49                 :            : 
      50                 :          4 : int ordered_set_put_string_set(OrderedSet *s, OrderedSet *l) {
      51                 :          4 :         int n = 0, r;
      52                 :            :         Iterator i;
      53                 :            :         char *p;
      54                 :            : 
      55                 :            :         /* Like ordered_set_put_strv, but for an OrderedSet of strings */
      56                 :            : 
      57         [ +  + ]:         16 :         ORDERED_SET_FOREACH(p, l, i) {
      58                 :         12 :                 r = ordered_set_put_strdup(s, p);
      59         [ -  + ]:         12 :                 if (r < 0)
      60                 :          0 :                         return r;
      61                 :            : 
      62                 :         12 :                 n += r;
      63                 :            :         }
      64                 :            : 
      65                 :          4 :         return n;
      66                 :            : }
      67                 :            : 
      68                 :         16 : void ordered_set_print(FILE *f, const char *field, OrderedSet *s) {
      69                 :         16 :         bool space = false;
      70                 :            :         Iterator i;
      71                 :            :         char *p;
      72                 :            : 
      73         [ +  + ]:         16 :         if (ordered_set_isempty(s))
      74                 :          4 :                 return;
      75                 :            : 
      76                 :         12 :         fputs(field, f);
      77                 :            : 
      78         [ +  + ]:         56 :         ORDERED_SET_FOREACH(p, s, i)
      79                 :         44 :                 fputs_with_space(f, p, NULL, &space);
      80                 :            : 
      81                 :         12 :         fputc('\n', f);
      82                 :            : }

Generated by: LCOV version 1.14