LCOV - code coverage report
Current view: top level - src/client/monitor - lline.c (source / functions) Hit Total Coverage
Test: burp-coverage-clean.info Lines: 35 35 100.0 %
Date: 2017-04-01 Functions: 4 4 100.0 %

          Line data    Source code
       1             : #include "../../burp.h"
       2             : #include "../../alloc.h"
       3             : #include "../../log.h"
       4             : #include "lline.h"
       5             : 
       6             : static void lline_free_content(struct lline *lline)
       7             : {
       8           3 :         free_w(&lline->line);
       9             : }
      10             : 
      11           3 : static void lline_free(struct lline **lline)
      12             : {
      13           6 :         if(!lline || !*lline) return;
      14           3 :         lline_free_content(*lline);
      15           3 :         free_v((void **)lline);
      16             : }
      17             : 
      18          38 : void llines_free(struct lline **lline)
      19             : {
      20             :         struct lline *l;
      21          38 :         struct lline *lhead=*lline;
      22          79 :         while(lhead)
      23             :         {
      24           3 :                 l=lhead;
      25           3 :                 lhead=lhead->next;
      26           3 :                 lline_free(&l);
      27             :         }
      28          38 :         *lline=NULL;
      29          38 : }
      30             : 
      31           4 : static struct lline *lline_alloc(char *line)
      32             : {
      33           4 :         struct lline *llnew=NULL;
      34           4 :         if(!line)
      35             :         {
      36           1 :                 logp("%s called with NULL line!\n", __func__);
      37           1 :                 return NULL;
      38             :         }
      39           3 :         if(!(llnew=(struct lline *)
      40             :                 calloc_w(1, sizeof(struct lline), __func__))
      41           3 :           || !(llnew->line=strdup_w(line, __func__)))
      42             :                 return NULL;
      43           3 :         return llnew;
      44             : }
      45             : 
      46           4 : int lline_add(struct lline **lline, char *line)
      47             : {
      48           4 :         struct lline *l=NULL;
      49           4 :         struct lline *llast=NULL;
      50           4 :         struct lline *llnew=NULL;
      51             : 
      52           4 :         if(!(llnew=lline_alloc(line))) return -1;
      53             : 
      54           6 :         for(l=*lline; l; l=l->next)
      55             :         {
      56           3 :                 l->prev=llast;
      57           3 :                 llast=l;
      58             :         }
      59           3 :         if(llast)
      60             :         {
      61           2 :                 llnew->next=llast->next;
      62           2 :                 llast->next=llnew;
      63           2 :                 llnew->prev=llast;
      64             :         }
      65             :         else
      66             :         {
      67           1 :                 *lline=llnew;
      68           1 :                 llnew->next=l;
      69             :         }
      70             : 
      71             :         return 0;
      72             : }

Generated by: LCOV version 1.10