diff options
author | egor-tensin <egor@tensin.name> | 2024-12-26 11:18:27 +0000 |
---|---|---|
committer | egor-tensin <egor@tensin.name> | 2024-12-26 11:18:27 +0000 |
commit | 91f8798bf240d55fabc021739239d95bdcb1b4d4 (patch) | |
tree | c53f20265fa3fffcb8322c84e8f8cc9706b4b772 /coverage | |
download | cimple-gh-pages.tar.gz cimple-gh-pages.zip |
Deploying to gh-pages from @ egor-tensin/cimple@9f40d20e1c97e2c85e26a6a13ccf04e60d9f83f5 🚀gh-pages
Diffstat (limited to 'coverage')
31 files changed, 46448 insertions, 0 deletions
diff --git a/coverage/index.base64.c.6cc41135837c80527c8f246c27adf87e.html b/coverage/index.base64.c.6cc41135837c80527c8f246c27adf87e.html new file mode 100644 index 0000000..1ad8921 --- /dev/null +++ b/coverage/index.base64.c.6cc41135837c80527c8f246c27adf87e.html @@ -0,0 +1,563 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/base64.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>18</td> + <td>27</td> + <td class="coverage-low">66.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>2</td> + <td>2</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>3</td> + <td>12</td> + <td class="coverage-low">25.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l35">base64_decode (line 35)</a></td><td>called 9180 times, returned 9180 times</td><td>26.0%</td></tr> + <tr><td><a href="#l19">base64_encode (line 19)</a></td><td>called 9180 times, returned 9180 times</td><td>38.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"base64.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sodium.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stddef.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">base64_variant</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sodium_base64_VARIANT_ORIGINAL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">base64_encode</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">src_len</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">_dst</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">dst_len</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sodium_base64_encoded_len</span><span class="p">(</span><span class="n">src_len</span><span class="p">,</span><span class="w"> </span><span class="n">base64_variant</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="n">dst_len</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">dst</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sodium_bin2base64</span><span class="p">(</span><span class="n">dst</span><span class="p">,</span><span class="w"> </span><span class="n">dst_len</span><span class="p">,</span><span class="w"> </span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="n">src_len</span><span class="p">,</span><span class="w"> </span><span class="n">base64_variant</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_dst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dst</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">base64_decode</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">_dst</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">_dst_len</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">src_len</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">src</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">dst_max_len</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">src_len</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">dst_len</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="n">dst_max_len</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">dst</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sodium_base642bin</span><span class="p">(</span><span class="n">dst</span><span class="p">,</span><span class="w"> </span><span class="n">dst_max_len</span><span class="p">,</span><span class="w"> </span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="n">src_len</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">dst_len</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">base64_variant</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Couldn't parse base64-encoded string</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_dst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dst</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_dst_len</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dst_len</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">dst</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html b/coverage/index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html new file mode 100644 index 0000000..ffbe412 --- /dev/null +++ b/coverage/index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html @@ -0,0 +1,489 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/buf.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>16</td> + <td>18</td> + <td class="coverage-medium">88.9%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>5</td> + <td>5</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>1</td> + <td>4</td> + <td class="coverage-low">25.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l20">buf_create (line 20)</a></td><td>called 92012 times, returned 92012 times</td><td>27.0%</td></tr> + <tr><td><a href="#l35">buf_create_from_string (line 35)</a></td><td>called 46006 times, returned 46006 times</td><td>100.0%</td></tr> + <tr><td><a href="#l40">buf_destroy (line 40)</a></td><td>called 92012 times, returned 92012 times</td><td>100.0%</td></tr> + <tr><td><a href="#l50">buf_get_data (line 50)</a></td><td>called 138018 times, returned 138018 times</td><td>100.0%</td></tr> + <tr><td><a href="#l45">buf_get_size (line 45)</a></td><td>called 92012 times, returned 92012 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"buf.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdint.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">size</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">data</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">buf_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">**</span><span class="n">_buf</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">size</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 92012 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">92012</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">buf</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">buf</span><span class="o">-></span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">buf</span><span class="o">-></span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">buf</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">buf_create_from_string</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">**</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">str</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">buf_create</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">,</span><span class="w"> </span><span class="n">strlen</span><span class="p">(</span><span class="n">str</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">buf_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">buf</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="kt">uint32_t</span><span class="w"> </span><span class="nf">buf_get_size</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">buf</span><span class="o">-></span><span class="n">size</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">138018</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="nf">buf_get_data</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">138018</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">buf</span><span class="o">-></span><span class="n">data</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html b/coverage/index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html new file mode 100644 index 0000000..f793d2e --- /dev/null +++ b/coverage/index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html @@ -0,0 +1,909 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/ci.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>37</td> + <td>47</td> + <td class="coverage-medium">78.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>5</td> + <td>5</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>9</td> + <td>18</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l53">ci_cleanup_git_repo (line 53)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="#l59">ci_prepare_git_repo (line 59)</a></td><td>called 9180 times, returned 9180 times</td><td>60.0%</td></tr> + <tr><td><a href="#l40">ci_run (line 40)</a></td><td>called 9180 times, returned 9180 times</td><td>63.0%</td></tr> + <tr><td><a href="#l79">ci_run_git_repo (line 79)</a></td><td>called 9180 times, returned 9180 times</td><td>81.0%</td></tr> + <tr><td><a href="#l34">ci_run_script (line 34)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"ci.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"git.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"process.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><git2.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stddef.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/* clang-format off */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">ci_scripts</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"./.ci.sh"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"./.ci"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"./ci.sh"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"./ci"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">ci_env</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"CI=y"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"CIMPLE=y"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/* clang-format on */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">ci_run_script</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">script</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">args</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="n">script</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">process_execute_and_capture</span><span class="p">(</span><span class="n">args</span><span class="p">,</span><span class="w"> </span><span class="n">ci_env</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">ci_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 36720 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36720</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ci_scripts</span><span class="p">;</span><span class="w"> </span><span class="o">*</span><span class="n">script</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">script</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">file_exists</span><span class="p">(</span><span class="o">*</span><span class="n">script</span><span class="p">))</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">continue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Going to run: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">script</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ci_run_script</span><span class="p">(</span><span class="o">*</span><span class="n">script</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Couldn't find any CI scripts to run</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">ci_cleanup_git_repo</span><span class="p">(</span><span class="n">git_repository</span><span class="w"> </span><span class="o">*</span><span class="n">repo</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">rm_rf</span><span class="p">(</span><span class="n">git_repository_workdir</span><span class="p">(</span><span class="n">repo</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">libgit_repository_free</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">ci_prepare_git_repo</span><span class="p">(</span><span class="n">git_repository</span><span class="w"> </span><span class="o">**</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libgit_clone_to_tmp</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libgit_checkout</span><span class="p">(</span><span class="o">*</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">cleanup_repo</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">cleanup_repo</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ci_cleanup_git_repo</span><span class="p">(</span><span class="o">*</span><span class="n">repo</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">ci_run_git_repo</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">oldpwd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">git_repository</span><span class="w"> </span><span class="o">*</span><span class="n">repo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ci_prepare_git_repo</span><span class="p">(</span><span class="o">&</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">chdir_wrapper</span><span class="p">(</span><span class="n">git_repository_workdir</span><span class="p">(</span><span class="n">repo</span><span class="p">),</span><span class="w"> </span><span class="o">&</span><span class="n">oldpwd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_repo</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ci_run</span><span class="p">(</span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">oldpwd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">oldpwd</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">chdir_wrapper</span><span class="p">(</span><span class="n">oldpwd</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">oldpwd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">free_repo</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ci_cleanup_git_repo</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">exit</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html b/coverage/index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html new file mode 100644 index 0000000..2ec8246 --- /dev/null +++ b/coverage/index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html @@ -0,0 +1,1027 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/client.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>50</td> + <td>62</td> + <td class="coverage-medium">80.6%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>4</td> + <td>4</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>17</td> + <td>30</td> + <td class="coverage-low">56.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l25">client_create (line 25)</a></td><td>called 9208 times, returned 9208 times</td><td>27.0%</td></tr> + <tr><td><a href="#l39">client_destroy (line 39)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="#l72">client_main (line 72)</a></td><td>called 9208 times, returned 9208 times</td><td>64.0%</td></tr> + <tr><td><a href="#l44">make_request (line 44)</a></td><td>called 9208 times, returned 9208 times</td><td>80.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"client.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"cmd_line.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json_rpc.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"net.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"protocol.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"run_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">dummy</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">client_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">**</span><span class="n">_client</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9208 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9208</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">client_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">make_request</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">argv</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 1 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9207 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">argc</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">1</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage_err</span><span class="p">(</span><span class="s">"no action specified"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9207</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="n">CMD_QUEUE_RUN</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">argc</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run_queued</span><span class="p">(</span><span class="o">&</span><span class="n">run</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_create_queue_run</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_destroy</span><span class="p">(</span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 26 times.</div> + <div class="takenBranch">✓ Branch 1 taken 1 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">27</td> + <td class="src coveredLine"><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="n">CMD_GET_RUNS</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">argc</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">request_create_get_runs</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">1</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">client_main</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">argv</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">make_request</span><span class="p">(</span><span class="o">&</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 1 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9207</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">1</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage_err</span><span class="p">(</span><span class="s">"invalid request"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_connect</span><span class="p">(</span><span class="n">settings</span><span class="o">-></span><span class="n">host</span><span class="p">,</span><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_send</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_recv</span><span class="p">(</span><span class="o">&</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">response_str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_to_string</span><span class="p">(</span><span class="n">response</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">response_str</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">jsonrpc_response_is_error</span><span class="p">(</span><span class="n">response</span><span class="p">))</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%s"</span><span class="p">,</span><span class="w"> </span><span class="n">response_str</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"no response</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_response</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="nl">free_response</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_response_destroy</span><span class="p">(</span><span class="n">response</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="nl">close</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="nl">free_request</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html b/coverage/index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html new file mode 100644 index 0000000..529adc7 --- /dev/null +++ b/coverage/index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html @@ -0,0 +1,835 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/client_main.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>34</td> + <td>43</td> + <td class="coverage-medium">79.1%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>4</td> + <td>4</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>10</td> + <td>14</td> + <td class="coverage-low">71.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l16">default_settings (line 16)</a></td><td>called 9214 times, returned 9214 times</td><td>100.0%</td></tr> + <tr><td><a href="#l25">get_usage_string (line 25)</a></td><td>called 6 times, returned 6 times</td><td>100.0%</td></tr> + <tr><td><a href="#l76">main (line 76)</a></td><td>called 9214 times, returned 9214 times</td><td>79.0%</td></tr> + <tr><td><a href="#l33">parse_settings (line 33)</a></td><td>called 9214 times, returned 9214 times</td><td>76.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"client.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"cmd_line.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><getopt.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">default_settings</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">.</span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_host</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">.</span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_port</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">6</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">get_usage_string</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">6</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"[-h|--help] [-V|--version] [-v|--verbose] [-H|--host HOST] [-p|--port PORT] ACTION [ARG...]</span><span class="se">\n</span><span class="s">\</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="se">\n</span><span class="s">\</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="s">available actions:</span><span class="se">\n</span><span class="s">\</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="se">\t</span><span class="s">"</span><span class="w"> </span><span class="n">CMD_QUEUE_RUN</span><span class="w"> </span><span class="s">" URL REV - schedule a CI run of repository at URL, revision REV"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">parse_settings</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">opt</span><span class="p">,</span><span class="w"> </span><span class="n">longind</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_settings</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* clang-format off */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">option</span><span class="w"> </span><span class="n">long_options</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"help"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'h'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"version"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'V'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"verbose"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'v'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"host"</span><span class="p">,</span><span class="w"> </span><span class="n">required_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'H'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"port"</span><span class="p">,</span><span class="w"> </span><span class="n">required_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'p'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* clang-format on */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 18422 times.</div> + <div class="takenBranch">✓ Branch 2 taken 9208 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">27630</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">((</span><span class="n">opt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getopt_long</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">,</span><span class="w"> </span><span class="s">"hVvH:p:"</span><span class="p">,</span><span class="w"> </span><span class="n">long_options</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">longind</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">-1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">5/6</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 2 times.</div> + <div class="takenBranch">✓ Branch 1 taken 2 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + <div class="takenBranch">✓ Branch 3 taken 9208 times.</div> + <div class="takenBranch">✓ Branch 4 taken 9208 times.</div> + <div class="takenBranch">✓ Branch 5 taken 2 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18422</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">opt</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'h'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'V'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_version</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'v'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">g_log_lvl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">LOG_LVL_DEBUG</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'H'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">optarg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'p'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">optarg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">default</span><span class="o">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9214</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">parse_settings</span><span class="p">(</span><span class="o">&</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9208 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9208</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client_create</span><span class="p">(</span><span class="o">&</span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9208 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9208</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9208</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client_main</span><span class="p">(</span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="n">argc</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">optind</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="p">)</span><span class="n">argv</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">optind</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_client</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="nl">destroy_client</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client_destroy</span><span class="p">(</span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.cmd_line.c.fc55483624faae9ff92546137d095857.html b/coverage/index.cmd_line.c.fc55483624faae9ff92546137d095857.html new file mode 100644 index 0000000..974e032 --- /dev/null +++ b/coverage/index.cmd_line.c.fc55483624faae9ff92546137d095857.html @@ -0,0 +1,636 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/cmd_line.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>28</td> + <td>32</td> + <td class="coverage-medium">87.5%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>5</td> + <td>5</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>7</td> + <td>14</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l42">exit_with_usage (line 42)</a></td><td>called 14 times, returned 0 time</td><td>89.0%</td></tr> + <tr><td><a href="#l55">exit_with_usage_err (line 55)</a></td><td>called 2 times, returned 0 time</td><td>100.0%</td></tr> + <tr><td><a href="#l62">exit_with_version (line 62)</a></td><td>called 6 times, returned 0 time</td><td>83.0%</td></tr> + <tr><td><a href="#l22">get_current_binary_name (line 22)</a></td><td>called 20 times, returned 20 times</td><td>47.0%</td></tr> + <tr><td><a href="#l17">get_current_binary_path (line 17)</a></td><td>called 20 times, returned 20 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"cmd_line.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">get_current_binary_path</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">readlink_wrapper</span><span class="p">(</span><span class="s">"/proc/self/exe"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">get_current_binary_name</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_current_binary_path</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 20 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">20</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">path</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">basename</span><span class="p">(</span><span class="n">path</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strdup</span><span class="p">(</span><span class="n">name</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 20 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">20</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strdup"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_path</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="nl">free_path</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">path</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">14</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">exit_with_usage</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">ec</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">14</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">FILE</span><span class="w"> </span><span class="o">*</span><span class="n">dest</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stdout</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 8 times.</div> + <div class="takenBranch">✓ Branch 1 taken 6 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">14</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ec</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">8</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">dest</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">stderr</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">14</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">binary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_current_binary_name</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 14 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">14</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">dest</span><span class="p">,</span><span class="w"> </span><span class="s">"usage: %s %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">binary</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">binary</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="s">"prog"</span><span class="p">,</span><span class="w"> </span><span class="n">get_usage_string</span><span class="p">());</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">14</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">binary</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">14</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit</span><span class="p">(</span><span class="n">ec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">exit_with_usage_err</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">msg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 2 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">2</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">msg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span><span class="w"> </span><span class="s">"usage error: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">msg</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">6</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">exit_with_version</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">6</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">binary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_current_binary_name</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 6 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">6</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%s v%s (%s)</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">binary</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">binary</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="s">"prog"</span><span class="p">,</span><span class="w"> </span><span class="n">project_version</span><span class="p">,</span><span class="w"> </span><span class="n">project_rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">6</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">binary</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">6</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.command.c.d26991ef13eb41283f88bf34125ef986.html b/coverage/index.command.c.d26991ef13eb41283f88bf34125ef986.html new file mode 100644 index 0000000..55eab7e --- /dev/null +++ b/coverage/index.command.c.d26991ef13eb41283f88bf34125ef986.html @@ -0,0 +1,1856 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/command.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>89</td> + <td>120</td> + <td class="coverage-low">74.2%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>11</td> + <td>12</td> + <td class="coverage-high">91.7%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>33</td> + <td>66</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l66">cmd_dispatcher_create (line 66)</a></td><td>called 83 times, returned 83 times</td><td>24.0%</td></tr> + <tr><td><a href="#l102">cmd_dispatcher_destroy (line 102)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="#l128">cmd_dispatcher_handle (line 128)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l210">cmd_dispatcher_handle_conn (line 210)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="#l148">cmd_dispatcher_handle_conn_internal (line 148)</a></td><td>called 36800 times, returned 36800 times</td><td>72.0%</td></tr> + <tr><td><a href="#l215">cmd_dispatcher_handle_event (line 215)</a></td><td>called 9180 times, returned 9180 times</td><td>27.0%</td></tr> + <tr><td><a href="#l109">cmd_dispatcher_handle_internal (line 109)</a></td><td>called 36800 times, returned 36800 times</td><td>50.0%</td></tr> + <tr><td><a href="#l24">copy_cmd (line 24)</a></td><td>called 170 times, returned 170 times</td><td>33.0%</td></tr> + <tr><td><a href="#l40">copy_cmds (line 40)</a></td><td>called 83 times, returned 83 times</td><td>54.0%</td></tr> + <tr><td><a href="#l35">free_cmd (line 35)</a></td><td>called 170 times, returned 170 times</td><td>100.0%</td></tr> + <tr><td><a href="#l60">free_cmds (line 60)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="#l134">make_conn_ctx (line 134)</a></td><td>called 36800 times, returned 36800 times</td><td>27.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"command.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"event_loop.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json_rpc.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><poll.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">cmds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">copy_cmd</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">dest</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">dest</span><span class="o">-></span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strdup</span><span class="p">(</span><span class="n">src</span><span class="o">-></span><span class="n">name</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 170 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">170</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">dest</span><span class="o">-></span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strdup"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">dest</span><span class="o">-></span><span class="n">handler</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">src</span><span class="o">-></span><span class="n">handler</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">free_cmd</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">desc</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">desc</span><span class="o">-></span><span class="n">name</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">copy_cmds</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">dest</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">numof_copied</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 170 times.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">253</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">numof_copied</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">numof_copied</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">numof_copied</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">copy_cmd</span><span class="p">(</span><span class="o">&</span><span class="n">dest</span><span class="p">[</span><span class="n">numof_copied</span><span class="p">],</span><span class="w"> </span><span class="o">&</span><span class="n">src</span><span class="p">[</span><span class="n">numof_copied</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 170 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">170</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">numof_copied</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free_cmd</span><span class="p">(</span><span class="o">&</span><span class="n">dest</span><span class="p">[</span><span class="n">numof_copied</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">free_cmds</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">cmds</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 170 times.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">253</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">170</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free_cmd</span><span class="p">(</span><span class="o">&</span><span class="n">cmds</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">cmd_dispatcher_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">**</span><span class="n">_dispatcher</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">cmds</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="n">dispatcher</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">83</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">dispatcher</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">dispatcher</span><span class="o">-></span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">83</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">dispatcher</span><span class="o">-></span><span class="n">numof_cmds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">copy_cmds</span><span class="p">(</span><span class="n">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="p">,</span><span class="w"> </span><span class="n">cmds</span><span class="p">,</span><span class="w"> </span><span class="n">numof_cmds</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">83</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_cmds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_dispatcher</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dispatcher</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_cmds</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">cmd_dispatcher_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="n">dispatcher</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free_cmds</span><span class="p">(</span><span class="n">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="p">,</span><span class="w"> </span><span class="n">dispatcher</span><span class="o">-></span><span class="n">numof_cmds</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">cmd_dispatcher_handle_internal</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="n">dispatcher</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">actual_cmd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_method</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 64418 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">64418</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">dispatcher</span><span class="o">-></span><span class="n">numof_cmds</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64418</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="o">*</span><span class="n">cmd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="p">[</span><span class="n">i</span><span class="p">];</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27618 times.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">64418</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">strcmp</span><span class="p">(</span><span class="n">cmd</span><span class="o">-></span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">actual_cmd</span><span class="p">))</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">continue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">cmd</span><span class="o">-></span><span class="n">handler</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="n">arg</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Received an unknown command: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">actual_cmd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">cmd_dispatcher_handle</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="n">dispatcher</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">command</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_internal</span><span class="p">(</span><span class="n">dispatcher</span><span class="p">,</span><span class="w"> </span><span class="n">command</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="n">dispatcher</span><span class="o">-></span><span class="n">ctx</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">make_conn_ctx</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">ctx</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ctx</span><span class="o">-></span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ctx</span><span class="o">-></span><span class="n">arg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_conn_internal</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="n">dispatcher</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">new_ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">make_conn_ctx</span><span class="p">(</span><span class="n">conn_fd</span><span class="p">,</span><span class="w"> </span><span class="n">dispatcher</span><span class="o">-></span><span class="n">ctx</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">new_ctx</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_recv</span><span class="p">(</span><span class="o">&</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">requires_response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">!</span><span class="n">jsonrpc_request_is_notification</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">default_response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27594 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">requires_response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_create</span><span class="p">(</span><span class="o">&</span><span class="n">default_response</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">default_error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27594 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">requires_response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_error_create</span><span class="p">(</span><span class="o">&</span><span class="n">default_error</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="s">"An error occured"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_default_response</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_internal</span><span class="p">(</span><span class="n">dispatcher</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">new_ctx</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27594 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">requires_response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">actual_response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">response</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">actual_response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">actual_response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">default_error</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">default_response</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + <div class="notTakenBranch">✗ Branch 3 not taken.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class="n">jsonrpc_response_is_error</span><span class="p">(</span><span class="n">actual_response</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">actual_response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_error</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_send</span><span class="p">(</span><span class="n">actual_response</span><span class="p">,</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="mi">-1</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27594 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">response</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_response_destroy</span><span class="p">(</span><span class="n">response</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27594 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">default_error</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_response_destroy</span><span class="p">(</span><span class="n">default_error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27594</td> + <td class="src coveredLine"><span class="nl">free_default_response</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27594 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">default_response</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_response_destroy</span><span class="p">(</span><span class="n">default_response</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27594</td> + <td class="src coveredLine"><span class="nl">free_request</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="nl">free_ctx</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">new_ctx</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_conn</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_dispatcher</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_conn_internal</span><span class="p">(</span><span class="n">conn_fd</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_event</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">revents</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_dispatcher</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="n">revents</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLIN</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Descriptor %d is not readable</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_conn_internal</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.css b/coverage/index.css new file mode 100644 index 0000000..6b6c4e9 --- /dev/null +++ b/coverage/index.css @@ -0,0 +1,603 @@ +:root { + font-family: sans-serif; + --tab_size: 4; +} + +.theme-green, .theme-blue { + --unknown_color: lightgray; + --low_color: #FF6666; + --medium_color: #F9FD63; + --partial_covered_color: var(--medium_color); + --uncovered_color: #FF8C8C; + --warning_color: orangered; + --notTakenBranch_color: red; + --uncheckedDecision_color: darkorange; + --notTakenDecision_color: red; + --notInvokedCall_color: red; + --excluded_color: rgb(255, 241, 229); +} + +.theme-green { + --high_color: #85E485; + --covered_color: #85E485; + --takenBranch_color: green; + --takenDecision_color: green; + --invokedCall_color: green; +} + +.theme-blue { + --high_color: #66B4FF; + --covered_color: #66B4Ff; + --takenBranch_color: blue; + --takenDecision_color: blue; + --invokedCall_color: blue; +} + +body +{ + color: #000000; + background-color: #FFFFFF; +} + +h1 +{ + text-align: center; + margin: 0; + padding-bottom: 10px; + font-size: 20pt; + font-weight: bold; +} + +hr +{ + background-color: navy; + height: 2px; + border: 0; +} + +/* Link formats: use maroon w/underlines */ +a:link +{ + color: navy; + text-decoration: underline; +} +a:visited +{ + color: maroon; + text-decoration: underline; +} + +/*** Summary formats ***/ + +.summary +{ + display: flex; + flex-flow: row wrap; + max-width: 100%; + justify-content: flex-start; +} + +.summary > table +{ + flex: 1 0 7em; + border: 0; +} + +.summary > :last-child { + margin-left: auto; +} + +table.legend +{ + color: black; + display: flex; + flex-flow: row wrap; + justify-content: flex-start; +} + +table.legend th[scope=row] +{ + font-weight: normal; + text-align: right; + white-space: nowrap; +} + +table.legend td +{ + color: blue; + text-align: left; + white-space: nowrap; + padding-left: 5px; +} + +table.legend td.legend +{ + color: black; + font-size: 80%; +} + +table.legend td.warning_text +{ + color: var(--warning_color); +} + +table.coverage td, +table.coverage th +{ + text-align: right; + color: black; + font-weight: normal; + white-space: nowrap; + padding-left: 5px; + padding-right: 4px; +} + +table.coverage td +{ + background-color: LightSteelBlue; +} + +table.coverage th[scope=row] +{ + color: black; + font-weight: normal; + white-space: nowrap; +} + +table.coverage th[scope=col] +{ + color: blue; + font-weight: normal; + white-space: nowrap; +} + +table.legend span +{ + margin-right: 4px; + padding: 2px; +} + +table.legend span.coverage-unknown, +table.legend span.coverage-none, +table.legend span.coverage-low, +table.legend span.coverage-medium, +table.legend span.coverage-high +{ + padding-left: 3px; + padding-right: 3px; +} + +table.legend span.coverage-unknown, +table.coverage td.coverage-unknown, +table.file-list td.coverage-unknow +{ + background-color: var(--unknown_color) !important; +} + +table.legend span.coverage-none, +table.legend span.coverage-low, +table.coverage td.coverage-none, +table.coverage td.coverage-low, +table.file-list td.coverage-none, +table.file-list td.coverage-low +{ + background-color: var(--low_color) !important; +} + +table.legend span.coverage-medium, +table.coverage td.coverage-medium, +table.file-list td.coverage-medium +{ + background-color: var(--medium_color) !important; +} + +table.legend span.coverage-high, +table.coverage td.coverage-high, +table.file-list td.coverage-high +{ + background-color: var(--high_color) !important; +} +/*** End of Summary formats ***/ +/*** Meter formats ***/ + +/* Common */ +meter { + -moz-appearance: none; + + width: 30vw; + min-width: 4em; + max-width: 15em; + height: 0.75em; + padding: 0; + vertical-align: baseline; + margin-top: 3px; + /* Outer background for Mozilla */ + background: none; + background-color: whitesmoke; +} + +/* Webkit */ + +meter::-webkit-meter-bar { + /* Outer background for Webkit */ + background: none; + background-color: whitesmoke; + height: 0.75em; + border-radius: 0px; +} + +meter::-webkit-meter-optimum-value, +meter::-webkit-meter-suboptimum-value, +meter::-webkit-meter-even-less-good-value +{ + /* Inner shadow for Webkit */ + border: solid 1px black; +} + +meter.coverage-none::-webkit-meter-optimum-value, +meter.coverage-low::-webkit-meter-optimum-value +{ + background: var(--low_color); +} + +meter.coverage-medium::-webkit-meter-optimum-value +{ + background: var(--medium_color); +} + +meter.coverage-high::-webkit-meter-optimum-value +{ + background: var(--high_color); +} + +/* Mozilla */ + +meter::-moz-meter-bar +{ + box-sizing: border-box; +} + +meter:-moz-meter-optimum::-moz-meter-bar, +meter:-moz-meter-sub-optimum::-moz-meter-bar, +meter:-moz-meter-sub-sub-optimum::-moz-meter-bar +{ + /* Inner shadow for Mozilla */ + border: solid 1px black; +} + +meter.coverage-none:-moz-meter-optimum::-moz-meter-bar, +meter.coverage-low:-moz-meter-optimum::-moz-meter-bar +{ + background: var(--low_color); +} + +meter.coverage-medium:-moz-meter-optimum::-moz-meter-bar +{ + background: var(--medium_color); +} + +meter.coverage-high:-moz-meter-optimum::-moz-meter-bar +{ + background: var(--high_color); +} + +/*** End of Meter formats ***/ +.file-list td, .file-list th { + padding: 0 10px; + font-weight: bold; +} + +.file-list th[scope^=col] +{ + text-align: center; + color: white; + background-color: SteelBlue; + font-size: 120%; +} + +.file-list th[scope=row] +{ + text-align: left; + color: black; + font-family: monospace; + font-weight: bold; + font-size: 110%; +} + +.file-list tr > td, +.file-list tr > th { + background: aliceblue; +} + +.file-list tr:nth-child(even) > td, +.file-list tr:nth-child(even) > th { + background: LightSteelBlue +} + +.file-list tr:hover > td, +.file-list tr:hover > th[scope=row] +{ + background-color: #ddd; +} +td.CoverValue +{ + text-align: right; + white-space: nowrap; +} + +td.coveredLine, +span.coveredLine +{ + background-color: var(--covered_color) !important; +} + +td.partialCoveredLine, +span.partialCoveredLine +{ + background-color: var(--partial_covered_color) !important; +} + +td.uncoveredLine, +span.uncoveredLine +{ + background-color: var(--uncovered_color) !important; +} + +td.excludedLine, +span.excludedLine +{ + background-color: var(--excluded_color) !important; +} + +.linebranch, .linedecision, .linecall, .linecount +{ + font-family: monospace; + border-right: 1px gray solid; + background-color: lightgray; + text-align: right; +} + + +.linebranchDetails, .linedecisionDetails, .linecallDetails +{ + position: relative; +} +.linebranchSummary, .linedecisionSummary, .linecallSummary +{ + cursor: help; +} +.linebranchContents, .linedecisionContents, .linecallContents +{ + font-family: sans-serif; + font-size: small; + text-align: left; + position: absolute; + width: 15em; + padding: 1em; + background: white; + border: solid gray 1px; + box-shadow: 5px 5px 10px gray; + z-index: 1; /* show in front of the table entries */ +} + +.takenBranch +{ + color: var(--takenBranch_color) !important; +} + +.notTakenBranch +{ + color: var(--notTakenBranch_color) !important; +} + +.takenDecision +{ + color: var(--takenDecision_color) !important; +} + +.notTakenDecision +{ + color: var(--notTakenDecision_color) !important; +} + +.uncheckedDecision +{ + color: var(--uncheckedDecision_color) !important; +} + +.invokedCall +{ + color: var(--invokedCall_color) !important; +} + +.notInvokedCall +{ + color: var(--notInvokedCall_color) !important; +} + +.src +{ + padding-left: 12px; + text-align: left; + + font-family: monospace; + white-space: pre; + + tab-size: var(--tab_size); + -moz-tab-size: var(--tab_size); +} + +span.takenBranch, +span.notTakenBranch, +span.takenDecision, +span.notTakenDecision, +span.uncheckedDecision +{ + font-family: monospace; + font-weight: bold; +} + +pre +{ + height : 15px; + margin-top: 0; + margin-bottom: 0; +} + +.listOfFunctions td, .listOfFunctions th { + padding: 0 10px; +} +.listOfFunctions th +{ + text-align: center; + color: white; + background-color: SteelBlue; +} +.listOfFunctions tr > td { + background: aliceblue; +} +.listOfFunctions tr:nth-child(even) > td { + background: LightSteelBlue +} +.listOfFunctions tr:hover > td +{ + background-color: #ddd; +} +.listOfFunctions tr > td > a +{ + text-decoration: none; + color: inherit; +} + +.source-line +{ + height : 15px; + margin-top: 0; + margin-bottom: 0; +} + +.lineno +{ + background-color: #EFE383; + border-right: 1px solid #BBB15F; + text-align: right; + unicode-bidi: embed; + font-family: monospace; + white-space: pre; +} + +.lineno > a +{ + text-decoration: none; + color: inherit; +} + +.file-list +{ + margin: 1em auto; + border: 0; + border-spacing: 1px; +} + +.file-source table +{ + border-spacing: 0; +} + +.file-source table td, +.file-source table th +{ + padding: 1px 10px; +} + +.file-source table th +{ + font-family: monospace; + font-weight: bold; +} + +.file-source table td:last-child +{ + width: 100%; +} +footer +{ + text-align: center; + padding-top: 3px; +} + +/* pygments syntax highlighting */ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.hll { background-color: #ffffcc } +.c { color: #3D7B7B; font-style: italic } /* Comment */ +.err { border: 1px solid #FF0000 } /* Error */ +.k { color: #008000; font-weight: bold } /* Keyword */ +.o { color: #666666 } /* Operator */ +.ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.cp { color: #9C6500 } /* Comment.Preproc */ +.cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.gd { color: #A00000 } /* Generic.Deleted */ +.ge { font-style: italic } /* Generic.Emph */ +.ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.gr { color: #E40000 } /* Generic.Error */ +.gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.gi { color: #008400 } /* Generic.Inserted */ +.go { color: #717171 } /* Generic.Output */ +.gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.gs { font-weight: bold } /* Generic.Strong */ +.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.gt { color: #0044DD } /* Generic.Traceback */ +.kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.kp { color: #008000 } /* Keyword.Pseudo */ +.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.kt { color: #B00040 } /* Keyword.Type */ +.m { color: #666666 } /* Literal.Number */ +.s { color: #BA2121 } /* Literal.String */ +.na { color: #687822 } /* Name.Attribute */ +.nb { color: #008000 } /* Name.Builtin */ +.nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.no { color: #880000 } /* Name.Constant */ +.nd { color: #AA22FF } /* Name.Decorator */ +.ni { color: #717171; font-weight: bold } /* Name.Entity */ +.ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.nf { color: #0000FF } /* Name.Function */ +.nl { color: #767600 } /* Name.Label */ +.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.nt { color: #008000; font-weight: bold } /* Name.Tag */ +.nv { color: #19177C } /* Name.Variable */ +.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.w { color: #bbbbbb } /* Text.Whitespace */ +.mb { color: #666666 } /* Literal.Number.Bin */ +.mf { color: #666666 } /* Literal.Number.Float */ +.mh { color: #666666 } /* Literal.Number.Hex */ +.mi { color: #666666 } /* Literal.Number.Integer */ +.mo { color: #666666 } /* Literal.Number.Oct */ +.sa { color: #BA2121 } /* Literal.String.Affix */ +.sb { color: #BA2121 } /* Literal.String.Backtick */ +.sc { color: #BA2121 } /* Literal.String.Char */ +.dl { color: #BA2121 } /* Literal.String.Delimiter */ +.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.s2 { color: #BA2121 } /* Literal.String.Double */ +.se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.sh { color: #BA2121 } /* Literal.String.Heredoc */ +.si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.sx { color: #008000 } /* Literal.String.Other */ +.sr { color: #A45A77 } /* Literal.String.Regex */ +.s1 { color: #BA2121 } /* Literal.String.Single */ +.ss { color: #19177C } /* Literal.String.Symbol */ +.bp { color: #008000 } /* Name.Builtin.Pseudo */ +.fm { color: #0000FF } /* Name.Function.Magic */ +.vc { color: #19177C } /* Name.Variable.Class */ +.vg { color: #19177C } /* Name.Variable.Global */ +.vi { color: #19177C } /* Name.Variable.Instance */ +.vm { color: #19177C } /* Name.Variable.Magic */ +.il { color: #666666 } /* Literal.Number.Integer.Long */
\ No newline at end of file diff --git a/coverage/index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html b/coverage/index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html new file mode 100644 index 0000000..2150bd0 --- /dev/null +++ b/coverage/index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html @@ -0,0 +1,1964 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/event_loop.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>111</td> + <td>131</td> + <td class="coverage-medium">84.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>14</td> + <td>14</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>39</td> + <td>76</td> + <td class="coverage-low">51.3%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l132">append_event (line 132)</a></td><td>called 340226 times, returned 340226 times</td><td>75.0%</td></tr> + <tr><td><a href="#l29">event_fd_create (line 29)</a></td><td>called 36966 times, returned 36966 times</td><td>27.0%</td></tr> + <tr><td><a href="#l46">event_fd_destroy (line 46)</a></td><td>called 36966 times, returned 36966 times</td><td>100.0%</td></tr> + <tr><td><a href="#l51">event_fd_queue_create (line 51)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="#l56">event_fd_queue_destroy (line 56)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="#l103">event_loop_add (line 103)</a></td><td>called 112 times, returned 112 times</td><td>83.0%</td></tr> + <tr><td><a href="#l94">event_loop_add_internal (line 94)</a></td><td>called 36966 times, returned 36966 times</td><td>67.0%</td></tr> + <tr><td><a href="#l112">event_loop_add_once (line 112)</a></td><td>called 36854 times, returned 36854 times</td><td>83.0%</td></tr> + <tr><td><a href="#l72">event_loop_create (line 72)</a></td><td>called 83 times, returned 83 times</td><td>33.0%</td></tr> + <tr><td><a href="#l88">event_loop_destroy (line 88)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="#l123">event_loop_remove (line 123)</a></td><td>called 36800 times, returned 36800 times</td><td>73.0%</td></tr> + <tr><td><a href="#l190">event_loop_run (line 190)</a></td><td>called 62232 times, returned 62232 times</td><td>58.0%</td></tr> + <tr><td><a href="#l139">events_to_string (line 139)</a></td><td>called 340226 times, returned 340226 times</td><td>61.0%</td></tr> + <tr><td><a href="#l166">make_pollfds (line 166)</a></td><td>called 62232 times, returned 62232 times</td><td>52.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"event_loop.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"string.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><poll.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stddef.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/queue.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="n">SIMPLEQ_HEAD</span><span class="p">(</span><span class="n">event_fd_queue</span><span class="p">,</span><span class="w"> </span><span class="n">event_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">events</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">event_handler</span><span class="w"> </span><span class="n">handler</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">once</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">SIMPLEQ_ENTRY</span><span class="p">(</span><span class="n">event_fd</span><span class="p">)</span><span class="w"> </span><span class="n">entries</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">event_fd_create</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">events</span><span class="p">,</span><span class="w"> </span><span class="n">event_handler</span><span class="w"> </span><span class="n">handler</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36966 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36966</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">res</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">res</span><span class="o">-></span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">res</span><span class="o">-></span><span class="n">events</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">events</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">res</span><span class="o">-></span><span class="n">handler</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">handler</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">res</span><span class="o">-></span><span class="n">arg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">res</span><span class="o">-></span><span class="n">once</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">res</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">event_fd_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">event_fd_queue_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INIT</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">event_fd_queue_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 166 times.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">249</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">entry1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">166</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_NEXT</span><span class="p">(</span><span class="n">entry1</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">166</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_fd_destroy</span><span class="p">(</span><span class="n">entry1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">166</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry2</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INIT</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">nfds_t</span><span class="w"> </span><span class="n">nfds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd_queue</span><span class="w"> </span><span class="n">entries</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">event_loop_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">**</span><span class="n">_loop</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">83</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">loop</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_loop</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">loop</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_fd_queue_create</span><span class="p">(</span><span class="o">&</span><span class="n">loop</span><span class="o">-></span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">event_loop_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_fd_queue_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">loop</span><span class="o">-></span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">event_loop_add_internal</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 36966 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36966</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">"Adding descriptor %d to event loop</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">nfds_t</span><span class="w"> </span><span class="n">nfds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">loop</span><span class="o">-></span><span class="n">nfds</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INSERT_TAIL</span><span class="p">(</span><span class="o">&</span><span class="n">loop</span><span class="o">-></span><span class="n">entries</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">loop</span><span class="o">-></span><span class="n">nfds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nfds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36966</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">112</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">event_loop_add</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">events</span><span class="p">,</span><span class="w"> </span><span class="n">event_handler</span><span class="w"> </span><span class="n">handler</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">112</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_fd_create</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">events</span><span class="p">,</span><span class="w"> </span><span class="n">handler</span><span class="p">,</span><span class="w"> </span><span class="n">arg</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 112 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">112</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">112</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_loop_add_internal</span><span class="p">(</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">112</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36854</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">event_loop_add_once</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">events</span><span class="p">,</span><span class="w"> </span><span class="n">event_handler</span><span class="w"> </span><span class="n">handler</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36854</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_fd_create</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">events</span><span class="p">,</span><span class="w"> </span><span class="n">handler</span><span class="p">,</span><span class="w"> </span><span class="n">arg</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36854 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36854</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36854</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">once</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36854</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_loop_add_internal</span><span class="p">(</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36854</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">event_loop_remove</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">"Removing descriptor %d from event loop</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">5/8</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + <div class="notTakenBranch">✗ Branch 3 not taken.</div> + <div class="takenBranch">✓ Branch 4 taken 57564 times.</div> + <div class="takenBranch">✓ Branch 5 taken 36800 times.</div> + <div class="takenBranch">✓ Branch 6 taken 23009 times.</div> + <div class="takenBranch">✓ Branch 7 taken 13791 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">94364</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">SIMPLEQ_REMOVE</span><span class="p">(</span><span class="o">&</span><span class="n">loop</span><span class="o">-></span><span class="n">entries</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">event_fd</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_fd_destroy</span><span class="p">(</span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">--</span><span class="n">loop</span><span class="o">-></span><span class="n">nfds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">append_event</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">event</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ptr</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">buf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">string_append</span><span class="p">(</span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="n">buf</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="s">","</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">string_append</span><span class="p">(</span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="n">buf</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">event</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">events_to_string</span><span class="p">(</span><span class="kt">short</span><span class="w"> </span><span class="n">events</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">sz</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">128</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">buf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">buf</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLNVAL</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">append_event</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="s">"POLLNVAL"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLERR</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">append_event</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="s">"POLLERR"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLHUP</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">append_event</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="s">"POLLHUP"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLRDHUP</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">append_event</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="s">"POLLRDHUP"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLPRI</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">append_event</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="s">"POLLPRI"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 340226 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLIN</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">append_event</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="s">"POLLIN"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLOUT</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">append_event</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">sz</span><span class="p">,</span><span class="w"> </span><span class="n">ptr</span><span class="p">,</span><span class="w"> </span><span class="s">"POLLOUT"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">buf</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">pollfd</span><span class="w"> </span><span class="o">*</span><span class="n">make_pollfds</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">pollfd</span><span class="w"> </span><span class="o">*</span><span class="n">fds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="n">loop</span><span class="o">-></span><span class="n">nfds</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">pollfd</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 62232 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">62232</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">fds</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="o">&</span><span class="n">loop</span><span class="o">-></span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 275723 times.</div> + <div class="takenBranch">✓ Branch 1 taken 62232 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">337955</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">nfds_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">loop</span><span class="o">-></span><span class="n">nfds</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_NEXT</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">events</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">events</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 62232 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">62232</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">"Descriptors:</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 275723 times.</div> + <div class="takenBranch">✓ Branch 1 taken 62232 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">337955</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">nfds_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">loop</span><span class="o">-></span><span class="n">nfds</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">events</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">events_to_string</span><span class="p">(</span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">events</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 275723 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + <div class="notTakenBranch">✗ Branch 3 not taken.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">275723</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">" %d (%s)</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">events</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">events</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="s">""</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">events</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">fds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">event_loop_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* Cache the number of event descriptors so that event handlers can</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * append new ones. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">nfds_t</span><span class="w"> </span><span class="n">nfds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">loop</span><span class="o">-></span><span class="n">nfds</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">pollfd</span><span class="w"> </span><span class="o">*</span><span class="n">fds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">make_pollfds</span><span class="p">(</span><span class="n">loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 62232 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">62232</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">fds</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">poll</span><span class="p">(</span><span class="n">fds</span><span class="p">,</span><span class="w"> </span><span class="n">nfds</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 62232 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">62232</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"poll"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="o">&</span><span class="n">loop</span><span class="o">-></span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 275723 times.</div> + <div class="takenBranch">✓ Branch 1 taken 62232 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">337955</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">nfds_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">nfds</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_fd</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_NEXT</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 211220 times.</div> + <div class="takenBranch">✓ Branch 1 taken 64503 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">revents</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">211220</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">next</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64503</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">events</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">events_to_string</span><span class="p">(</span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">revents</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 64503 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + <div class="notTakenBranch">✗ Branch 3 not taken.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">64503</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">"Descriptor %d is ready: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">events</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="n">events</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="s">""</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64503</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">events</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* Execute all handlers but notice if any of them fail. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64503</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">handler_ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">handler</span><span class="p">(</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">fds</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">revents</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">arg</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 64503 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">64503</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">handler_ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">handler_ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27703 times.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">64503</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">entry</span><span class="o">-></span><span class="n">once</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_loop_remove</span><span class="p">(</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27703</td> + <td class="src coveredLine"><span class="w"> </span><span class="nl">next</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">next</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">275723</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">continue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">fds</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">62232</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.file.c.0cc24881e570d19e625204519d50254f.html b/coverage/index.file.c.0cc24881e570d19e625204519d50254f.html new file mode 100644 index 0000000..f7abbfe --- /dev/null +++ b/coverage/index.file.c.0cc24881e570d19e625204519d50254f.html @@ -0,0 +1,1357 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/file.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>56</td> + <td>84</td> + <td class="coverage-low">66.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>8</td> + <td>8</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>20</td> + <td>52</td> + <td class="coverage-low">38.5%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l39">chdir_wrapper (line 39)</a></td><td>called 18360 times, returned 18360 times</td><td>27.0%</td></tr> + <tr><td><a href="#l115">file_close (line 115)</a></td><td>called 110566 times, returned 110566 times</td><td>30.0%</td></tr> + <tr><td><a href="#l102">file_dup (line 102)</a></td><td>called 9234 times, returned 9234 times</td><td>33.0%</td></tr> + <tr><td><a href="#l120">file_exists (line 120)</a></td><td>called 36720 times, returned 36720 times</td><td>100.0%</td></tr> + <tr><td><a href="#l127">file_read (line 127)</a></td><td>called 9180 times, returned 9180 times</td><td>38.0%</td></tr> + <tr><td><a href="#l66">readlink_wrapper (line 66)</a></td><td>called 20 times, returned 20 times</td><td>30.0%</td></tr> + <tr><td><a href="#l33">rm_rf (line 33)</a></td><td>called 9180 times, returned 9180 times</td><td>86.0%</td></tr> + <tr><td><a href="#l19">unlink_cb (line 19)</a></td><td>called 403663 times, returned 403663 times</td><td>33.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><fcntl.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><ftw.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/stat.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">403663</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">unlink_cb</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">fpath</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">stat</span><span class="w"> </span><span class="o">*</span><span class="n">sb</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">typeflag</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">FTW</span><span class="w"> </span><span class="o">*</span><span class="n">ftwbuf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">403663</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">403663</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">remove</span><span class="p">(</span><span class="n">fpath</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 403663 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">403663</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"remove"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">403663</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">rm_rf</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dir</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Recursively removing directory: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">dir</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nftw</span><span class="p">(</span><span class="n">dir</span><span class="p">,</span><span class="w"> </span><span class="n">unlink_cb</span><span class="p">,</span><span class="w"> </span><span class="mi">64</span><span class="p">,</span><span class="w"> </span><span class="n">FTW_DEPTH</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">FTW_PHYS</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">chdir_wrapper</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dir</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">old</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">old</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">old</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_current_dir_name</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!*</span><span class="n">old</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"get_current_dir_name"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">chdir</span><span class="p">(</span><span class="n">dir</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18360 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18360</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"chdir"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_old</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_old</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">old</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="o">*</span><span class="n">old</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">readlink_wrapper</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">current_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">256</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">tmp_buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">realloc</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">current_size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 20 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">20</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">tmp_buf</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"realloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp_buf</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">ssize_t</span><span class="w"> </span><span class="n">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">readlink</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">current_size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 20 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">20</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">res</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"readlink"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 20 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">20</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="kt">size_t</span><span class="p">)</span><span class="n">res</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">current_size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">current_size</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">continue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">buf</span><span class="p">[</span><span class="n">res</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">20</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">buf</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">buf</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">file_dup</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fcntl</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">F_DUPFD_CLOEXEC</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"fcntl"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110566</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">file_close</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 110566 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">110566</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_errno_if</span><span class="p">(</span><span class="n">close</span><span class="p">(</span><span class="n">fd</span><span class="p">),</span><span class="w"> </span><span class="s">"close"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110566</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">file_exists</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">stat</span><span class="w"> </span><span class="n">stat</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">lstat</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">stat</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">3/4</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + <div class="notTakenBranch">✗ Branch 3 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36720</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">!</span><span class="n">ret</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">S_ISREG</span><span class="p">(</span><span class="n">stat</span><span class="p">.</span><span class="n">st_mode</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">file_read</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">_contents</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">_size</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">alloc_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">256</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">contents</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">144099</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">153279</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">tmp_contents</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">realloc</span><span class="p">(</span><span class="n">contents</span><span class="p">,</span><span class="w"> </span><span class="n">alloc_size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 153279 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">153279</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">tmp_contents</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"realloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">contents</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">153279</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">contents</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp_contents</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">153279</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">ssize_t</span><span class="w"> </span><span class="n">read_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">contents</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">size</span><span class="p">,</span><span class="w"> </span><span class="n">alloc_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 153279 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">153279</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">read_size</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"read"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">contents</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">read_size</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 1 taken 144099 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">153279</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">read_size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_contents</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">contents</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">144099</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">read_size</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 49896 times.</div> + <div class="takenBranch">✓ Branch 1 taken 94203 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">144099</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">alloc_size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">49896</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">alloc_size</span><span class="w"> </span><span class="o">*=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.functions.html b/coverage/index.functions.html new file mode 100644 index 0000000..3f52a63 --- /dev/null +++ b/coverage/index.functions.html @@ -0,0 +1,377 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> + +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>2020</td> + <td>2844</td> + <td class="coverage-low">71.0%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>281</td> + <td>294</td> + <td class="coverage-high">95.6%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>560</td> + <td>1409</td> + <td class="coverage-low">39.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> + </nav> + + <main> +<table class="listOfFunctions"> + <tr> + <th>Function (File:Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l132">append_event (src/event_loop.c:132)</a></td><td>called 340226 times, returned 340226 times</td><td>75.0%</td></tr> + <tr><td><a href="index.base64.c.6cc41135837c80527c8f246c27adf87e.html#l35">base64_decode (src/base64.c:35)</a></td><td>called 9180 times, returned 9180 times</td><td>26.0%</td></tr> + <tr><td><a href="index.base64.c.6cc41135837c80527c8f246c27adf87e.html#l19">base64_encode (src/base64.c:19)</a></td><td>called 9180 times, returned 9180 times</td><td>38.0%</td></tr> + <tr><td><a href="index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html#l20">buf_create (src/buf.c:20)</a></td><td>called 92012 times, returned 92012 times</td><td>27.0%</td></tr> + <tr><td><a href="index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html#l35">buf_create_from_string (src/buf.c:35)</a></td><td>called 46006 times, returned 46006 times</td><td>100.0%</td></tr> + <tr><td><a href="index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html#l40">buf_destroy (src/buf.c:40)</a></td><td>called 92012 times, returned 92012 times</td><td>100.0%</td></tr> + <tr><td><a href="index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html#l50">buf_get_data (src/buf.c:50)</a></td><td>called 138018 times, returned 138018 times</td><td>100.0%</td></tr> + <tr><td><a href="index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html#l45">buf_get_size (src/buf.c:45)</a></td><td>called 92012 times, returned 92012 times</td><td>100.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l39">chdir_wrapper (src/file.c:39)</a></td><td>called 18360 times, returned 18360 times</td><td>27.0%</td></tr> + <tr><td><a href="index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html#l53">ci_cleanup_git_repo (src/ci.c:53)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html#l59">ci_prepare_git_repo (src/ci.c:59)</a></td><td>called 9180 times, returned 9180 times</td><td>60.0%</td></tr> + <tr><td><a href="index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html#l40">ci_run (src/ci.c:40)</a></td><td>called 9180 times, returned 9180 times</td><td>63.0%</td></tr> + <tr><td><a href="index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html#l79">ci_run_git_repo (src/ci.c:79)</a></td><td>called 9180 times, returned 9180 times</td><td>81.0%</td></tr> + <tr><td><a href="index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html#l34">ci_run_script (src/ci.c:34)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html#l25">client_create (src/client.c:25)</a></td><td>called 9208 times, returned 9208 times</td><td>27.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l156">client_create (src/tcp_server.c:156)</a></td><td>called 27620 times, returned 27620 times</td><td>24.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l131">client_create_thread (src/tcp_server.c:131)</a></td><td>called 27620 times, returned 27620 times</td><td>50.0%</td></tr> + <tr><td><a href="index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html#l39">client_destroy (src/client.c:39)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l86">client_destroy (src/tcp_server.c:86)</a></td><td>called 27620 times, returned 27620 times</td><td>62.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l97">client_destroy_handler (src/tcp_server.c:97)</a></td><td>called 27620 times, returned 27620 times</td><td>75.0%</td></tr> + <tr><td><a href="index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html#l72">client_main (src/client.c:72)</a></td><td>called 9208 times, returned 9208 times</td><td>64.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l201">client_queue_create (src/tcp_server.c:201)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l206">client_queue_destroy (src/tcp_server.c:206)</a></td><td>called 29 times, returned 29 times</td><td>60.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l107">client_thread_func (src/tcp_server.c:107)</a></td><td>called 27620 times, returned 27620 times</td><td>54.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l66">cmd_dispatcher_create (src/command.c:66)</a></td><td>called 83 times, returned 83 times</td><td>24.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l102">cmd_dispatcher_destroy (src/command.c:102)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l128">cmd_dispatcher_handle (src/command.c:128)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l210">cmd_dispatcher_handle_conn (src/command.c:210)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l148">cmd_dispatcher_handle_conn_internal (src/command.c:148)</a></td><td>called 36800 times, returned 36800 times</td><td>72.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l215">cmd_dispatcher_handle_event (src/command.c:215)</a></td><td>called 9180 times, returned 9180 times</td><td>27.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l109">cmd_dispatcher_handle_internal (src/command.c:109)</a></td><td>called 36800 times, returned 36800 times</td><td>50.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l24">copy_cmd (src/command.c:24)</a></td><td>called 170 times, returned 170 times</td><td>33.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l40">copy_cmds (src/command.c:40)</a></td><td>called 83 times, returned 83 times</td><td>54.0%</td></tr> + <tr><td><a href="index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html#l16">default_settings (src/client_main.c:16)</a></td><td>called 9214 times, returned 9214 times</td><td>100.0%</td></tr> + <tr><td><a href="index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html#l16">default_settings (src/server_main.c:16)</a></td><td>called 35 times, returned 35 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html#l16">default_settings (src/worker_main.c:16)</a></td><td>called 60 times, returned 60 times</td><td>100.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l29">event_fd_create (src/event_loop.c:29)</a></td><td>called 36966 times, returned 36966 times</td><td>27.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l46">event_fd_destroy (src/event_loop.c:46)</a></td><td>called 36966 times, returned 36966 times</td><td>100.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l51">event_fd_queue_create (src/event_loop.c:51)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l56">event_fd_queue_destroy (src/event_loop.c:56)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l103">event_loop_add (src/event_loop.c:103)</a></td><td>called 112 times, returned 112 times</td><td>83.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l94">event_loop_add_internal (src/event_loop.c:94)</a></td><td>called 36966 times, returned 36966 times</td><td>67.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l112">event_loop_add_once (src/event_loop.c:112)</a></td><td>called 36854 times, returned 36854 times</td><td>83.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l72">event_loop_create (src/event_loop.c:72)</a></td><td>called 83 times, returned 83 times</td><td>33.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l88">event_loop_destroy (src/event_loop.c:88)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l123">event_loop_remove (src/event_loop.c:123)</a></td><td>called 36800 times, returned 36800 times</td><td>73.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l190">event_loop_run (src/event_loop.c:190)</a></td><td>called 62232 times, returned 62232 times</td><td>58.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l139">events_to_string (src/event_loop.c:139)</a></td><td>called 340226 times, returned 340226 times</td><td>61.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l17">exec_child (src/process.c:17)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.cmd_line.c.fc55483624faae9ff92546137d095857.html#l42">exit_with_usage (src/cmd_line.c:42)</a></td><td>called 14 times, returned 0 time</td><td>89.0%</td></tr> + <tr><td><a href="index.cmd_line.c.fc55483624faae9ff92546137d095857.html#l55">exit_with_usage_err (src/cmd_line.c:55)</a></td><td>called 2 times, returned 0 time</td><td>100.0%</td></tr> + <tr><td><a href="index.cmd_line.c.fc55483624faae9ff92546137d095857.html#l62">exit_with_version (src/cmd_line.c:62)</a></td><td>called 6 times, returned 0 time</td><td>83.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l115">file_close (src/file.c:115)</a></td><td>called 110566 times, returned 110566 times</td><td>30.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l102">file_dup (src/file.c:102)</a></td><td>called 9234 times, returned 9234 times</td><td>33.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l120">file_exists (src/file.c:120)</a></td><td>called 36720 times, returned 36720 times</td><td>100.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l127">file_read (src/file.c:127)</a></td><td>called 9180 times, returned 9180 times</td><td>38.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l35">free_cmd (src/command.c:35)</a></td><td>called 170 times, returned 170 times</td><td>100.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l60">free_cmds (src/command.c:60)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l57">get_api (src/storage.c:57)</a></td><td>called 18502 times, returned 18502 times</td><td>36.0%</td></tr> + <tr><td><a href="index.cmd_line.c.fc55483624faae9ff92546137d095857.html#l22">get_current_binary_name (src/cmd_line.c:22)</a></td><td>called 20 times, returned 20 times</td><td>47.0%</td></tr> + <tr><td><a href="index.cmd_line.c.fc55483624faae9ff92546137d095857.html#l17">get_current_binary_path (src/cmd_line.c:17)</a></td><td>called 20 times, returned 20 times</td><td>100.0%</td></tr> + <tr><td><a href="index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html#l25">get_usage_string (src/client_main.c:25)</a></td><td>called 6 times, returned 6 times</td><td>100.0%</td></tr> + <tr><td><a href="index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html#l25">get_usage_string (src/server_main.c:25)</a></td><td>called 4 times, returned 4 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html#l25">get_usage_string (src/worker_main.c:25)</a></td><td>called 4 times, returned 4 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l151">jsonrpc_check_error (src/json_rpc.c:151)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l73">jsonrpc_check_id (src/json_rpc.c:73)</a></td><td>called 46006 times, returned 46006 times</td><td>50.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l63">jsonrpc_check_id_type (src/json_rpc.c:63)</a></td><td>called 18412 times, returned 18412 times</td><td>43.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l97">jsonrpc_check_method (src/json_rpc.c:97)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l120">jsonrpc_check_params (src/json_rpc.c:120)</a></td><td>called 36800 times, returned 36800 times</td><td>89.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l109">jsonrpc_check_params_type (src/json_rpc.c:109)</a></td><td>called 27540 times, returned 27540 times</td><td>29.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l179">jsonrpc_check_result_or_error (src/json_rpc.c:179)</a></td><td>called 9206 times, returned 9206 times</td><td>35.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l34">jsonrpc_check_version (src/json_rpc.c:34)</a></td><td>called 46006 times, returned 46006 times</td><td>40.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l463">jsonrpc_error_create (src/json_rpc.c:463)</a></td><td>called 9206 times, returned 9206 times</td><td>65.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l58">jsonrpc_generate_request_id (src/json_rpc.c:58)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l254">jsonrpc_notification_create (src/json_rpc.c:254)</a></td><td>called 27594 times, returned 27594 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l242">jsonrpc_request_create (src/json_rpc.c:242)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l195">jsonrpc_request_create_internal (src/json_rpc.c:195)</a></td><td>called 36800 times, returned 36800 times</td><td>45.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l329">jsonrpc_request_create_params (src/json_rpc.c:329)</a></td><td>called 73440 times, returned 73440 times</td><td>76.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l248">jsonrpc_request_destroy (src/json_rpc.c:248)</a></td><td>called 73600 times, returned 73600 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l265">jsonrpc_request_from_json (src/json_rpc.c:265)</a></td><td>called 36800 times, returned 36800 times</td><td>48.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l318">jsonrpc_request_get_method (src/json_rpc.c:318)</a></td><td>called 36800 times, returned 36800 times</td><td>83.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l375">jsonrpc_request_get_param_int (src/json_rpc.c:375)</a></td><td>called 27540 times, returned 27540 times</td><td>83.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l356">jsonrpc_request_get_param_string (src/json_rpc.c:356)</a></td><td>called 45900 times, returned 45900 times</td><td>83.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l260">jsonrpc_request_is_notification (src/json_rpc.c:260)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l298">jsonrpc_request_recv (src/json_rpc.c:298)</a></td><td>called 36800 times, returned 36800 times</td><td>35.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l293">jsonrpc_request_send (src/json_rpc.c:293)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l385">jsonrpc_request_set_param_int (src/json_rpc.c:385)</a></td><td>called 27540 times, returned 27540 times</td><td>80.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l366">jsonrpc_request_set_param_string (src/json_rpc.c:366)</a></td><td>called 45900 times, returned 45900 times</td><td>80.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l451">jsonrpc_response_create (src/json_rpc.c:451)</a></td><td>called 18412 times, returned 18412 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l398">jsonrpc_response_create_internal (src/json_rpc.c:398)</a></td><td>called 27618 times, returned 27618 times</td><td>50.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l457">jsonrpc_response_destroy (src/json_rpc.c:457)</a></td><td>called 36824 times, returned 36824 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l497">jsonrpc_response_from_json (src/json_rpc.c:497)</a></td><td>called 9206 times, returned 9206 times</td><td>45.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l492">jsonrpc_response_is_error (src/json_rpc.c:492)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l527">jsonrpc_response_recv (src/json_rpc.c:527)</a></td><td>called 9206 times, returned 9206 times</td><td>35.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l522">jsonrpc_response_send (src/json_rpc.c:522)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l393">jsonrpc_response_to_string (src/json_rpc.c:393)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l92">jsonrpc_set_id (src/json_rpc.c:92)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l104">jsonrpc_set_method (src/json_rpc.c:104)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l135">jsonrpc_set_params (src/json_rpc.c:135)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html#l51">jsonrpc_set_version (src/json_rpc.c:51)</a></td><td>called 64418 times, returned 64418 times</td><td>100.0%</td></tr> + <tr><td><a href="index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html#l80">libgit_checkout (src/git.c:80)</a></td><td>called 9180 times, returned 9180 times</td><td>25.0%</td></tr> + <tr><td><a href="index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html#l40">libgit_clone (src/git.c:40)</a></td><td>called 9180 times, returned 9180 times</td><td>29.0%</td></tr> + <tr><td><a href="index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html#l63">libgit_clone_to_tmp (src/git.c:63)</a></td><td>called 9180 times, returned 9180 times</td><td>38.0%</td></tr> + <tr><td><a href="index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html#l22">libgit_init (src/git.c:22)</a></td><td>called 54 times, returned 54 times</td><td>24.0%</td></tr> + <tr><td><a href="index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html#l75">libgit_repository_free (src/git.c:75)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html#l35">libgit_shutdown (src/git.c:35)</a></td><td>called 54 times, returned 54 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l291">libjson_append (src/json.c:291)</a></td><td>called 9180 times, returned 9180 times</td><td>33.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l65">libjson_clone (src/json.c:65)</a></td><td>called 27618 times, returned 27618 times</td><td>78.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l26">libjson_free (src/json.c:26)</a></td><td>called 110424 times, returned 110424 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l51">libjson_from_string (src/json.c:51)</a></td><td>called 46006 times, returned 46006 times</td><td>24.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l149">libjson_get (src/json.c:149)</a></td><td>called 385956 times, returned 385956 times</td><td>33.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l176">libjson_get_int (src/json.c:176)</a></td><td>called 27540 times, returned 27540 times</td><td>35.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l159">libjson_get_string (src/json.c:159)</a></td><td>called 165506 times, returned 165506 times</td><td>47.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l144">libjson_has (src/json.c:144)</a></td><td>called 606620 times, returned 606620 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l133">libjson_new_array (src/json.c:133)</a></td><td>called 26 times, returned 26 times</td><td>33.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l122">libjson_new_object (src/json.c:122)</a></td><td>called 110344 times, returned 110344 times</td><td>33.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l101">libjson_recv (src/json.c:101)</a></td><td>called 46006 times, returned 46006 times</td><td>85.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l83">libjson_send (src/json.c:83)</a></td><td>called 46006 times, returned 46006 times</td><td>82.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l256">libjson_set (src/json.c:256)</a></td><td>called 55158 times, returned 55158 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l276">libjson_set_const_key (src/json.c:276)</a></td><td>called 27618 times, returned 27618 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l266">libjson_set_int (src/json.c:266)</a></td><td>called 27540 times, returned 27540 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l286">libjson_set_int_const_key (src/json.c:286)</a></td><td>called 36772 times, returned 36772 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l235">libjson_set_int_internal (src/json.c:235)</a></td><td>called 64312 times, returned 64312 times</td><td>35.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l200">libjson_set_internal (src/json.c:200)</a></td><td>called 321772 times, returned 321772 times</td><td>33.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l261">libjson_set_string (src/json.c:261)</a></td><td>called 45900 times, returned 45900 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l281">libjson_set_string_const_key (src/json.c:281)</a></td><td>called 128784 times, returned 128784 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l214">libjson_set_string_internal (src/json.c:214)</a></td><td>called 174684 times, returned 174684 times</td><td>35.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l41">libjson_to_string (src/json.c:41)</a></td><td>called 46006 times, returned 46006 times</td><td>100.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l31">libjson_to_string_internal (src/json.c:31)</a></td><td>called 55212 times, returned 55212 times</td><td>33.0%</td></tr> + <tr><td><a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html#l46">libjson_to_string_pretty (src/json.c:46)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="index.log.c.47179e5db7ed3f2db741c99372ba24f3.html#l51">log_entry_end (src/log.c:51)</a></td><td>called 181825 times, returned 181825 times</td><td>100.0%</td></tr> + <tr><td><a href="index.log.c.47179e5db7ed3f2db741c99372ba24f3.html#l41">log_entry_start (src/log.c:41)</a></td><td>called 740909 times, returned 740909 times</td><td>100.0%</td></tr> + <tr><td><a href="index.log.c.47179e5db7ed3f2db741c99372ba24f3.html#l36">log_prefix_thread_id (src/log.c:36)</a></td><td>called 181825 times, returned 181825 times</td><td>100.0%</td></tr> + <tr><td><a href="index.log.c.47179e5db7ed3f2db741c99372ba24f3.html#l17">log_prefix_timestamp (src/log.c:17)</a></td><td>called 181825 times, returned 181825 times</td><td>70.0%</td></tr> + <tr><td><a href="index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html#l76">main (src/client_main.c:76)</a></td><td>called 9214 times, returned 9214 times</td><td>79.0%</td></tr> + <tr><td><a href="index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html#l73">main (src/server_main.c:73)</a></td><td>called 35 times, returned 29 times</td><td>79.0%</td></tr> + <tr><td><a href="index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html#l73">main (src/worker_main.c:73)</a></td><td>called 60 times, returned 54 times</td><td>79.0%</td></tr> + <tr><td><a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html#l134">make_conn_ctx (src/command.c:134)</a></td><td>called 36800 times, returned 36800 times</td><td>27.0%</td></tr> + <tr><td><a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html#l166">make_pollfds (src/event_loop.c:166)</a></td><td>called 62232 times, returned 62232 times</td><td>52.0%</td></tr> + <tr><td><a href="index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html#l44">make_request (src/client.c:44)</a></td><td>called 9208 times, returned 9208 times</td><td>80.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l95">net_accept (src/net.c:95)</a></td><td>called 27620 times, returned 27620 times</td><td>33.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l23">net_bind (src/net.c:23)</a></td><td>called 29 times, returned 29 times</td><td>26.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l154">net_close (src/net.c:154)</a></td><td>called 64503 times, returned 64503 times</td><td>100.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l109">net_connect (src/net.c:109)</a></td><td>called 27620 times, returned 27620 times</td><td>29.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l187">net_recv (src/net.c:187)</a></td><td>called 92012 times, returned 92012 times</td><td>35.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l228">net_recv_buf (src/net.c:228)</a></td><td>called 46006 times, returned 46006 times</td><td>27.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l172">net_send (src/net.c:172)</a></td><td>called 92012 times, returned 92012 times</td><td>88.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l212">net_send_buf (src/net.c:212)</a></td><td>called 46006 times, returned 46006 times</td><td>83.0%</td></tr> + <tr><td><a href="index.net.c.37012fce13860cefc5963f57e0f36732.html#l159">net_send_part (src/net.c:159)</a></td><td>called 92012 times, returned 92012 times</td><td>33.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l52">numof_apis (src/storage.c:52)</a></td><td>called 18502 times, returned 18502 times</td><td>100.0%</td></tr> + <tr><td><a href="index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html#l33">parse_settings (src/client_main.c:33)</a></td><td>called 9214 times, returned 9214 times</td><td>76.0%</td></tr> + <tr><td><a href="index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html#l30">parse_settings (src/server_main.c:30)</a></td><td>called 35 times, returned 29 times</td><td>76.0%</td></tr> + <tr><td><a href="index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html#l30">parse_settings (src/worker_main.c:30)</a></td><td>called 60 times, returned 54 times</td><td>76.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l84">prepared_stmt_destroy (src/storage_sqlite.c:84)</a></td><td>called 174 times, returned 174 times</td><td>33.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l62">prepared_stmt_init (src/storage_sqlite.c:62)</a></td><td>called 174 times, returned 174 times</td><td>23.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l90">prepared_stmt_lock (src/storage_sqlite.c:90)</a></td><td>called 36775 times, returned 36775 times</td><td>33.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l100">prepared_stmt_unlock (src/storage_sqlite.c:100)</a></td><td>called 36775 times, returned 36775 times</td><td>27.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l61">process_execute (src/process.c:61)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l96">process_execute_and_capture (src/process.c:96)</a></td><td>called 9180 times, returned 9180 times</td><td>43.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l141">process_output_create (src/process.c:141)</a></td><td>called 18360 times, returned 18360 times</td><td>27.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l157">process_output_destroy (src/process.c:157)</a></td><td>called 18360 times, returned 18360 times</td><td>100.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l163">process_output_dump (src/process.c:163)</a></td><td>called 9180 times, returned 9180 times</td><td>82.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l66">readlink_wrapper (src/file.c:66)</a></td><td>called 20 times, returned 20 times</td><td>30.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l75">redirect_and_exec_child (src/process.c:75)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l122">request_create_finished_run (src/protocol.c:122)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l195">request_create_get_runs (src/protocol.c:195)</a></td><td>called 26 times, returned 26 times</td><td>100.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l63">request_create_new_worker (src/protocol.c:63)</a></td><td>called 9234 times, returned 9234 times</td><td>100.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l25">request_create_queue_run (src/protocol.c:25)</a></td><td>called 9180 times, returned 9180 times</td><td>69.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l73">request_create_start_run (src/protocol.c:73)</a></td><td>called 9180 times, returned 9180 times</td><td>68.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l155">request_parse_finished_run (src/protocol.c:155)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l200">request_parse_get_runs (src/protocol.c:200)</a></td><td>called 26 times, returned 26 times</td><td>100.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l68">request_parse_new_worker (src/protocol.c:68)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l47">request_parse_queue_run (src/protocol.c:47)</a></td><td>called 9180 times, returned 9180 times</td><td>78.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l98">request_parse_start_run (src/protocol.c:98)</a></td><td>called 9180 times, returned 9180 times</td><td>75.0%</td></tr> + <tr><td><a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html#l205">response_create_get_runs (src/protocol.c:205)</a></td><td>called 26 times, returned 26 times</td><td>64.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l33">rm_rf (src/file.c:33)</a></td><td>called 9180 times, returned 9180 times</td><td>86.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l80">run_created (src/run_queue.c:80)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l68">run_destroy (src/run_queue.c:68)</a></td><td>called 36720 times, returned 36720 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l115">run_get_id (src/run_queue.c:115)</a></td><td>called 45900 times, returned 45900 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l125">run_get_repo_rev (src/run_queue.c:125)</a></td><td>called 36720 times, returned 36720 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l120">run_get_repo_url (src/run_queue.c:120)</a></td><td>called 64260 times, returned 64260 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l28">run_new (src/run_queue.c:28)</a></td><td>called 36720 times, returned 36720 times</td><td>21.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l189">run_queue_add_first (src/run_queue.c:189)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l194">run_queue_add_last (src/run_queue.c:194)</a></td><td>called 18360 times, returned 18360 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l135">run_queue_create (src/run_queue.c:135)</a></td><td>called 55 times, returned 55 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l140">run_queue_destroy (src/run_queue.c:140)</a></td><td>called 55 times, returned 55 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l184">run_queue_is_empty (src/run_queue.c:184)</a></td><td>called 27431 times, returned 27431 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l199">run_queue_remove_first (src/run_queue.c:199)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l151">run_queue_to_json (src/run_queue.c:151)</a></td><td>called 26 times, returned 26 times</td><td>63.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l75">run_queued (src/run_queue.c:75)</a></td><td>called 18360 times, returned 18360 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l130">run_set_id (src/run_queue.c:130)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html#l85">run_to_json (src/run_queue.c:85)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l164">server_assign_run (src/server.c:164)</a></td><td>called 9180 times, returned 9180 times</td><td>70.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l358">server_create (src/server.c:358)</a></td><td>called 29 times, returned 29 times</td><td>29.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l463">server_destroy (src/server.c:463)</a></td><td>called 29 times, returned 29 times</td><td>42.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l124">server_enqueue_run (src/server.c:124)</a></td><td>called 9180 times, returned 9180 times</td><td>86.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l103">server_enqueue_worker (src/server.c:103)</a></td><td>called 9234 times, returned 9234 times</td><td>86.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l292">server_handle_cmd_finished_run (src/server.c:292)</a></td><td>called 9180 times, returned 9180 times</td><td>55.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l320">server_handle_cmd_get_runs (src/server.c:320)</a></td><td>called 26 times, returned 26 times</td><td>52.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l226">server_handle_cmd_new_worker (src/server.c:226)</a></td><td>called 9234 times, returned 9234 times</td><td>60.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l259">server_handle_cmd_queue_run (src/server.c:259)</a></td><td>called 9180 times, returned 9180 times</td><td>56.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l119">server_has_runs (src/server.c:119)</a></td><td>called 27431 times, returned 27431 times</td><td>100.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l98">server_has_workers (src/server.c:98)</a></td><td>called 27215 times, returned 27215 times</td><td>100.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l480">server_listen_thread (src/server.c:480)</a></td><td>called 29 times, returned 29 times</td><td>85.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l51">server_lock (src/server.c:51)</a></td><td>called 18472 times, returned 18472 times</td><td>33.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l495">server_main (src/server.c:495)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l199">server_main_thread (src/server.c:199)</a></td><td>called 29 times, returned 29 times</td><td>86.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l76">server_notify (src/server.c:76)</a></td><td>called 18443 times, returned 18443 times</td><td>27.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l146">server_ready_for_action (src/server.c:146)</a></td><td>called 27460 times, returned 27460 times</td><td>100.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l81">server_set_stopping (src/server.c:81)</a></td><td>called 29 times, returned 29 times</td><td>86.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l61">server_unlock (src/server.c:61)</a></td><td>called 18472 times, returned 18472 times</td><td>27.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l66">server_wait (src/server.c:66)</a></td><td>called 18251 times, returned 18251 times</td><td>33.0%</td></tr> + <tr><td><a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html#l151">server_wait_for_action (src/server.c:151)</a></td><td>called 9209 times, returned 9209 times</td><td>89.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l43">signal_block_all (src/signal.c:43)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l50">signal_block_sigterms (src/signal.c:50)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l38">signal_set_mask (src/signal.c:38)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l25">signal_set_mask_internal (src/signal.c:25)</a></td><td>called 82943 times, returned 82943 times</td><td>33.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l57">signalfd_create (src/signal.c:57)</a></td><td>called 83 times, returned 83 times</td><td>64.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l79">signalfd_create_sigterms (src/signal.c:79)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l86">signalfd_destroy (src/signal.c:86)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html#l18">sigterms_mask (src/signal.c:18)</a></td><td>called 27703 times, returned 27703 times</td><td>100.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l235">sqlite_bind_blob (src/sqlite.c:235)</a></td><td>called 9180 times, returned 9180 times</td><td>31.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l209">sqlite_bind_int (src/sqlite.c:209)</a></td><td>called 45929 times, returned 45929 times</td><td>31.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l222">sqlite_bind_text (src/sqlite.c:222)</a></td><td>called 27540 times, returned 27540 times</td><td>31.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l75">sqlite_close (src/sqlite.c:75)</a></td><td>called 29 times, returned 29 times</td><td>25.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l179">sqlite_column_blob (src/sqlite.c:179)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l144">sqlite_column_int (src/sqlite.c:144)</a></td><td>called 45929 times, returned 45929 times</td><td>100.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l149">sqlite_column_text (src/sqlite.c:149)</a></td><td>called 18360 times, returned 18360 times</td><td>22.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l45">sqlite_destroy (src/sqlite.c:45)</a></td><td>called 29 times, returned 29 times</td><td>25.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l80">sqlite_exec (src/sqlite.c:80)</a></td><td>called 58 times, returned 58 times</td><td>31.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l248">sqlite_exec_as_transaction (src/sqlite.c:248)</a></td><td>called 29 times, returned 29 times</td><td>38.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l93">sqlite_exec_log_result (src/sqlite.c:93)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l121">sqlite_finalize (src/sqlite.c:121)</a></td><td>called 203 times, returned 203 times</td><td>25.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l273">sqlite_get_user_version (src/sqlite.c:273)</a></td><td>called 29 times, returned 29 times</td><td>40.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l32">sqlite_init (src/sqlite.c:32)</a></td><td>called 29 times, returned 29 times</td><td>31.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l50">sqlite_open (src/sqlite.c:50)</a></td><td>called 29 times, returned 29 times</td><td>31.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l69">sqlite_open_ro (src/sqlite.c:69)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l63">sqlite_open_rw (src/sqlite.c:63)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l102">sqlite_prepare (src/sqlite.c:102)</a></td><td>called 203 times, returned 203 times</td><td>31.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l115">sqlite_reset (src/sqlite.c:115)</a></td><td>called 36775 times, returned 36775 times</td><td>22.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l308">sqlite_set_foreign_keys (src/sqlite.c:308)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html#l126">sqlite_step (src/sqlite.c:126)</a></td><td>called 45984 times, returned 45984 times</td><td>36.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l79">storage_create (src/storage.c:79)</a></td><td>called 29 times, returned 29 times</td><td>75.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l92">storage_destroy (src/storage.c:92)</a></td><td>called 29 times, returned 29 times</td><td>80.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l124">storage_get_run_queue (src/storage.c:124)</a></td><td>called 29 times, returned 29 times</td><td>80.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l116">storage_get_runs (src/storage.c:116)</a></td><td>called 26 times, returned 26 times</td><td>80.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l100">storage_run_create (src/storage.c:100)</a></td><td>called 9180 times, returned 9180 times</td><td>80.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l108">storage_run_finished (src/storage.c:108)</a></td><td>called 9180 times, returned 9180 times</td><td>80.0%</td></tr> + <tr><td><a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html#l71">storage_settings_destroy (src/storage.c:71)</a></td><td>called 29 times, returned 29 times</td><td>80.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l261">storage_sqlite_create (src/storage_sqlite.c:261)</a></td><td>called 29 times, returned 29 times</td><td>48.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l299">storage_sqlite_destroy (src/storage_sqlite.c:299)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l251">storage_sqlite_finalize_statements (src/storage_sqlite.c:251)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l307">storage_sqlite_find_repo (src/storage_sqlite.c:307)</a></td><td>called 9180 times, returned 9180 times</td><td>76.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l526">storage_sqlite_get_run_queue (src/storage_sqlite.c:526)</a></td><td>called 29 times, returned 29 times</td><td>79.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l507">storage_sqlite_get_runs (src/storage_sqlite.c:507)</a></td><td>called 26 times, returned 26 times</td><td>82.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l335">storage_sqlite_insert_repo (src/storage_sqlite.c:335)</a></td><td>called 9180 times, returned 9180 times</td><td>75.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l360">storage_sqlite_insert_run (src/storage_sqlite.c:360)</a></td><td>called 9180 times, returned 9180 times</td><td>57.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l200">storage_sqlite_prepare_statements (src/storage_sqlite.c:200)</a></td><td>called 29 times, returned 29 times</td><td>54.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l444">storage_sqlite_row_to_run (src/storage_sqlite.c:444)</a></td><td>called 9180 times, returned 9180 times</td><td>81.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l477">storage_sqlite_rows_to_runs (src/storage_sqlite.c:477)</a></td><td>called 55 times, returned 55 times</td><td>67.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l397">storage_sqlite_run_create (src/storage_sqlite.c:397)</a></td><td>called 9180 times, returned 9180 times</td><td>75.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l412">storage_sqlite_run_finished (src/storage_sqlite.c:412)</a></td><td>called 9180 times, returned 9180 times</td><td>74.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l27">storage_sqlite_settings_create (src/storage_sqlite.c:27)</a></td><td>called 29 times, returned 29 times</td><td>23.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l51">storage_sqlite_settings_destroy (src/storage_sqlite.c:51)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l185">storage_sqlite_setup (src/storage_sqlite.c:185)</a></td><td>called 29 times, returned 29 times</td><td>75.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l159">storage_sqlite_upgrade (src/storage_sqlite.c:159)</a></td><td>called 29 times, returned 29 times</td><td>47.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l143">storage_sqlite_upgrade_from_to (src/storage_sqlite.c:143)</a></td><td>called 29 times, returned 29 times</td><td>55.0%</td></tr> + <tr><td><a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html#l116">storage_sqlite_upgrade_to (src/storage_sqlite.c:116)</a></td><td>called 29 times, returned 29 times</td><td>38.0%</td></tr> + <tr><td><a href="index.string.c.2a75186e465ffeac1b306a350f4a56f8.html#l17">string_append (src/string.c:17)</a></td><td>called 340226 times, returned 340226 times</td><td>67.0%</td></tr> + <tr><td><a href="index.string.c.2a75186e465ffeac1b306a350f4a56f8.html#l32">string_to_int (src/string.c:32)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l268">tcp_server_accept (src/tcp_server.c:268)</a></td><td>called 27620 times, returned 27620 times</td><td>60.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l216">tcp_server_accept_handler (src/tcp_server.c:216)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l223">tcp_server_create (src/tcp_server.c:223)</a></td><td>called 29 times, returned 29 times</td><td>40.0%</td></tr> + <tr><td><a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html#l261">tcp_server_destroy (src/tcp_server.c:261)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.file.c.0cc24881e570d19e625204519d50254f.html#l19">unlink_cb (src/file.c:19)</a></td><td>called 403663 times, returned 403663 times</td><td>33.0%</td></tr> + <tr><td><a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html#l33">wait_for_child (src/process.c:33)</a></td><td>called 9180 times, returned 9180 times</td><td>36.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l105">worker_create (src/worker.c:105)</a></td><td>called 54 times, returned 54 times</td><td>44.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l20">worker_create (src/worker_queue.c:20)</a></td><td>called 9234 times, returned 9234 times</td><td>27.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l166">worker_destroy (src/worker.c:166)</a></td><td>called 54 times, returned 54 times</td><td>91.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l34">worker_destroy (src/worker_queue.c:34)</a></td><td>called 9234 times, returned 9234 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l178">worker_do_run (src/worker.c:178)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l40">worker_get_fd (src/worker_queue.c:40)</a></td><td>called 36774 times, returned 36774 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l224">worker_get_run (src/worker.c:224)</a></td><td>called 9234 times, returned 9234 times</td><td>77.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l85">worker_handle_cmd_start_run (src/worker.c:85)</a></td><td>called 9180 times, returned 9180 times</td><td>80.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l260">worker_main (src/worker.c:260)</a></td><td>called 54 times, returned 54 times</td><td>83.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l66">worker_queue_add_first (src/worker_queue.c:66)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l71">worker_queue_add_last (src/worker_queue.c:71)</a></td><td>called 9234 times, returned 9234 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l45">worker_queue_create (src/worker_queue.c:45)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l50">worker_queue_destroy (src/worker_queue.c:50)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l61">worker_queue_is_empty (src/worker_queue.c:61)</a></td><td>called 27215 times, returned 27215 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html#l76">worker_queue_remove_first (src/worker_queue.c:76)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l77">worker_set_stopping (src/worker.c:77)</a></td><td>called 54 times, returned 54 times</td><td>100.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l39">worker_settings_copy (src/worker.c:39)</a></td><td>called 54 times, returned 54 times</td><td>21.0%</td></tr> + <tr><td><a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html#l70">worker_settings_destroy (src/worker.c:70)</a></td><td>called 54 times, returned 54 times</td><td>100.0%</td></tr> +</table> + + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html b/coverage/index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html new file mode 100644 index 0000000..2f01a55 --- /dev/null +++ b/coverage/index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html @@ -0,0 +1,1001 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/git.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>39</td> + <td>55</td> + <td class="coverage-low">70.9%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>6</td> + <td>6</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>10</td> + <td>64</td> + <td class="coverage-low">15.6%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l80">libgit_checkout (line 80)</a></td><td>called 9180 times, returned 9180 times</td><td>25.0%</td></tr> + <tr><td><a href="#l40">libgit_clone (line 40)</a></td><td>called 9180 times, returned 9180 times</td><td>29.0%</td></tr> + <tr><td><a href="#l63">libgit_clone_to_tmp (line 63)</a></td><td>called 9180 times, returned 9180 times</td><td>38.0%</td></tr> + <tr><td><a href="#l22">libgit_init (line 22)</a></td><td>called 54 times, returned 54 times</td><td>24.0%</td></tr> + <tr><td><a href="#l75">libgit_repository_free (line 75)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="#l35">libgit_shutdown (line 35)</a></td><td>called 54 times, returned 54 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"git.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><git2.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#define git_log_err(fn) \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> do { \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> const git_error *error = git_error_last(); \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> const char *msg = error && error->message ? error->message : "???"; \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> log_err("%s: %s\n", fn, msg); \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> } while (0)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libgit_init</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">git_libgit2_init</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">git_log_err</span><span class="p">(</span><span class="s">"git_libgit2_init"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">libgit_shutdown</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">git_libgit2_shutdown</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libgit_clone</span><span class="p">(</span><span class="n">git_repository</span><span class="w"> </span><span class="o">**</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dir</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">git_clone_options</span><span class="w"> </span><span class="n">opts</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Cloning git repository from %s to %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">dir</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">git_clone_options_init</span><span class="p">(</span><span class="o">&</span><span class="n">opts</span><span class="p">,</span><span class="w"> </span><span class="n">GIT_CLONE_OPTIONS_VERSION</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">git_log_err</span><span class="p">(</span><span class="s">"git_clone_options_init"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">checkout_opts</span><span class="p">.</span><span class="n">checkout_strategy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GIT_CHECKOUT_NONE</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">git_clone</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">dir</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">git_log_err</span><span class="p">(</span><span class="s">"git_clone"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libgit_clone_to_tmp</span><span class="p">(</span><span class="n">git_repository</span><span class="w"> </span><span class="o">**</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">dir</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"/tmp/git.XXXXXX"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">mkdtemp</span><span class="p">(</span><span class="n">dir</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"mkdtemp"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libgit_clone</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">dir</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">libgit_repository_free</span><span class="p">(</span><span class="n">git_repository</span><span class="w"> </span><span class="o">*</span><span class="n">repo</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">git_repository_free</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libgit_checkout</span><span class="p">(</span><span class="n">git_repository</span><span class="w"> </span><span class="o">*</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">git_checkout_options</span><span class="w"> </span><span class="n">opts</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">git_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Checking out revision %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">git_revparse_single</span><span class="p">(</span><span class="o">&</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">git_log_err</span><span class="p">(</span><span class="s">"git_revparse_single"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">git_checkout_options_init</span><span class="p">(</span><span class="o">&</span><span class="n">opts</span><span class="p">,</span><span class="w"> </span><span class="n">GIT_CHECKOUT_OPTIONS_VERSION</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">git_log_err</span><span class="p">(</span><span class="s">"git_checkout_options_init"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_obj</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">opts</span><span class="p">.</span><span class="n">checkout_strategy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GIT_CHECKOUT_FORCE</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">git_checkout_tree</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">opts</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">git_log_err</span><span class="p">(</span><span class="s">"git_checkout_tree"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_obj</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">git_repository_set_head_detached</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span><span class="w"> </span><span class="n">git_object_id</span><span class="p">(</span><span class="n">obj</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">git_log_err</span><span class="p">(</span><span class="s">"git_repository_set_head_detached"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_obj</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">free_obj</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">git_object_free</span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.html b/coverage/index.html new file mode 100644 index 0000000..023a139 --- /dev/null +++ b/coverage/index.html @@ -0,0 +1,546 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + <tr> + <th scope="row">Coverage:</th> + <td class="legend"> + <span class="coverage-low">low: ≥ 0%</span> + <span class="coverage-medium">medium: ≥ 75.0%</span> + <span class="coverage-high">high: ≥ 90.0%</span> + </td> + </tr> + </table> +</div> + +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>2020</td> + <td>2844</td> + <td class="coverage-low">71.0%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>281</td> + <td>294</td> + <td class="coverage-high">95.6%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>560</td> + <td>1409</td> + <td class="coverage-low">39.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<a href="index.functions.html">List of functions</a> + </nav> + + <main> +<table class="file-list"> + <col/> + <colgroup span="3"/> + <colgroup span="2"/> + <colgroup span="2"/> + + <tr> + <th scope="col">File</th> + <th scope="colgroup" colspan=3>Lines</th> + <th scope="colgroup" colspan=2>Functions</th> + <th scope="colgroup" colspan=2>Branches</th> + </tr> + + + <tr> + <th scope="row"> + <a href="index.base64.c.6cc41135837c80527c8f246c27adf87e.html">base64.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="66.7" title="66.7%">66.7</meter> + </td> + <td class="CoverValue line-coverage coverage-low">66.7%</td> + <td class="CoverValue line-coverage coverage-low">18 / 27</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">2 / 2</td> + <td class="CoverValue branch-coverage coverage-low">25.0%</td> + <td class="CoverValue branch-coverage coverage-low">3 / 12</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html">buf.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="88.9" title="88.9%">88.9</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">88.9%</td> + <td class="CoverValue line-coverage coverage-medium">16 / 18</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">5 / 5</td> + <td class="CoverValue branch-coverage coverage-low">25.0%</td> + <td class="CoverValue branch-coverage coverage-low">1 / 4</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html">ci.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="78.7" title="78.7%">78.7</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">78.7%</td> + <td class="CoverValue line-coverage coverage-medium">37 / 47</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">5 / 5</td> + <td class="CoverValue branch-coverage coverage-low">50.0%</td> + <td class="CoverValue branch-coverage coverage-low">9 / 18</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html">client.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="80.6" title="80.6%">80.6</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">80.6%</td> + <td class="CoverValue line-coverage coverage-medium">50 / 62</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">4 / 4</td> + <td class="CoverValue branch-coverage coverage-low">56.7%</td> + <td class="CoverValue branch-coverage coverage-low">17 / 30</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html">client_main.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="79.1" title="79.1%">79.1</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">79.1%</td> + <td class="CoverValue line-coverage coverage-medium">34 / 43</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">4 / 4</td> + <td class="CoverValue branch-coverage coverage-low">71.4%</td> + <td class="CoverValue branch-coverage coverage-low">10 / 14</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.cmd_line.c.fc55483624faae9ff92546137d095857.html">cmd_line.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="87.5" title="87.5%">87.5</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">87.5%</td> + <td class="CoverValue line-coverage coverage-medium">28 / 32</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">5 / 5</td> + <td class="CoverValue branch-coverage coverage-low">50.0%</td> + <td class="CoverValue branch-coverage coverage-low">7 / 14</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.command.c.d26991ef13eb41283f88bf34125ef986.html">command.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="74.2" title="74.2%">74.2</meter> + </td> + <td class="CoverValue line-coverage coverage-low">74.2%</td> + <td class="CoverValue line-coverage coverage-low">89 / 120</td> + <td class="CoverValue function-coverage coverage-high">91.7%</td> + <td class="CoverValue function-coverage coverage-high">11 / 12</td> + <td class="CoverValue branch-coverage coverage-low">50.0%</td> + <td class="CoverValue branch-coverage coverage-low">33 / 66</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html">event_loop.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="84.7" title="84.7%">84.7</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">84.7%</td> + <td class="CoverValue line-coverage coverage-medium">111 / 131</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">14 / 14</td> + <td class="CoverValue branch-coverage coverage-low">51.3%</td> + <td class="CoverValue branch-coverage coverage-low">39 / 76</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.file.c.0cc24881e570d19e625204519d50254f.html">file.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="66.7" title="66.7%">66.7</meter> + </td> + <td class="CoverValue line-coverage coverage-low">66.7%</td> + <td class="CoverValue line-coverage coverage-low">56 / 84</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">8 / 8</td> + <td class="CoverValue branch-coverage coverage-low">38.5%</td> + <td class="CoverValue branch-coverage coverage-low">20 / 52</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html">git.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="70.9" title="70.9%">70.9</meter> + </td> + <td class="CoverValue line-coverage coverage-low">70.9%</td> + <td class="CoverValue line-coverage coverage-low">39 / 55</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">6 / 6</td> + <td class="CoverValue branch-coverage coverage-low">15.6%</td> + <td class="CoverValue branch-coverage coverage-low">10 / 64</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.json.c.9fe0913c76249e448eec3131d7e8b263.html">json.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="73.2" title="73.2%">73.2</meter> + </td> + <td class="CoverValue line-coverage coverage-low">73.2%</td> + <td class="CoverValue line-coverage coverage-low">112 / 153</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">24 / 24</td> + <td class="CoverValue branch-coverage coverage-low">31.4%</td> + <td class="CoverValue branch-coverage coverage-low">22 / 70</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html">json_rpc.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="65.7" title="65.7%">65.7</meter> + </td> + <td class="CoverValue line-coverage coverage-low">65.7%</td> + <td class="CoverValue line-coverage coverage-low">201 / 306</td> + <td class="CoverValue function-coverage coverage-high">94.4%</td> + <td class="CoverValue function-coverage coverage-high">34 / 36</td> + <td class="CoverValue branch-coverage coverage-low">39.7%</td> + <td class="CoverValue branch-coverage coverage-low">58 / 146</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.log.c.47179e5db7ed3f2db741c99372ba24f3.html">log.c</a> + </th> + <td> + <meter class="coverage-high" min="0" max="100" value="91.7" title="91.7%">91.7</meter> + </td> + <td class="CoverValue line-coverage coverage-high">91.7%</td> + <td class="CoverValue line-coverage coverage-high">22 / 24</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">4 / 4</td> + <td class="CoverValue branch-coverage coverage-low">66.7%</td> + <td class="CoverValue branch-coverage coverage-low">4 / 6</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.net.c.37012fce13860cefc5963f57e0f36732.html">net.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="62.6" title="62.6%">62.6</meter> + </td> + <td class="CoverValue line-coverage coverage-low">62.6%</td> + <td class="CoverValue line-coverage coverage-low">87 / 139</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">9 / 9</td> + <td class="CoverValue branch-coverage coverage-low">32.6%</td> + <td class="CoverValue branch-coverage coverage-low">30 / 92</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html">process.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="48.8" title="48.8%">48.8</meter> + </td> + <td class="CoverValue line-coverage coverage-low">48.8%</td> + <td class="CoverValue line-coverage coverage-low">41 / 84</td> + <td class="CoverValue function-coverage coverage-low">62.5%</td> + <td class="CoverValue function-coverage coverage-low">5 / 8</td> + <td class="CoverValue branch-coverage coverage-low">23.1%</td> + <td class="CoverValue branch-coverage coverage-low">12 / 52</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html">protocol.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="68.7" title="68.7%">68.7</meter> + </td> + <td class="CoverValue line-coverage coverage-low">68.7%</td> + <td class="CoverValue line-coverage coverage-low">90 / 131</td> + <td class="CoverValue function-coverage coverage-high">90.9%</td> + <td class="CoverValue function-coverage coverage-high">10 / 11</td> + <td class="CoverValue branch-coverage coverage-low">50.0%</td> + <td class="CoverValue branch-coverage coverage-low">24 / 48</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html">run_queue.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="73.0" title="73.0%">73.0</meter> + </td> + <td class="CoverValue line-coverage coverage-low">73.0%</td> + <td class="CoverValue line-coverage coverage-low">81 / 111</td> + <td class="CoverValue function-coverage coverage-high">93.8%</td> + <td class="CoverValue function-coverage coverage-high">15 / 16</td> + <td class="CoverValue branch-coverage coverage-low">47.2%</td> + <td class="CoverValue branch-coverage coverage-low">17 / 36</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html">server.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="71.7" title="71.7%">71.7</meter> + </td> + <td class="CoverValue line-coverage coverage-low">71.7%</td> + <td class="CoverValue line-coverage coverage-low">195 / 272</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">21 / 21</td> + <td class="CoverValue branch-coverage coverage-low">41.8%</td> + <td class="CoverValue branch-coverage coverage-low">61 / 146</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html">server_main.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="79.1" title="79.1%">79.1</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">79.1%</td> + <td class="CoverValue line-coverage coverage-medium">34 / 43</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">4 / 4</td> + <td class="CoverValue branch-coverage coverage-low">71.4%</td> + <td class="CoverValue branch-coverage coverage-low">10 / 14</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.signal.c.71d63611c8a63e0778dd598afad76dfd.html">signal.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="81.6" title="81.6%">81.6</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">81.6%</td> + <td class="CoverValue line-coverage coverage-medium">31 / 38</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">8 / 8</td> + <td class="CoverValue branch-coverage coverage-low">50.0%</td> + <td class="CoverValue branch-coverage coverage-low">5 / 10</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html">sqlite.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="62.3" title="62.3%">62.3</meter> + </td> + <td class="CoverValue line-coverage coverage-low">62.3%</td> + <td class="CoverValue line-coverage coverage-low">101 / 162</td> + <td class="CoverValue function-coverage coverage-medium">85.7%</td> + <td class="CoverValue function-coverage coverage-medium">18 / 21</td> + <td class="CoverValue branch-coverage coverage-low">22.1%</td> + <td class="CoverValue branch-coverage coverage-low">21 / 95</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.storage.c.96d197609feea4b630e7b775fb18af81.html">storage.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="75.5" title="75.5%">75.5</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">75.5%</td> + <td class="CoverValue line-coverage coverage-medium">37 / 49</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">9 / 9</td> + <td class="CoverValue branch-coverage coverage-low">45.0%</td> + <td class="CoverValue branch-coverage coverage-low">9 / 20</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html">storage_sqlite.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="72.5" title="72.5%">72.5</meter> + </td> + <td class="CoverValue line-coverage coverage-low">72.5%</td> + <td class="CoverValue line-coverage coverage-low">245 / 338</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">23 / 23</td> + <td class="CoverValue branch-coverage coverage-low">42.3%</td> + <td class="CoverValue branch-coverage coverage-low">66 / 156</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.string.c.2a75186e465ffeac1b306a350f4a56f8.html">string.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="27.3" title="27.3%">27.3</meter> + </td> + <td class="CoverValue line-coverage coverage-low">27.3%</td> + <td class="CoverValue line-coverage coverage-low">6 / 22</td> + <td class="CoverValue function-coverage coverage-low">50.0%</td> + <td class="CoverValue function-coverage coverage-low">1 / 2</td> + <td class="CoverValue branch-coverage coverage-low">18.8%</td> + <td class="CoverValue branch-coverage coverage-low">3 / 16</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html">tcp_server.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="71.3" title="71.3%">71.3</meter> + </td> + <td class="CoverValue line-coverage coverage-low">71.3%</td> + <td class="CoverValue line-coverage coverage-low">87 / 122</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">11 / 11</td> + <td class="CoverValue branch-coverage coverage-low">40.9%</td> + <td class="CoverValue branch-coverage coverage-low">27 / 66</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html">worker.c</a> + </th> + <td> + <meter class="coverage-low" min="0" max="100" value="70.2" title="70.2%">70.2</meter> + </td> + <td class="CoverValue line-coverage coverage-low">70.2%</td> + <td class="CoverValue line-coverage coverage-low">106 / 151</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">9 / 9</td> + <td class="CoverValue branch-coverage coverage-low">43.5%</td> + <td class="CoverValue branch-coverage coverage-low">27 / 62</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html">worker_main.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="79.1" title="79.1%">79.1</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">79.1%</td> + <td class="CoverValue line-coverage coverage-medium">34 / 43</td> + <td class="CoverValue function-coverage coverage-high">100.0%</td> + <td class="CoverValue function-coverage coverage-high">4 / 4</td> + <td class="CoverValue branch-coverage coverage-low">71.4%</td> + <td class="CoverValue branch-coverage coverage-low">10 / 14</td> + </tr> + + + <tr> + <th scope="row"> + <a href="index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html">worker_queue.c</a> + </th> + <td> + <meter class="coverage-medium" min="0" max="100" value="86.5" title="86.5%">86.5</meter> + </td> + <td class="CoverValue line-coverage coverage-medium">86.5%</td> + <td class="CoverValue line-coverage coverage-medium">32 / 37</td> + <td class="CoverValue function-coverage coverage-medium">88.9%</td> + <td class="CoverValue function-coverage coverage-medium">8 / 9</td> + <td class="CoverValue branch-coverage coverage-low">50.0%</td> + <td class="CoverValue branch-coverage coverage-low">5 / 10</td> + </tr> + +</table> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.json.c.9fe0913c76249e448eec3131d7e8b263.html b/coverage/index.json.c.9fe0913c76249e448eec3131d7e8b263.html new file mode 100644 index 0000000..1a4065d --- /dev/null +++ b/coverage/index.json.c.9fe0913c76249e448eec3131d7e8b263.html @@ -0,0 +1,2377 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/json.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>112</td> + <td>153</td> + <td class="coverage-low">73.2%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>24</td> + <td>24</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>22</td> + <td>70</td> + <td class="coverage-low">31.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l291">libjson_append (line 291)</a></td><td>called 9180 times, returned 9180 times</td><td>33.0%</td></tr> + <tr><td><a href="#l65">libjson_clone (line 65)</a></td><td>called 27618 times, returned 27618 times</td><td>78.0%</td></tr> + <tr><td><a href="#l26">libjson_free (line 26)</a></td><td>called 110424 times, returned 110424 times</td><td>100.0%</td></tr> + <tr><td><a href="#l51">libjson_from_string (line 51)</a></td><td>called 46006 times, returned 46006 times</td><td>24.0%</td></tr> + <tr><td><a href="#l149">libjson_get (line 149)</a></td><td>called 385956 times, returned 385956 times</td><td>33.0%</td></tr> + <tr><td><a href="#l176">libjson_get_int (line 176)</a></td><td>called 27540 times, returned 27540 times</td><td>35.0%</td></tr> + <tr><td><a href="#l159">libjson_get_string (line 159)</a></td><td>called 165506 times, returned 165506 times</td><td>47.0%</td></tr> + <tr><td><a href="#l144">libjson_has (line 144)</a></td><td>called 606620 times, returned 606620 times</td><td>100.0%</td></tr> + <tr><td><a href="#l133">libjson_new_array (line 133)</a></td><td>called 26 times, returned 26 times</td><td>33.0%</td></tr> + <tr><td><a href="#l122">libjson_new_object (line 122)</a></td><td>called 110344 times, returned 110344 times</td><td>33.0%</td></tr> + <tr><td><a href="#l101">libjson_recv (line 101)</a></td><td>called 46006 times, returned 46006 times</td><td>85.0%</td></tr> + <tr><td><a href="#l83">libjson_send (line 83)</a></td><td>called 46006 times, returned 46006 times</td><td>82.0%</td></tr> + <tr><td><a href="#l256">libjson_set (line 256)</a></td><td>called 55158 times, returned 55158 times</td><td>100.0%</td></tr> + <tr><td><a href="#l276">libjson_set_const_key (line 276)</a></td><td>called 27618 times, returned 27618 times</td><td>100.0%</td></tr> + <tr><td><a href="#l266">libjson_set_int (line 266)</a></td><td>called 27540 times, returned 27540 times</td><td>100.0%</td></tr> + <tr><td><a href="#l286">libjson_set_int_const_key (line 286)</a></td><td>called 36772 times, returned 36772 times</td><td>100.0%</td></tr> + <tr><td><a href="#l235">libjson_set_int_internal (line 235)</a></td><td>called 64312 times, returned 64312 times</td><td>35.0%</td></tr> + <tr><td><a href="#l200">libjson_set_internal (line 200)</a></td><td>called 321772 times, returned 321772 times</td><td>33.0%</td></tr> + <tr><td><a href="#l261">libjson_set_string (line 261)</a></td><td>called 45900 times, returned 45900 times</td><td>100.0%</td></tr> + <tr><td><a href="#l281">libjson_set_string_const_key (line 281)</a></td><td>called 128784 times, returned 128784 times</td><td>100.0%</td></tr> + <tr><td><a href="#l214">libjson_set_string_internal (line 214)</a></td><td>called 174684 times, returned 174684 times</td><td>35.0%</td></tr> + <tr><td><a href="#l41">libjson_to_string (line 41)</a></td><td>called 46006 times, returned 46006 times</td><td>100.0%</td></tr> + <tr><td><a href="#l31">libjson_to_string_internal (line 31)</a></td><td>called 55212 times, returned 55212 times</td><td>33.0%</td></tr> + <tr><td><a href="#l46">libjson_to_string_pretty (line 46)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"buf.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"net.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><json-c/json_object.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><json-c/json_tokener.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><errno.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdint.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#define libjson_errno(fn) \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> do { \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> log_err("JSON: %s failed\n", fn); \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> } while (0)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110424</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">libjson_free</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110424</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">json_object_put</span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110424</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55212</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">libjson_to_string_internal</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55212</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_to_json_string_ext</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 55212 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">55212</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_object_to_json_string"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55212</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">libjson_to_string</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_to_string_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">JSON_C_TO_STRING_SPACED</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">libjson_to_string_pretty</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_to_string_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">JSON_C_TO_STRING_SPACED</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">JSON_C_TO_STRING_PRETTY</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">libjson_from_string</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="n">json_tokener_error</span><span class="w"> </span><span class="n">error</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_tokener_parse_verbose</span><span class="p">(</span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_tokener_parse_verbose"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON: parsing failed: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">json_tokener_error_desc</span><span class="p">(</span><span class="n">error</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_clone</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">**</span><span class="n">_value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">old_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">old_value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27618 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27618</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">new_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_deep_copy</span><span class="p">(</span><span class="n">old_value</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">new_value</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27618 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27618</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">new_value</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_send</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_to_string</span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">str</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">buf_create_from_string</span><span class="p">(</span><span class="o">&</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">str</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_send_buf</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">buf</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">buf_destroy</span><span class="p">(</span><span class="n">buf</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">libjson_recv</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_recv_buf</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">buf</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_from_string</span><span class="p">((</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">buf_get_data</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 46006 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_buf</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="nl">destroy_buf</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">((</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">buf_get_data</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">buf_destroy</span><span class="p">(</span><span class="n">buf</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110344</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_new_object</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">**</span><span class="n">_obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110344</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_new_object</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 110344 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">110344</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_object_new_object"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110344</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_obj</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">obj</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">110344</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_new_array</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">**</span><span class="n">_arr</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_new_array</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_object_new_array"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">arr</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">606620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_has</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">606620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">json_object_object_get_ex</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">385956</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">**</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 385956 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">385956</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON: key is missing: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">385956</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">json_object_object_get_ex</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">165506</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_get_string</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">_value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">165506</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">165506</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 165506 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">165506</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 165506 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">165506</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">json_object_is_type</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">json_type_string</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON: key is not a string: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">165506</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_get_string</span><span class="p">(</span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">165506</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_get_int</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="o">*</span><span class="n">_value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">json_object_is_type</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">json_type_int</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON: key is not an integer: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">errno</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_get_int64</span><span class="p">(</span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">errno</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON: failed to parse integer from key: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">321772</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">libjson_set_internal</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">flags</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">321772</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">321772</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_object_add_ex</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 321772 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">321772</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_object_object_add_ex"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">321772</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174684</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">libjson_set_string_internal</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">_value</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">flags</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174684</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_new_string</span><span class="p">(</span><span class="n">_value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 174684 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">174684</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_object_new_string"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174684</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 174684 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">174684</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_value</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174684</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_value</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">json_object_put</span><span class="p">(</span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64312</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">libjson_set_int_internal</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">_value</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">flags</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64312</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_new_int64</span><span class="p">(</span><span class="n">_value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 64312 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">64312</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_object_new_int"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64312</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 64312 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">64312</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_value</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64312</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_value</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">json_object_put</span><span class="p">(</span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55158</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_set</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55158</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_set_string</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_string_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l265" href="#l265">265</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l266" href="#l266">266</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">libjson_set_int</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l267" href="#l267">267</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l268" href="#l268">268</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_int_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l269" href="#l269">269</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l270" href="#l270">270</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l271" href="#l271">271</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#ifndef JSON_C_OBJECT_ADD_CONSTANT_KEY</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l272" href="#l272">272</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#define JSON_C_OBJECT_ADD_CONSTANT_KEY JSON_C_OBJECT_KEY_IS_CONSTANT</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l273" href="#l273">273</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#endif</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l274" href="#l274">274</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">json_const_key_flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">JSON_C_OBJECT_ADD_CONSTANT_KEY</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l275" href="#l275">275</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l276" href="#l276">276</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libjson_set_const_key</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l277" href="#l277">277</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l278" href="#l278">278</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">json_const_key_flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l279" href="#l279">279</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l280" href="#l280">280</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l281" href="#l281">281</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">128784</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libjson_set_string_const_key</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l282" href="#l282">282</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l283" href="#l283">283</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">128784</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_string_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">json_const_key_flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l284" href="#l284">284</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l285" href="#l285">285</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l286" href="#l286">286</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36772</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libjson_set_int_const_key</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l287" href="#l287">287</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l288" href="#l288">288</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36772</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_int_internal</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">json_const_key_flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l289" href="#l289">289</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l290" href="#l290">290</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l291" href="#l291">291</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">libjson_append</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">arr</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">elem</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l292" href="#l292">292</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l293" href="#l293">293</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json_object_array_add</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span><span class="w"> </span><span class="n">elem</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l294" href="#l294">294</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l295" href="#l295">295</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_errno</span><span class="p">(</span><span class="s">"json_object_array_add"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l296" href="#l296">296</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l297" href="#l297">297</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l298" href="#l298">298</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l299" href="#l299">299</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l300" href="#l300">300</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html b/coverage/index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html new file mode 100644 index 0000000..3f27373 --- /dev/null +++ b/coverage/index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html @@ -0,0 +1,4327 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/json_rpc.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>201</td> + <td>306</td> + <td class="coverage-low">65.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>34</td> + <td>36</td> + <td class="coverage-high">94.4%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>58</td> + <td>146</td> + <td class="coverage-low">39.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l151">jsonrpc_check_error (line 151)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l73">jsonrpc_check_id (line 73)</a></td><td>called 46006 times, returned 46006 times</td><td>50.0%</td></tr> + <tr><td><a href="#l63">jsonrpc_check_id_type (line 63)</a></td><td>called 18412 times, returned 18412 times</td><td>43.0%</td></tr> + <tr><td><a href="#l97">jsonrpc_check_method (line 97)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="#l120">jsonrpc_check_params (line 120)</a></td><td>called 36800 times, returned 36800 times</td><td>89.0%</td></tr> + <tr><td><a href="#l109">jsonrpc_check_params_type (line 109)</a></td><td>called 27540 times, returned 27540 times</td><td>29.0%</td></tr> + <tr><td><a href="#l179">jsonrpc_check_result_or_error (line 179)</a></td><td>called 9206 times, returned 9206 times</td><td>35.0%</td></tr> + <tr><td><a href="#l34">jsonrpc_check_version (line 34)</a></td><td>called 46006 times, returned 46006 times</td><td>40.0%</td></tr> + <tr><td><a href="#l463">jsonrpc_error_create (line 463)</a></td><td>called 9206 times, returned 9206 times</td><td>65.0%</td></tr> + <tr><td><a href="#l58">jsonrpc_generate_request_id (line 58)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="#l254">jsonrpc_notification_create (line 254)</a></td><td>called 27594 times, returned 27594 times</td><td>100.0%</td></tr> + <tr><td><a href="#l242">jsonrpc_request_create (line 242)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="#l195">jsonrpc_request_create_internal (line 195)</a></td><td>called 36800 times, returned 36800 times</td><td>45.0%</td></tr> + <tr><td><a href="#l329">jsonrpc_request_create_params (line 329)</a></td><td>called 73440 times, returned 73440 times</td><td>76.0%</td></tr> + <tr><td><a href="#l248">jsonrpc_request_destroy (line 248)</a></td><td>called 73600 times, returned 73600 times</td><td>100.0%</td></tr> + <tr><td><a href="#l265">jsonrpc_request_from_json (line 265)</a></td><td>called 36800 times, returned 36800 times</td><td>48.0%</td></tr> + <tr><td><a href="#l318">jsonrpc_request_get_method (line 318)</a></td><td>called 36800 times, returned 36800 times</td><td>83.0%</td></tr> + <tr><td><a href="#l375">jsonrpc_request_get_param_int (line 375)</a></td><td>called 27540 times, returned 27540 times</td><td>83.0%</td></tr> + <tr><td><a href="#l356">jsonrpc_request_get_param_string (line 356)</a></td><td>called 45900 times, returned 45900 times</td><td>83.0%</td></tr> + <tr><td><a href="#l260">jsonrpc_request_is_notification (line 260)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="#l298">jsonrpc_request_recv (line 298)</a></td><td>called 36800 times, returned 36800 times</td><td>35.0%</td></tr> + <tr><td><a href="#l293">jsonrpc_request_send (line 293)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="#l385">jsonrpc_request_set_param_int (line 385)</a></td><td>called 27540 times, returned 27540 times</td><td>80.0%</td></tr> + <tr><td><a href="#l366">jsonrpc_request_set_param_string (line 366)</a></td><td>called 45900 times, returned 45900 times</td><td>80.0%</td></tr> + <tr><td><a href="#l451">jsonrpc_response_create (line 451)</a></td><td>called 18412 times, returned 18412 times</td><td>100.0%</td></tr> + <tr><td><a href="#l398">jsonrpc_response_create_internal (line 398)</a></td><td>called 27618 times, returned 27618 times</td><td>50.0%</td></tr> + <tr><td><a href="#l457">jsonrpc_response_destroy (line 457)</a></td><td>called 36824 times, returned 36824 times</td><td>100.0%</td></tr> + <tr><td><a href="#l497">jsonrpc_response_from_json (line 497)</a></td><td>called 9206 times, returned 9206 times</td><td>45.0%</td></tr> + <tr><td><a href="#l492">jsonrpc_response_is_error (line 492)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="#l527">jsonrpc_response_recv (line 527)</a></td><td>called 9206 times, returned 9206 times</td><td>35.0%</td></tr> + <tr><td><a href="#l522">jsonrpc_response_send (line 522)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="#l393">jsonrpc_response_to_string (line 393)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="#l92">jsonrpc_set_id (line 92)</a></td><td>called 9206 times, returned 9206 times</td><td>100.0%</td></tr> + <tr><td><a href="#l104">jsonrpc_set_method (line 104)</a></td><td>called 36800 times, returned 36800 times</td><td>100.0%</td></tr> + <tr><td><a href="#l135">jsonrpc_set_params (line 135)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l51">jsonrpc_set_version (line 51)</a></td><td>called 64418 times, returned 64418 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json_rpc.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><json-c/json_object.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdatomic.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdint.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"jsonrpc"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"id"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_method</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"method"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"params"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_value_version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"2.0"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_version</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_version</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get_string</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">strcmp</span><span class="p">(</span><span class="n">version</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_value_version</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: invalid '%s' value: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64418</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_set_version</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64418</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_string_const_key</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_version</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_value_version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="kt">_Atomic</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_id_counter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_generate_request_id</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_id_counter</span><span class="o">++</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_id_type</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/4</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 18412 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="takenBranch">✓ Branch 5 taken 18412 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18412</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">json_object_is_type</span><span class="p">(</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">json_type_string</span><span class="p">)</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class="n">json_object_is_type</span><span class="p">(</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">json_type_int</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: key '%s' must be either an integer or a string</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">jsonrpc_key_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_id</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">required</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_id</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 27594 times.</div> + <div class="takenBranch">✓ Branch 2 taken 18412 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27594 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27594</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">required</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27594</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: key is missing: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18412 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18412</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_check_id_type</span><span class="p">(</span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_set_id</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_int_const_key</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_id</span><span class="p">,</span><span class="w"> </span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_method</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_method</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">method</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_get_string</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">method</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_set_method</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">method</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_string_const_key</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_method</span><span class="p">,</span><span class="w"> </span><span class="n">method</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_params_type</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 27540 times.</div> + <div class="notTakenBranch">✗ Branch 3 not taken.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">json_object_is_type</span><span class="p">(</span><span class="n">params</span><span class="p">,</span><span class="w"> </span><span class="n">json_type_object</span><span class="p">)</span><span class="w"> </span><span class="o">&&</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="o">!</span><span class="n">json_object_is_type</span><span class="p">(</span><span class="n">params</span><span class="p">,</span><span class="w"> </span><span class="n">json_type_array</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: key '%s' must be either an object or an array</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">jsonrpc_key_params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_params</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_params</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 9260 times.</div> + <div class="takenBranch">✓ Branch 2 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">))</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9260</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_check_params_type</span><span class="p">(</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_set_params</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_params</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_params_type</span><span class="p">(</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_const_key</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"result"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"error"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"code"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">jsonrpc_key_message</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"message"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_error</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_error</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get_int</span><span class="p">(</span><span class="n">error</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_code</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">code</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: key is missing or not an integer: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_code</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">message</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get_string</span><span class="p">(</span><span class="n">error</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_message</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">message</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: key is missing or not a string: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_message</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_check_result_or_error</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">obj</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key_result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">key_error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_error</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9206 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key_result</span><span class="p">)</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="o">!</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key_error</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: either '%s' or '%s' must be present</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">key_result</span><span class="p">,</span><span class="w"> </span><span class="n">key_error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span><span class="w"> </span><span class="n">key_result</span><span class="p">))</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_check_error</span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_request_create_internal</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">_request</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">method</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">request</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_new_object</span><span class="p">(</span><span class="o">&</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_set_version</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27594 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_set_id</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_set_method</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">method</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">params</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_set_params</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_impl</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="nl">exit</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_request_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">_request</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">method</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_request_create_internal</span><span class="p">(</span><span class="n">_request</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">method</span><span class="p">,</span><span class="w"> </span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">73600</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">jsonrpc_request_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">73600</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">73600</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">73600</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27594</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_notification_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">_request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">method</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27594</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_request_create_internal</span><span class="p">(</span><span class="n">_request</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">method</span><span class="p">,</span><span class="w"> </span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_request_is_notification</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">!</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l265" href="#l265">265</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_request_from_json</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">_request</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">impl</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l266" href="#l266">266</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l267" href="#l267">267</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l268" href="#l268">268</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l269" href="#l269">269</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_version</span><span class="p">(</span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l270" href="#l270">270</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l271" href="#l271">271</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l272" href="#l272">272</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_id</span><span class="p">(</span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l273" href="#l273">273</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l274" href="#l274">274</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l275" href="#l275">275</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_method</span><span class="p">(</span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l276" href="#l276">276</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l277" href="#l277">277</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l278" href="#l278">278</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_params</span><span class="p">(</span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l279" href="#l279">279</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l280" href="#l280">280</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l281" href="#l281">281</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l282" href="#l282">282</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l283" href="#l283">283</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">request</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l284" href="#l284">284</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l285" href="#l285">285</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l286" href="#l286">286</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l287" href="#l287">287</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l288" href="#l288">288</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l289" href="#l289">289</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l290" href="#l290">290</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l291" href="#l291">291</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l292" href="#l292">292</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l293" href="#l293">293</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_request_send</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l294" href="#l294">294</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l295" href="#l295">295</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_send</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l296" href="#l296">296</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l297" href="#l297">297</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l298" href="#l298">298</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">jsonrpc_request_recv</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l299" href="#l299">299</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l300" href="#l300">300</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">impl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_recv</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l301" href="#l301">301</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">impl</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l302" href="#l302">302</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: failed to receive request</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l303" href="#l303">303</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l304" href="#l304">304</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l305" href="#l305">305</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l306" href="#l306">306</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_from_json</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l307" href="#l307">307</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l308" href="#l308">308</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l309" href="#l309">309</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l310" href="#l310">310</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l311" href="#l311">311</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l312" href="#l312">312</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_impl</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l313" href="#l313">313</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l314" href="#l314">314</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l315" href="#l315">315</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l316" href="#l316">316</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l317" href="#l317">317</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l318" href="#l318">318</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">jsonrpc_request_get_method</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l319" href="#l319">319</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l320" href="#l320">320</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">method</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l321" href="#l321">321</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get_string</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_method</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">method</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l322" href="#l322">322</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36800 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36800</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l323" href="#l323">323</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* Should never happen. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l324" href="#l324">324</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l325" href="#l325">325</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l326" href="#l326">326</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36800</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">method</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l327" href="#l327">327</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l328" href="#l328">328</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l329" href="#l329">329</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">73440</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">jsonrpc_request_create_params</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l330" href="#l330">330</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l331" href="#l331">331</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">73440</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l332" href="#l332">332</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">73440</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_key_params</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l333" href="#l333">333</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l334" href="#l334">334</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + <div class="takenBranch">✓ Branch 2 taken 45900 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">73440</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">libjson_has</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l335" href="#l335">335</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l336" href="#l336">336</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l337" href="#l337">337</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_new_object</span><span class="p">(</span><span class="o">&</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l338" href="#l338">338</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l339" href="#l339">339</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l340" href="#l340">340</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l341" href="#l341">341</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l342" href="#l342">342</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l343" href="#l343">343</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l344" href="#l344">344</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l345" href="#l345">345</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l346" href="#l346">346</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">params</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l347" href="#l347">347</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l348" href="#l348">348</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l349" href="#l349">349</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l350" href="#l350">350</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l351" href="#l351">351</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 45900 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">45900</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l352" href="#l352">352</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l353" href="#l353">353</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">params</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l354" href="#l354">354</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l355" href="#l355">355</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l356" href="#l356">356</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_string</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">name</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l357" href="#l357">357</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l358" href="#l358">358</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l359" href="#l359">359</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l360" href="#l360">360</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_params</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l361" href="#l361">361</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 45900 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">45900</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l362" href="#l362">362</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l363" href="#l363">363</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_get_string</span><span class="p">(</span><span class="n">params</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l364" href="#l364">364</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l365" href="#l365">365</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l366" href="#l366">366</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_string</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">name</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l367" href="#l367">367</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l368" href="#l368">368</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l369" href="#l369">369</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_create_params</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l370" href="#l370">370</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 45900 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">45900</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">params</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l371" href="#l371">371</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l372" href="#l372">372</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_string</span><span class="p">(</span><span class="n">params</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l373" href="#l373">373</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l374" href="#l374">374</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l375" href="#l375">375</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_int</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">name</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l376" href="#l376">376</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l377" href="#l377">377</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l378" href="#l378">378</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l379" href="#l379">379</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_get</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_params</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">params</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l380" href="#l380">380</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l381" href="#l381">381</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l382" href="#l382">382</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_get_int</span><span class="p">(</span><span class="n">params</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l383" href="#l383">383</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l384" href="#l384">384</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l385" href="#l385">385</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_int</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l386" href="#l386">386</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l387" href="#l387">387</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">params</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_create_params</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l388" href="#l388">388</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">params</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l389" href="#l389">389</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l390" href="#l390">390</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_set_int</span><span class="p">(</span><span class="n">params</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l391" href="#l391">391</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l392" href="#l392">392</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l393" href="#l393">393</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">jsonrpc_response_to_string</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l394" href="#l394">394</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l395" href="#l395">395</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_to_string_pretty</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l396" href="#l396">396</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l397" href="#l397">397</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l398" href="#l398">398</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_response_create_internal</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">_response</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l399" href="#l399">399</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l400" href="#l400">400</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">error</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l401" href="#l401">401</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l402" href="#l402">402</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l403" href="#l403">403</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l404" href="#l404">404</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l405" href="#l405">405</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27618 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27618</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l406" href="#l406">406</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l407" href="#l407">407</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l408" href="#l408">408</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l409" href="#l409">409</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l410" href="#l410">410</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l411" href="#l411">411</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_new_object</span><span class="p">(</span><span class="o">&</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l412" href="#l412">412</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27618 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27618</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l413" href="#l413">413</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l414" href="#l414">414</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l415" href="#l415">415</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_set_version</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l416" href="#l416">416</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27618 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27618</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l417" href="#l417">417</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l418" href="#l418">418</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l419" href="#l419">419</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l420" href="#l420">420</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_clone</span><span class="p">(</span><span class="n">request</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_id</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l421" href="#l421">421</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27618 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27618</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l422" href="#l422">422</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l423" href="#l423">423</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l424" href="#l424">424</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_id</span><span class="p">,</span><span class="w"> </span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l425" href="#l425">425</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27618 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27618</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l426" href="#l426">426</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l427" href="#l427">427</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l428" href="#l428">428</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l429" href="#l429">429</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l430" href="#l430">430</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9206 times.</div> + <div class="takenBranch">✓ Branch 1 taken 18412 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">error</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l431" href="#l431">431</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_const_key</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_error</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l432" href="#l432">432</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l433" href="#l433">433</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l434" href="#l434">434</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l435" href="#l435">435</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_const_key</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_result</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l436" href="#l436">436</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18412 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18412</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l437" href="#l437">437</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l438" href="#l438">438</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l439" href="#l439">439</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l440" href="#l440">440</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">response</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l441" href="#l441">441</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l442" href="#l442">442</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l443" href="#l443">443</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_impl</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l444" href="#l444">444</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l445" href="#l445">445</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l446" href="#l446">446</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">response</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l447" href="#l447">447</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="nl">exit</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l448" href="#l448">448</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27618</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l449" href="#l449">449</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l450" href="#l450">450</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l451" href="#l451">451</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_response_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l452" href="#l452">452</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l453" href="#l453">453</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l454" href="#l454">454</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18412</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_response_create_internal</span><span class="p">(</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l455" href="#l455">455</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l456" href="#l456">456</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l457" href="#l457">457</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36824</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="n">jsonrpc_response_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l458" href="#l458">458</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l459" href="#l459">459</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36824</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l460" href="#l460">460</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36824</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">response</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l461" href="#l461">461</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36824</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l462" href="#l462">462</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l463" href="#l463">463</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_error_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l464" href="#l464">464</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">code</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">message</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l465" href="#l465">465</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l466" href="#l466">466</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l467" href="#l467">467</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l468" href="#l468">468</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l469" href="#l469">469</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_new_object</span><span class="p">(</span><span class="o">&</span><span class="n">error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l470" href="#l470">470</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l471" href="#l471">471</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l472" href="#l472">472</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l473" href="#l473">473</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_int_const_key</span><span class="p">(</span><span class="n">error</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_code</span><span class="p">,</span><span class="w"> </span><span class="n">code</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l474" href="#l474">474</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l475" href="#l475">475</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l476" href="#l476">476</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_string_const_key</span><span class="p">(</span><span class="n">error</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_message</span><span class="p">,</span><span class="w"> </span><span class="n">message</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l477" href="#l477">477</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l478" href="#l478">478</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l479" href="#l479">479</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l480" href="#l480">480</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_create_internal</span><span class="p">(</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l481" href="#l481">481</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l482" href="#l482">482</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l483" href="#l483">483</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l484" href="#l484">484</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l485" href="#l485">485</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l486" href="#l486">486</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l487" href="#l487">487</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l488" href="#l488">488</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l489" href="#l489">489</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l490" href="#l490">490</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l491" href="#l491">491</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l492" href="#l492">492</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_response_is_error</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l493" href="#l493">493</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l494" href="#l494">494</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_has</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_key_error</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l495" href="#l495">495</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l496" href="#l496">496</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l497" href="#l497">497</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_response_from_json</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">_response</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">impl</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l498" href="#l498">498</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l499" href="#l499">499</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l500" href="#l500">500</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l501" href="#l501">501</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_version</span><span class="p">(</span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l502" href="#l502">502</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l503" href="#l503">503</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l504" href="#l504">504</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_id</span><span class="p">(</span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l505" href="#l505">505</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l506" href="#l506">506</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l507" href="#l507">507</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_check_result_or_error</span><span class="p">(</span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l508" href="#l508">508</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l509" href="#l509">509</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l510" href="#l510">510</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l511" href="#l511">511</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l512" href="#l512">512</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l513" href="#l513">513</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l514" href="#l514">514</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l515" href="#l515">515</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l516" href="#l516">516</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l517" href="#l517">517</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l518" href="#l518">518</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">response</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l519" href="#l519">519</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l520" href="#l520">520</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l521" href="#l521">521</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l522" href="#l522">522</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_response_send</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l523" href="#l523">523</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l524" href="#l524">524</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">libjson_send</span><span class="p">(</span><span class="n">response</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l525" href="#l525">525</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l526" href="#l526">526</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l527" href="#l527">527</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">jsonrpc_response_recv</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l528" href="#l528">528</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l529" href="#l529">529</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">impl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_recv</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l530" href="#l530">530</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">impl</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l531" href="#l531">531</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"JSON-RPC: failed to receive response</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l532" href="#l532">532</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l533" href="#l533">533</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l534" href="#l534">534</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l535" href="#l535">535</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_from_json</span><span class="p">(</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l536" href="#l536">536</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9206 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9206</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l537" href="#l537">537</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l538" href="#l538">538</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l539" href="#l539">539</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l540" href="#l540">540</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l541" href="#l541">541</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_impl</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l542" href="#l542">542</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l543" href="#l543">543</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l544" href="#l544">544</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l545" href="#l545">545</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l546" href="#l546">546</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.log.c.47179e5db7ed3f2db741c99372ba24f3.html b/coverage/index.log.c.47179e5db7ed3f2db741c99372ba24f3.html new file mode 100644 index 0000000..493aec2 --- /dev/null +++ b/coverage/index.log.c.47179e5db7ed3f2db741c99372ba24f3.html @@ -0,0 +1,509 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/log.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>22</td> + <td>24</td> + <td class="coverage-high">91.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>4</td> + <td>4</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>4</td> + <td>6</td> + <td class="coverage-low">66.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l51">log_entry_end (line 51)</a></td><td>called 181825 times, returned 181825 times</td><td>100.0%</td></tr> + <tr><td><a href="#l41">log_entry_start (line 41)</a></td><td>called 740909 times, returned 740909 times</td><td>100.0%</td></tr> + <tr><td><a href="#l36">log_prefix_thread_id (line 36)</a></td><td>called 181825 times, returned 181825 times</td><td>100.0%</td></tr> + <tr><td><a href="#l17">log_prefix_timestamp (line 17)</a></td><td>called 181825 times, returned 181825 times</td><td>70.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/time.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><time.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="kt">int</span><span class="w"> </span><span class="n">g_log_lvl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">LOG_LVL_INFO</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kr">inline</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">log_prefix_timestamp</span><span class="p">(</span><span class="kt">FILE</span><span class="w"> </span><span class="o">*</span><span class="n">dest</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">timeval</span><span class="w"> </span><span class="n">tv</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">tm</span><span class="w"> </span><span class="n">tm</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">buf</span><span class="p">[</span><span class="mi">64</span><span class="p">];</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">used</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 181825 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">181825</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">gettimeofday</span><span class="p">(</span><span class="o">&</span><span class="n">tv</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 181825 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">181825</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">gmtime_r</span><span class="p">(</span><span class="o">&</span><span class="n">tv</span><span class="p">.</span><span class="n">tv_sec</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">tm</span><span class="p">))</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">buf</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">used</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">strftime</span><span class="p">(</span><span class="n">buf</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">used</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">used</span><span class="p">,</span><span class="w"> </span><span class="s">"%F %T"</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">tm</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">msec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">long</span><span class="w"> </span><span class="kt">long</span><span class="p">)</span><span class="n">tv</span><span class="p">.</span><span class="n">tv_usec</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">1000</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">used</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="n">buf</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">used</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">used</span><span class="p">,</span><span class="w"> </span><span class="s">".%03lld | "</span><span class="p">,</span><span class="w"> </span><span class="n">msec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">dest</span><span class="p">,</span><span class="w"> </span><span class="s">"%s"</span><span class="p">,</span><span class="w"> </span><span class="n">buf</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kr">inline</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">log_prefix_thread_id</span><span class="p">(</span><span class="kt">FILE</span><span class="w"> </span><span class="o">*</span><span class="n">dest</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">fprintf</span><span class="p">(</span><span class="n">dest</span><span class="p">,</span><span class="w"> </span><span class="s">"%d | "</span><span class="p">,</span><span class="w"> </span><span class="n">gettid</span><span class="p">());</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">740909</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">log_entry_start</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">lvl</span><span class="p">,</span><span class="w"> </span><span class="kt">FILE</span><span class="w"> </span><span class="o">*</span><span class="n">dest</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 559084 times.</div> + <div class="takenBranch">✓ Branch 1 taken 181825 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">740909</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">lvl</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">g_log_lvl</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">559084</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">flockfile</span><span class="p">(</span><span class="n">dest</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">log_prefix_timestamp</span><span class="p">(</span><span class="n">dest</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">log_prefix_thread_id</span><span class="p">(</span><span class="n">dest</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">log_entry_end</span><span class="p">(</span><span class="kt">FILE</span><span class="w"> </span><span class="o">*</span><span class="n">dest</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">funlockfile</span><span class="p">(</span><span class="n">dest</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">181825</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.net.c.37012fce13860cefc5963f57e0f36732.html b/coverage/index.net.c.37012fce13860cefc5963f57e0f36732.html new file mode 100644 index 0000000..d6e1cb0 --- /dev/null +++ b/coverage/index.net.c.37012fce13860cefc5963f57e0f36732.html @@ -0,0 +1,2152 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/net.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>87</td> + <td>139</td> + <td class="coverage-low">62.6%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>9</td> + <td>9</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>30</td> + <td>92</td> + <td class="coverage-low">32.6%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l95">net_accept (line 95)</a></td><td>called 27620 times, returned 27620 times</td><td>33.0%</td></tr> + <tr><td><a href="#l23">net_bind (line 23)</a></td><td>called 29 times, returned 29 times</td><td>26.0%</td></tr> + <tr><td><a href="#l154">net_close (line 154)</a></td><td>called 64503 times, returned 64503 times</td><td>100.0%</td></tr> + <tr><td><a href="#l109">net_connect (line 109)</a></td><td>called 27620 times, returned 27620 times</td><td>29.0%</td></tr> + <tr><td><a href="#l187">net_recv (line 187)</a></td><td>called 92012 times, returned 92012 times</td><td>35.0%</td></tr> + <tr><td><a href="#l228">net_recv_buf (line 228)</a></td><td>called 46006 times, returned 46006 times</td><td>27.0%</td></tr> + <tr><td><a href="#l172">net_send (line 172)</a></td><td>called 92012 times, returned 92012 times</td><td>88.0%</td></tr> + <tr><td><a href="#l212">net_send_buf (line 212)</a></td><td>called 46006 times, returned 46006 times</td><td>83.0%</td></tr> + <tr><td><a href="#l159">net_send_part (line 159)</a></td><td>called 92012 times, returned 92012 times</td><td>33.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"net.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"buf.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><netdb.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdint.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/socket.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/types.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#define gai_log_errno(ec) log_err("getaddrinfo: %s\n", gai_strerror(ec))</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">net_bind</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">port</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SOCK_CLOEXEC</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">addrinfo</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">addrinfo</span><span class="w"> </span><span class="n">hints</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">socket_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">memset</span><span class="p">(</span><span class="o">&</span><span class="n">hints</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">hints</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">hints</span><span class="p">.</span><span class="n">ai_family</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AF_INET6</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">hints</span><span class="p">.</span><span class="n">ai_socktype</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SOCK_STREAM</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">hints</span><span class="p">.</span><span class="n">ai_flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AI_PASSIVE</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getaddrinfo</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">port</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">hints</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">gai_log_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">result</span><span class="p">;</span><span class="w"> </span><span class="n">it</span><span class="p">;</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_next</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">socket_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">socket</span><span class="p">(</span><span class="n">it</span><span class="o">-></span><span class="n">ai_family</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_socktype</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">flags</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_protocol</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">socket_fd</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"socket"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">continue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">yes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">no</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">it</span><span class="o">-></span><span class="n">ai_family</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">AF_INET6</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">setsockopt</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">,</span><span class="w"> </span><span class="n">IPPROTO_IPV6</span><span class="p">,</span><span class="w"> </span><span class="n">IPV6_V6ONLY</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">no</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">no</span><span class="p">))</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"setsockopt"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_socket</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">setsockopt</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">,</span><span class="w"> </span><span class="n">SOL_SOCKET</span><span class="p">,</span><span class="w"> </span><span class="n">SO_REUSEADDR</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">yes</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">yes</span><span class="p">))</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"setsockopt"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_socket</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">bind</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_addr</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_addrlen</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"bind"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_socket</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="nl">close_socket</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">freeaddrinfo</span><span class="p">(</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">it</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Couldn't bind to port %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">listen</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">,</span><span class="w"> </span><span class="mi">4096</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"listen"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">fail</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">socket_fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">fail</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">net_accept</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SOCK_CLOEXEC</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">accept4</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"accept4"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">net_connect</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">host</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">port</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SOCK_CLOEXEC</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">addrinfo</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">addrinfo</span><span class="w"> </span><span class="n">hints</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">socket_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">memset</span><span class="p">(</span><span class="o">&</span><span class="n">hints</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">hints</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">hints</span><span class="p">.</span><span class="n">ai_family</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">AF_UNSPEC</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">hints</span><span class="p">.</span><span class="n">ai_socktype</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SOCK_STREAM</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getaddrinfo</span><span class="p">(</span><span class="n">host</span><span class="p">,</span><span class="w"> </span><span class="n">port</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">hints</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">gai_log_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">result</span><span class="p">;</span><span class="w"> </span><span class="n">it</span><span class="p">;</span><span class="w"> </span><span class="n">it</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_next</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">socket_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">socket</span><span class="p">(</span><span class="n">it</span><span class="o">-></span><span class="n">ai_family</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_socktype</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">flags</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_protocol</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">socket_fd</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"socket"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">continue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">connect</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_addr</span><span class="p">,</span><span class="w"> </span><span class="n">it</span><span class="o">-></span><span class="n">ai_addrlen</span><span class="p">)</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"connect"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_socket</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="nl">close_socket</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">socket_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">freeaddrinfo</span><span class="p">(</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">it</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Couldn't connect to host %s, port %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">host</span><span class="p">,</span><span class="w"> </span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">socket_fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64503</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">net_close</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64503</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">file_close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64503</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">ssize_t</span><span class="w"> </span><span class="nf">net_send_part</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">size</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MSG_NOSIGNAL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">ssize_t</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">send</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 92012 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">92012</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"send"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">net_send</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">size</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">sent_total</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 92012 times.</div> + <div class="takenBranch">✓ Branch 1 taken 92012 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">184024</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">sent_total</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">ssize_t</span><span class="w"> </span><span class="n">sent_now</span><span class="w"> </span><span class="o">=</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">net_send_part</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">buf</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">sent_total</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">sent_total</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 92012 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">92012</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">sent_now</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sent_total</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">sent_now</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">net_recv</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">size</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">ssize_t</span><span class="w"> </span><span class="n">read_total</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 106813 times.</div> + <div class="takenBranch">✓ Branch 1 taken 92012 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">198825</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">((</span><span class="kt">size_t</span><span class="p">)</span><span class="n">read_total</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">106813</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">ssize_t</span><span class="w"> </span><span class="n">read_now</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">buf</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">read_total</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">read_total</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 106813 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">106813</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">read_now</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 106813 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">106813</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">read_now</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"read"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">106813</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">read_total</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">read_now</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 92012 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">92012</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="kt">size_t</span><span class="p">)</span><span class="n">read_total</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">size</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Received only %zd bytes out of %zu</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">read_total</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">92012</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">net_send_buf</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">*</span><span class="n">buf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">htonl</span><span class="p">(</span><span class="n">buf_get_size</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_send</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">size</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">size</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_send</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">buf_get_data</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span><span class="w"> </span><span class="n">buf_get_size</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">net_recv_buf</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">buf</span><span class="w"> </span><span class="o">**</span><span class="n">buf</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_recv</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">size</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">size</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Couldn't read buffer size</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">fail</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ntohl</span><span class="p">(</span><span class="n">size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="n">size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">data</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">fail</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_recv</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Couldn't read buffer</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_data</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">buf_create</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span><span class="w"> </span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 46006 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">46006</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_data</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">46006</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_data</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">data</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">fail</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html b/coverage/index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html new file mode 100644 index 0000000..5716e10 --- /dev/null +++ b/coverage/index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html @@ -0,0 +1,1360 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/process.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>41</td> + <td>84</td> + <td class="coverage-low">48.8%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>5</td> + <td>8</td> + <td class="coverage-low">62.5%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>12</td> + <td>52</td> + <td class="coverage-low">23.1%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l17">exec_child (line 17)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l61">process_execute (line 61)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l96">process_execute_and_capture (line 96)</a></td><td>called 9180 times, returned 9180 times</td><td>43.0%</td></tr> + <tr><td><a href="#l141">process_output_create (line 141)</a></td><td>called 18360 times, returned 18360 times</td><td>27.0%</td></tr> + <tr><td><a href="#l157">process_output_destroy (line 157)</a></td><td>called 18360 times, returned 18360 times</td><td>100.0%</td></tr> + <tr><td><a href="#l163">process_output_dump (line 163)</a></td><td>called 9180 times, returned 9180 times</td><td>82.0%</td></tr> + <tr><td><a href="#l75">redirect_and_exec_child (line 75)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l33">wait_for_child (line 33)</a></td><td>called 9180 times, returned 9180 times</td><td>36.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"process.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><fcntl.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/wait.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">exec_child</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">args</span><span class="p">[],</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">envp</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">default_envp</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="nb">NULL</span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">envp</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">envp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_envp</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">execvpe</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">args</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">envp</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"execvpe"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">wait_for_child</span><span class="p">(</span><span class="kt">pid_t</span><span class="w"> </span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">ec</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">status</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">pid_t</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">waitpid</span><span class="p">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">status</span><span class="p">,</span><span class="w"> </span><span class="n">__WNOTHREAD</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"waitpid"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* The child process reports the lowest 8 bits of its exit code, which</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * are treated as an unsigned integer on Linux.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * If it was killed by a signal, indicate that by negating the signal</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * number. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9144 times.</div> + <div class="takenBranch">✓ Branch 1 taken 36 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">WIFEXITED</span><span class="p">(</span><span class="n">status</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9144</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">ec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">WEXITSTATUS</span><span class="p">(</span><span class="n">status</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 36 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">WIFSIGNALED</span><span class="p">(</span><span class="n">status</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">ec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="n">WTERMSIG</span><span class="p">(</span><span class="n">status</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"This shouldn't happen: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">status</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="o">*</span><span class="n">ec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">process_execute</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">args</span><span class="p">[],</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">envp</span><span class="p">[],</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">ec</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">pid_t</span><span class="w"> </span><span class="n">child_pid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fork</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">child_pid</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"fork"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">child_pid</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">child_pid</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">exit</span><span class="p">(</span><span class="n">exec_child</span><span class="p">(</span><span class="n">args</span><span class="p">,</span><span class="w"> </span><span class="n">envp</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">wait_for_child</span><span class="p">(</span><span class="n">child_pid</span><span class="p">,</span><span class="w"> </span><span class="n">ec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">redirect_and_exec_child</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">args</span><span class="p">[],</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">envp</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">file_close</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dup2</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">STDOUT_FILENO</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"dup2"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dup2</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">STDERR_FILENO</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"dup2"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">exec_child</span><span class="p">(</span><span class="n">args</span><span class="p">,</span><span class="w"> </span><span class="n">envp</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">process_execute_and_capture</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">args</span><span class="p">[],</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">envp</span><span class="p">[],</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">O_CLOEXEC</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pipe2</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"pipe2"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">pid_t</span><span class="w"> </span><span class="n">child_pid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fork</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">child_pid</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"fork"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_pipe</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">child_pid</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">exit</span><span class="p">(</span><span class="n">redirect_and_exec_child</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">,</span><span class="w"> </span><span class="n">args</span><span class="p">,</span><span class="w"> </span><span class="n">envp</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">file_close</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">file_read</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="w"> </span><span class="o">&</span><span class="n">result</span><span class="o">-></span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">result</span><span class="o">-></span><span class="n">data_size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_pipe</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">wait_for_child</span><span class="p">(</span><span class="n">child_pid</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">result</span><span class="o">-></span><span class="n">ec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_data</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_pipe</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_data</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="o">-></span><span class="n">data</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">close_pipe</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">file_close</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* No errno checking here, we might've already closed the write end. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">close</span><span class="p">(</span><span class="n">pipe_fds</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">process_output_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">**</span><span class="n">_output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18360 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18360</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">output</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">ec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">data_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_output</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">process_output_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">output</span><span class="o">-></span><span class="n">data</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">process_output_dump</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Process exit code: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">ec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Process output: %zu bytes</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">data_size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html b/coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html new file mode 100644 index 0000000..8da718b --- /dev/null +++ b/coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html @@ -0,0 +1,1860 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/protocol.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>90</td> + <td>131</td> + <td class="coverage-low">68.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>10</td> + <td>11</td> + <td class="coverage-high">90.9%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>24</td> + <td>48</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l122">request_create_finished_run (line 122)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + <tr><td><a href="#l195">request_create_get_runs (line 195)</a></td><td>called 26 times, returned 26 times</td><td>100.0%</td></tr> + <tr><td><a href="#l63">request_create_new_worker (line 63)</a></td><td>called 9234 times, returned 9234 times</td><td>100.0%</td></tr> + <tr><td><a href="#l25">request_create_queue_run (line 25)</a></td><td>called 9180 times, returned 9180 times</td><td>69.0%</td></tr> + <tr><td><a href="#l73">request_create_start_run (line 73)</a></td><td>called 9180 times, returned 9180 times</td><td>68.0%</td></tr> + <tr><td><a href="#l155">request_parse_finished_run (line 155)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + <tr><td><a href="#l200">request_parse_get_runs (line 200)</a></td><td>called 26 times, returned 26 times</td><td>100.0%</td></tr> + <tr><td><a href="#l68">request_parse_new_worker (line 68)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l47">request_parse_queue_run (line 47)</a></td><td>called 9180 times, returned 9180 times</td><td>78.0%</td></tr> + <tr><td><a href="#l98">request_parse_start_run (line 98)</a></td><td>called 9180 times, returned 9180 times</td><td>75.0%</td></tr> + <tr><td><a href="#l205">response_create_get_runs (line 205)</a></td><td>called 26 times, returned 26 times</td><td>64.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"protocol.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"base64.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json_rpc.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"process.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"run_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stddef.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdint.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">run_key_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"id"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">run_key_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"url"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">run_key_rev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"rev"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_create_queue_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_create</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_generate_request_id</span><span class="p">(),</span><span class="w"> </span><span class="n">CMD_QUEUE_RUN</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_string</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_url</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_string</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_rev</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_repo_rev</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_request</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_parse_queue_run</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">**</span><span class="n">run</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_string</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_url</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_string</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_rev</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">run_queued</span><span class="p">(</span><span class="n">run</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_create_new_worker</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_notification_create</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">CMD_NEW_WORKER</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_parse_new_worker</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_create_start_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_notification_create</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">CMD_START_RUN</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_int</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_id</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_id</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_string</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_url</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_string</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_rev</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_repo_rev</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_request</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_parse_start_run</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">**</span><span class="n">run</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_int</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_id</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_string</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_url</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_string</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">run_key_rev</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">run_created</span><span class="p">(</span><span class="n">run</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">finished_key_run_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"run_id"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">finished_key_ec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"exit_code"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">finished_key_data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"output"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_create_finished_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">run_id</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_notification_create</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">CMD_FINISHED_RUN</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_int</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">finished_key_run_id</span><span class="p">,</span><span class="w"> </span><span class="n">run_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_int</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">finished_key_ec</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">ec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">b64data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base64_encode</span><span class="p">(</span><span class="n">output</span><span class="o">-></span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">data_size</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">b64data</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_set_param_string</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">finished_key_data</span><span class="p">,</span><span class="w"> </span><span class="n">b64data</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">b64data</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_request</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="o">*</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_parse_finished_run</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">_run_id</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">**</span><span class="n">_output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">process_output_create</span><span class="p">(</span><span class="o">&</span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">run_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_int</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">finished_key_run_id</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">run_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int64_t</span><span class="w"> </span><span class="n">ec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_int</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">finished_key_ec</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">ec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">ec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">ec</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">b64data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_get_param_string</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">finished_key_data</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">b64data</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">base64_decode</span><span class="p">(</span><span class="n">b64data</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">output</span><span class="o">-></span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">output</span><span class="o">-></span><span class="n">data_size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_run_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">run_id</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_output</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_output</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">process_output_destroy</span><span class="p">(</span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_create_get_runs</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">**</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">jsonrpc_request_create</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">jsonrpc_generate_request_id</span><span class="p">(),</span><span class="w"> </span><span class="n">CMD_GET_RUNS</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">request_parse_get_runs</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">response_create_get_runs</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">runs</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">runs_json</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run_queue_to_json</span><span class="p">(</span><span class="n">runs</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">runs_json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_create</span><span class="p">(</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">runs_json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_json</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_json</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">runs_json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html b/coverage/index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html new file mode 100644 index 0000000..fa71be5 --- /dev/null +++ b/coverage/index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html @@ -0,0 +1,1648 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/run_queue.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>81</td> + <td>111</td> + <td class="coverage-low">73.0%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>15</td> + <td>16</td> + <td class="coverage-high">93.8%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>17</td> + <td>36</td> + <td class="coverage-low">47.2%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l80">run_created (line 80)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="#l68">run_destroy (line 68)</a></td><td>called 36720 times, returned 36720 times</td><td>100.0%</td></tr> + <tr><td><a href="#l115">run_get_id (line 115)</a></td><td>called 45900 times, returned 45900 times</td><td>100.0%</td></tr> + <tr><td><a href="#l125">run_get_repo_rev (line 125)</a></td><td>called 36720 times, returned 36720 times</td><td>100.0%</td></tr> + <tr><td><a href="#l120">run_get_repo_url (line 120)</a></td><td>called 64260 times, returned 64260 times</td><td>100.0%</td></tr> + <tr><td><a href="#l28">run_new (line 28)</a></td><td>called 36720 times, returned 36720 times</td><td>21.0%</td></tr> + <tr><td><a href="#l189">run_queue_add_first (line 189)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l194">run_queue_add_last (line 194)</a></td><td>called 18360 times, returned 18360 times</td><td>100.0%</td></tr> + <tr><td><a href="#l135">run_queue_create (line 135)</a></td><td>called 55 times, returned 55 times</td><td>100.0%</td></tr> + <tr><td><a href="#l140">run_queue_destroy (line 140)</a></td><td>called 55 times, returned 55 times</td><td>100.0%</td></tr> + <tr><td><a href="#l184">run_queue_is_empty (line 184)</a></td><td>called 27431 times, returned 27431 times</td><td>100.0%</td></tr> + <tr><td><a href="#l199">run_queue_remove_first (line 199)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="#l151">run_queue_to_json (line 151)</a></td><td>called 26 times, returned 26 times</td><td>63.0%</td></tr> + <tr><td><a href="#l75">run_queued (line 75)</a></td><td>called 18360 times, returned 18360 times</td><td>100.0%</td></tr> + <tr><td><a href="#l130">run_set_id (line 130)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + <tr><td><a href="#l85">run_to_json (line 85)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"run_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><json-c/json_object.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/queue.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_url</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_rev</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">status</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">exit_code</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">SIMPLEQ_ENTRY</span><span class="p">(</span><span class="n">run</span><span class="p">)</span><span class="w"> </span><span class="n">entries</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">run_new</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">**</span><span class="n">_entry</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">_repo_url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">_repo_rev</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="n">run_status</span><span class="w"> </span><span class="n">status</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">exit_code</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36720 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36720</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">entry</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">fail</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strdup</span><span class="p">(</span><span class="n">_repo_url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36720 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36720</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">repo_url</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strdup"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_entry</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_rev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strdup</span><span class="p">(</span><span class="n">_repo_rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36720 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36720</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">repo_rev</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strdup"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_repo_url</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">id</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">repo_url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">repo_url</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">repo_rev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">repo_rev</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">status</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">status</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">exit_code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">exit_code</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_repo_url</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">repo_url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_entry</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">fail</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">run_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">entry</span><span class="o">-></span><span class="n">repo_rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">entry</span><span class="o">-></span><span class="n">repo_url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">run_queued</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">**</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_rev</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">run_new</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="n">repo_rev</span><span class="p">,</span><span class="w"> </span><span class="n">RUN_STATUS_CREATED</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">run_created</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">**</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_rev</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">run_new</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="n">repo_rev</span><span class="p">,</span><span class="w"> </span><span class="n">RUN_STATUS_CREATED</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">run_to_json</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">**</span><span class="n">_json</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">json</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_new_object</span><span class="p">(</span><span class="o">&</span><span class="n">json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_int_const_key</span><span class="p">(</span><span class="n">json</span><span class="p">,</span><span class="w"> </span><span class="s">"id"</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_int_const_key</span><span class="p">(</span><span class="n">json</span><span class="p">,</span><span class="w"> </span><span class="s">"exit_code"</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">exit_code</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_string_const_key</span><span class="p">(</span><span class="n">json</span><span class="p">,</span><span class="w"> </span><span class="s">"repo_url"</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">repo_url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_set_string_const_key</span><span class="p">(</span><span class="n">json</span><span class="p">,</span><span class="w"> </span><span class="s">"repo_rev"</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">repo_rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_json</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">run_get_id</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45900</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">id</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64260</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">run_get_repo_url</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">64260</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">repo_url</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">run_get_repo_rev</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36720</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">repo_rev</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">run_set_id</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">id</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">run_queue_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INIT</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">run_queue_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 1 taken 55 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9235</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">entry1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_NEXT</span><span class="p">(</span><span class="n">entry1</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_destroy</span><span class="p">(</span><span class="n">entry1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry2</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INIT</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">run_queue_to_json</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">**</span><span class="n">_json</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">json</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_new_array</span><span class="p">(</span><span class="o">&</span><span class="n">json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9206</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_FOREACH</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">json_object</span><span class="w"> </span><span class="o">*</span><span class="n">entry_json</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run_to_json</span><span class="p">(</span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">entry_json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libjson_append</span><span class="p">(</span><span class="n">json</span><span class="p">,</span><span class="w"> </span><span class="n">entry_json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">entry_json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_json</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">json</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">libjson_free</span><span class="p">(</span><span class="n">json</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27431</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">run_queue_is_empty</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27431</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">SIMPLEQ_EMPTY</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">run_queue_add_first</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INSERT_HEAD</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">run_queue_add_last</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INSERT_TAIL</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run_queue_remove_first</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 80 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9100 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_REMOVE_HEAD</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entry</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html b/coverage/index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html new file mode 100644 index 0000000..6865d98 --- /dev/null +++ b/coverage/index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html @@ -0,0 +1,3998 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/server.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>195</td> + <td>272</td> + <td class="coverage-low">71.7%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>21</td> + <td>21</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>61</td> + <td>146</td> + <td class="coverage-low">41.8%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l164">server_assign_run (line 164)</a></td><td>called 9180 times, returned 9180 times</td><td>70.0%</td></tr> + <tr><td><a href="#l358">server_create (line 358)</a></td><td>called 29 times, returned 29 times</td><td>29.0%</td></tr> + <tr><td><a href="#l463">server_destroy (line 463)</a></td><td>called 29 times, returned 29 times</td><td>42.0%</td></tr> + <tr><td><a href="#l124">server_enqueue_run (line 124)</a></td><td>called 9180 times, returned 9180 times</td><td>86.0%</td></tr> + <tr><td><a href="#l103">server_enqueue_worker (line 103)</a></td><td>called 9234 times, returned 9234 times</td><td>86.0%</td></tr> + <tr><td><a href="#l292">server_handle_cmd_finished_run (line 292)</a></td><td>called 9180 times, returned 9180 times</td><td>55.0%</td></tr> + <tr><td><a href="#l320">server_handle_cmd_get_runs (line 320)</a></td><td>called 26 times, returned 26 times</td><td>52.0%</td></tr> + <tr><td><a href="#l226">server_handle_cmd_new_worker (line 226)</a></td><td>called 9234 times, returned 9234 times</td><td>60.0%</td></tr> + <tr><td><a href="#l259">server_handle_cmd_queue_run (line 259)</a></td><td>called 9180 times, returned 9180 times</td><td>56.0%</td></tr> + <tr><td><a href="#l119">server_has_runs (line 119)</a></td><td>called 27431 times, returned 27431 times</td><td>100.0%</td></tr> + <tr><td><a href="#l98">server_has_workers (line 98)</a></td><td>called 27215 times, returned 27215 times</td><td>100.0%</td></tr> + <tr><td><a href="#l480">server_listen_thread (line 480)</a></td><td>called 29 times, returned 29 times</td><td>85.0%</td></tr> + <tr><td><a href="#l51">server_lock (line 51)</a></td><td>called 18472 times, returned 18472 times</td><td>33.0%</td></tr> + <tr><td><a href="#l495">server_main (line 495)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l199">server_main_thread (line 199)</a></td><td>called 29 times, returned 29 times</td><td>86.0%</td></tr> + <tr><td><a href="#l76">server_notify (line 76)</a></td><td>called 18443 times, returned 18443 times</td><td>27.0%</td></tr> + <tr><td><a href="#l146">server_ready_for_action (line 146)</a></td><td>called 27460 times, returned 27460 times</td><td>100.0%</td></tr> + <tr><td><a href="#l81">server_set_stopping (line 81)</a></td><td>called 29 times, returned 29 times</td><td>86.0%</td></tr> + <tr><td><a href="#l61">server_unlock (line 61)</a></td><td>called 18472 times, returned 18472 times</td><td>27.0%</td></tr> + <tr><td><a href="#l66">server_wait (line 66)</a></td><td>called 18251 times, returned 18251 times</td><td>33.0%</td></tr> + <tr><td><a href="#l151">server_wait_for_action (line 151)</a></td><td>called 9209 times, returned 9209 times</td><td>89.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"server.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"command.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"event_loop.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"json_rpc.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"net.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"process.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"protocol.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"run_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"signal.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"storage.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"storage_sqlite.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"tcp_server.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"worker_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><poll.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><pthread.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">pthread_mutex_t</span><span class="w"> </span><span class="n">server_mtx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">pthread_cond_t</span><span class="w"> </span><span class="n">server_cv</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">stopping</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="n">cmd_dispatcher</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">event_loop</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">signalfd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker_queue</span><span class="w"> </span><span class="n">worker_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="n">run_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="n">storage</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">pthread_t</span><span class="w"> </span><span class="n">main_thread</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="n">tcp_server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18472</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_lock</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18472</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_mutex_lock</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_mtx</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18472 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18472</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_mutex_lock"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18472</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18472</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">server_unlock</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 18472 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18472</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_mutex_unlock</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_mtx</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_mutex_unlock"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18472</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18251</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_wait</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18251</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_cond_wait</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_cv</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_mtx</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18251 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18251</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_cond_wait"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18251</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18443</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">server_notify</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 18443 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18443</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_cond_signal</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_cv</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_cond_signal"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18443</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_set_stopping</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">revents</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_lock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">stopping</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_notify</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_unlock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27215</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_has_workers</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27215</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">!</span><span class="n">worker_queue_is_empty</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">worker_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_enqueue_worker</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_lock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker_queue_add_last</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">worker_queue</span><span class="p">,</span><span class="w"> </span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Added a new worker %d to the queue</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">worker_get_fd</span><span class="p">(</span><span class="n">worker</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_notify</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_unlock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27431</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_has_runs</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27431</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">!</span><span class="n">run_queue_is_empty</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">run_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_enqueue_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_run_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">run</span><span class="p">),</span><span class="w"> </span><span class="n">run_get_repo_rev</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_set_id</span><span class="p">(</span><span class="n">run</span><span class="p">,</span><span class="w"> </span><span class="n">ret</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_lock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_queue_add_last</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">run_queue</span><span class="p">,</span><span class="w"> </span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Added a new run %d for repository %s to the queue</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_id</span><span class="p">(</span><span class="n">run</span><span class="p">),</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_notify</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_unlock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27460</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_ready_for_action</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">6/6</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27431 times.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + <div class="takenBranch">✓ Branch 3 taken 27215 times.</div> + <div class="takenBranch">✓ Branch 4 taken 216 times.</div> + <div class="takenBranch">✓ Branch 6 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 7 taken 18035 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">27460</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">stopping</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="p">(</span><span class="n">server_has_runs</span><span class="p">(</span><span class="n">server</span><span class="p">)</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">server_has_workers</span><span class="p">(</span><span class="n">server</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9209</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_wait_for_action</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9209</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 18251 times.</div> + <div class="takenBranch">✓ Branch 2 taken 9209 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">27460</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">server_ready_for_action</span><span class="p">(</span><span class="n">server</span><span class="p">))</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18251</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_wait</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18251 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18251</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9209</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">server_assign_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run_queue_remove_first</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">run_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Removed run %d for repository %s from the queue</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_id</span><span class="p">(</span><span class="n">run</span><span class="p">),</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">run</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker_queue_remove_first</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">worker_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Removed worker %d from the queue</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">worker_get_fd</span><span class="p">(</span><span class="n">worker</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">start_request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_create_start_run</span><span class="p">(</span><span class="o">&</span><span class="n">start_request</span><span class="p">,</span><span class="w"> </span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_send</span><span class="p">(</span><span class="n">start_request</span><span class="p">,</span><span class="w"> </span><span class="n">worker_get_fd</span><span class="p">(</span><span class="n">worker</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="n">start_request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">exit</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Failed to assign run for repository %s to worker %d, requeueing</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">run</span><span class="p">),</span><span class="w"> </span><span class="n">worker_get_fd</span><span class="p">(</span><span class="n">worker</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">run_queue_add_first</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">run_queue</span><span class="p">,</span><span class="w"> </span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Assigned run %d for repository %s to worker %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_id</span><span class="p">(</span><span class="n">run</span><span class="p">),</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">run</span><span class="p">),</span><span class="w"> </span><span class="n">worker_get_fd</span><span class="p">(</span><span class="n">worker</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_destroy</span><span class="p">(</span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker_destroy</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="nf">server_main_thread</span><span class="p">(</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_lock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">exit</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9209</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_wait_for_action</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9209 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9209</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">unlock</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 29 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9209</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">stopping</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">unlock</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_assign_run</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="nl">unlock</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_unlock</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="nl">exit</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_handle_cmd_new_worker</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_ctx</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">ctx</span><span class="o">-></span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">file_dup</span><span class="p">(</span><span class="n">ctx</span><span class="o">-></span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker_create</span><span class="p">(</span><span class="o">&</span><span class="n">worker</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_enqueue_worker</span><span class="p">(</span><span class="n">server</span><span class="p">,</span><span class="w"> </span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_worker</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_worker</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">worker_destroy</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">close</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_handle_cmd_queue_run</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_ctx</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">ctx</span><span class="o">-></span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l265" href="#l265">265</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l266" href="#l266">266</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l267" href="#l267">267</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l268" href="#l268">268</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_parse_queue_run</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l269" href="#l269">269</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l270" href="#l270">270</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l271" href="#l271">271</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l272" href="#l272">272</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_response_create</span><span class="p">(</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l273" href="#l273">273</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l274" href="#l274">274</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_run</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l275" href="#l275">275</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l276" href="#l276">276</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_enqueue_run</span><span class="p">(</span><span class="n">server</span><span class="p">,</span><span class="w"> </span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l277" href="#l277">277</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l278" href="#l278">278</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_response</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l279" href="#l279">279</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l280" href="#l280">280</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l281" href="#l281">281</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l282" href="#l282">282</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_response</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l283" href="#l283">283</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">jsonrpc_response_destroy</span><span class="p">(</span><span class="o">*</span><span class="n">response</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l284" href="#l284">284</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="o">*</span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l285" href="#l285">285</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l286" href="#l286">286</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_run</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l287" href="#l287">287</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">run_destroy</span><span class="p">(</span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l288" href="#l288">288</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l289" href="#l289">289</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l290" href="#l290">290</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l291" href="#l291">291</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l292" href="#l292">292</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_handle_cmd_finished_run</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l293" href="#l293">293</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_ctx</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l294" href="#l294">294</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l295" href="#l295">295</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l296" href="#l296">296</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">ctx</span><span class="o">-></span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l297" href="#l297">297</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l298" href="#l298">298</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l299" href="#l299">299</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">run_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l300" href="#l300">300</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l301" href="#l301">301</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l302" href="#l302">302</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_parse_finished_run</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">run_id</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l303" href="#l303">303</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l304" href="#l304">304</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l305" href="#l305">305</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l306" href="#l306">306</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_run_finished</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">run_id</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l307" href="#l307">307</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l308" href="#l308">308</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Failed to mark run %d as finished</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">run_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l309" href="#l309">309</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l310" href="#l310">310</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l311" href="#l311">311</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l312" href="#l312">312</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Marked run %d as finished</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">run_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l313" href="#l313">313</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l314" href="#l314">314</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">free_output</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l315" href="#l315">315</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">process_output_destroy</span><span class="p">(</span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l316" href="#l316">316</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l317" href="#l317">317</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l318" href="#l318">318</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l319" href="#l319">319</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l320" href="#l320">320</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_handle_cmd_get_runs</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l321" href="#l321">321</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_ctx</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l322" href="#l322">322</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l323" href="#l323">323</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l324" href="#l324">324</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">ctx</span><span class="o">-></span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l325" href="#l325">325</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l326" href="#l326">326</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l327" href="#l327">327</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_parse_get_runs</span><span class="p">(</span><span class="n">request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l328" href="#l328">328</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l329" href="#l329">329</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l330" href="#l330">330</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l331" href="#l331">331</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="n">runs</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l332" href="#l332">332</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l333" href="#l333">333</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_get_runs</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">runs</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l334" href="#l334">334</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l335" href="#l335">335</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Failed to fetch runs</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l336" href="#l336">336</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l337" href="#l337">337</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l338" href="#l338">338</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l339" href="#l339">339</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">response_create_get_runs</span><span class="p">(</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">runs</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l340" href="#l340">340</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 26 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l341" href="#l341">341</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_runs</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l342" href="#l342">342</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l343" href="#l343">343</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="nl">destroy_runs</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l344" href="#l344">344</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_queue_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">runs</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l345" href="#l345">345</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l346" href="#l346">346</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l347" href="#l347">347</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l348" href="#l348">348</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l349" href="#l349">349</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="n">commands</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l350" href="#l350">350</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="n">CMD_NEW_WORKER</span><span class="p">,</span><span class="w"> </span><span class="n">server_handle_cmd_new_worker</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l351" href="#l351">351</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="n">CMD_QUEUE_RUN</span><span class="p">,</span><span class="w"> </span><span class="n">server_handle_cmd_queue_run</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l352" href="#l352">352</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="n">CMD_FINISHED_RUN</span><span class="p">,</span><span class="w"> </span><span class="n">server_handle_cmd_finished_run</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l353" href="#l353">353</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="n">CMD_GET_RUNS</span><span class="p">,</span><span class="w"> </span><span class="n">server_handle_cmd_get_runs</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l354" href="#l354">354</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l355" href="#l355">355</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l356" href="#l356">356</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">numof_commands</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">commands</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l357" href="#l357">357</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l358" href="#l358">358</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">server_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">**</span><span class="n">_server</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l359" href="#l359">359</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l360" href="#l360">360</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="n">storage_settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l361" href="#l361">361</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l362" href="#l362">362</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l363" href="#l363">363</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l364" href="#l364">364</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">server</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l365" href="#l365">365</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l366" href="#l366">366</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l367" href="#l367">367</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l368" href="#l368">368</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l369" href="#l369">369</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_mutex_init</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_mtx</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l370" href="#l370">370</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l371" href="#l371">371</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_mutex_init"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l372" href="#l372">372</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l373" href="#l373">373</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l374" href="#l374">374</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l375" href="#l375">375</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_cond_init</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_cv</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l376" href="#l376">376</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l377" href="#l377">377</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_cond_init"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l378" href="#l378">378</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_mtx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l379" href="#l379">379</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l380" href="#l380">380</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l381" href="#l381">381</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">stopping</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l382" href="#l382">382</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l383" href="#l383">383</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">cmd_dispatcher_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">,</span><span class="w"> </span><span class="n">commands</span><span class="p">,</span><span class="w"> </span><span class="n">numof_commands</span><span class="p">,</span><span class="w"> </span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l384" href="#l384">384</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l385" href="#l385">385</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_cv</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l386" href="#l386">386</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l387" href="#l387">387</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l388" href="#l388">388</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l389" href="#l389">389</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_cmd_dispatcher</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l390" href="#l390">390</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l391" href="#l391">391</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">signalfd_create_sigterms</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l392" href="#l392">392</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l393" href="#l393">393</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_event_loop</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l394" href="#l394">394</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">signalfd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l395" href="#l395">395</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l396" href="#l396">396</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_add</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">event_loop</span><span class="p">,</span><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">signalfd</span><span class="p">,</span><span class="w"> </span><span class="n">POLLIN</span><span class="p">,</span><span class="w"> </span><span class="n">server_set_stopping</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l397" href="#l397">397</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l398" href="#l398">398</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l399" href="#l399">399</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_signalfd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l400" href="#l400">400</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l401" href="#l401">401</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker_queue_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">worker_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l402" href="#l402">402</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l403" href="#l403">403</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_settings_create</span><span class="p">(</span><span class="o">&</span><span class="n">storage_settings</span><span class="p">,</span><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">sqlite_path</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l404" href="#l404">404</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l405" href="#l405">405</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_worker_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l406" href="#l406">406</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l407" href="#l407">407</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">storage_settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l408" href="#l408">408</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">storage_settings_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage_settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l409" href="#l409">409</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l410" href="#l410">410</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_worker_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l411" href="#l411">411</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l412" href="#l412">412</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_get_run_queue</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">run_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l413" href="#l413">413</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l414" href="#l414">414</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_storage</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l415" href="#l415">415</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l416" href="#l416">416</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tcp_server_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">tcp_server</span><span class="p">,</span><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">event_loop</span><span class="p">,</span><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l417" href="#l417">417</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">cmd_dispatcher_handle_conn</span><span class="p">,</span><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l418" href="#l418">418</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l419" href="#l419">419</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_run_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l420" href="#l420">420</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l421" href="#l421">421</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">main_thread</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">server_main_thread</span><span class="p">,</span><span class="w"> </span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l422" href="#l422">422</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l423" href="#l423">423</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_create"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l424" href="#l424">424</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_tcp_server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l425" href="#l425">425</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l426" href="#l426">426</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l427" href="#l427">427</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l428" href="#l428">428</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l429" href="#l429">429</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l430" href="#l430">430</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_tcp_server</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l431" href="#l431">431</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">tcp_server_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">tcp_server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l432" href="#l432">432</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l433" href="#l433">433</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_run_queue</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l434" href="#l434">434</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">run_queue_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">run_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l435" href="#l435">435</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l436" href="#l436">436</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_storage</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l437" href="#l437">437</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">storage_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">storage</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l438" href="#l438">438</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l439" href="#l439">439</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_worker_queue</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l440" href="#l440">440</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">worker_queue_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">worker_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l441" href="#l441">441</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l442" href="#l442">442</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">close_signalfd</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l443" href="#l443">443</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">signalfd_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">signalfd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l444" href="#l444">444</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l445" href="#l445">445</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_event_loop</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l446" href="#l446">446</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">event_loop_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l447" href="#l447">447</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l448" href="#l448">448</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_cmd_dispatcher</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l449" href="#l449">449</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">cmd_dispatcher_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l450" href="#l450">450</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l451" href="#l451">451</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_cv</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l452" href="#l452">452</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_cond_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_cv</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_cond_destroy"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l453" href="#l453">453</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l454" href="#l454">454</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_mtx</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l455" href="#l455">455</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_mutex_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_mtx</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_mutex_destroy"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l456" href="#l456">456</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l457" href="#l457">457</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l458" href="#l458">458</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l459" href="#l459">459</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l460" href="#l460">460</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l461" href="#l461">461</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l462" href="#l462">462</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l463" href="#l463">463</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">server_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l464" href="#l464">464</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l465" href="#l465">465</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Shutting down</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l466" href="#l466">466</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l467" href="#l467">467</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_join</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">main_thread</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_join"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l468" href="#l468">468</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">tcp_server_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">tcp_server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l469" href="#l469">469</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">storage_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">storage</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l470" href="#l470">470</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_queue_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">run_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l471" href="#l471">471</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker_queue_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">worker_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l472" href="#l472">472</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">signalfd_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">signalfd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l473" href="#l473">473</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_loop_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l474" href="#l474">474</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">cmd_dispatcher_destroy</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l475" href="#l475">475</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_cond_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_cv</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_cond_destroy"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l476" href="#l476">476</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_mutex_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">server_mtx</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_mutex_destroy"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l477" href="#l477">477</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l478" href="#l478">478</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l479" href="#l479">479</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l480" href="#l480">480</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">server_listen_thread</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l481" href="#l481">481</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l482" href="#l482">482</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l483" href="#l483">483</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l484" href="#l484">484</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 52998 times.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">53027</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">server</span><span class="o">-></span><span class="n">stopping</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l485" href="#l485">485</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 52998 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">52998</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Waiting for new connections</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l486" href="#l486">486</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l487" href="#l487">487</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">52998</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_run</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l488" href="#l488">488</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 52998 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">52998</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l489" href="#l489">489</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l490" href="#l490">490</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l491" href="#l491">491</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l492" href="#l492">492</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l493" href="#l493">493</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l494" href="#l494">494</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l495" href="#l495">495</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">server_main</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l496" href="#l496">496</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l497" href="#l497">497</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">server_listen_thread</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l498" href="#l498">498</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l499" href="#l499">499</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html b/coverage/index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html new file mode 100644 index 0000000..cf40e43 --- /dev/null +++ b/coverage/index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html @@ -0,0 +1,814 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/server_main.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>34</td> + <td>43</td> + <td class="coverage-medium">79.1%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>4</td> + <td>4</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>10</td> + <td>14</td> + <td class="coverage-low">71.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l16">default_settings (line 16)</a></td><td>called 35 times, returned 35 times</td><td>100.0%</td></tr> + <tr><td><a href="#l25">get_usage_string (line 25)</a></td><td>called 4 times, returned 4 times</td><td>100.0%</td></tr> + <tr><td><a href="#l73">main (line 73)</a></td><td>called 35 times, returned 29 times</td><td>79.0%</td></tr> + <tr><td><a href="#l30">parse_settings (line 30)</a></td><td>called 35 times, returned 29 times</td><td>76.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"cmd_line.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"server.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><getopt.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">default_settings</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">.</span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_port</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">.</span><span class="n">sqlite_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_sqlite_path</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">4</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">get_usage_string</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">4</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"[-h|--help] [-V|--version] [-v|--verbose] [-p|--port PORT] [-s|--sqlite PATH]"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">parse_settings</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">opt</span><span class="p">,</span><span class="w"> </span><span class="n">longind</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_settings</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* clang-format off */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">option</span><span class="w"> </span><span class="n">long_options</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"help"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'h'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"version"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'V'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"verbose"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'v'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"port"</span><span class="p">,</span><span class="w"> </span><span class="n">required_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'p'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"sqlite"</span><span class="p">,</span><span class="w"> </span><span class="n">required_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'s'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* clang-format on */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 64 times.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">93</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">((</span><span class="n">opt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getopt_long</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">,</span><span class="w"> </span><span class="s">"hVvp:s:"</span><span class="p">,</span><span class="w"> </span><span class="n">long_options</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">longind</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">-1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">5/6</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 2 times.</div> + <div class="takenBranch">✓ Branch 1 taken 2 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + <div class="takenBranch">✓ Branch 3 taken 29 times.</div> + <div class="takenBranch">✓ Branch 4 taken 29 times.</div> + <div class="takenBranch">✓ Branch 5 taken 2 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">64</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">opt</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'h'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'V'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_version</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'v'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">g_log_lvl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">LOG_LVL_DEBUG</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'p'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">optarg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'s'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">sqlite_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">optarg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">default</span><span class="o">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">35</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">parse_settings</span><span class="p">(</span><span class="o">&</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server_main</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="nl">destroy_server</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server_destroy</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.signal.c.71d63611c8a63e0778dd598afad76dfd.html b/coverage/index.signal.c.71d63611c8a63e0778dd598afad76dfd.html new file mode 100644 index 0000000..e4d0de3 --- /dev/null +++ b/coverage/index.signal.c.71d63611c8a63e0778dd598afad76dfd.html @@ -0,0 +1,765 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/signal.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>31</td> + <td>38</td> + <td class="coverage-medium">81.6%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>8</td> + <td>8</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>5</td> + <td>10</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l43">signal_block_all (line 43)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="#l50">signal_block_sigterms (line 50)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="#l38">signal_set_mask (line 38)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="#l25">signal_set_mask_internal (line 25)</a></td><td>called 82943 times, returned 82943 times</td><td>33.0%</td></tr> + <tr><td><a href="#l57">signalfd_create (line 57)</a></td><td>called 83 times, returned 83 times</td><td>64.0%</td></tr> + <tr><td><a href="#l79">signalfd_create_sigterms (line 79)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="#l86">signalfd_destroy (line 86)</a></td><td>called 83 times, returned 83 times</td><td>100.0%</td></tr> + <tr><td><a href="#l18">sigterms_mask (line 18)</a></td><td>called 27703 times, returned 27703 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"signal.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><signal.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stddef.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/signalfd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sigterm_signals</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="n">SIGINT</span><span class="p">,</span><span class="w"> </span><span class="n">SIGTERM</span><span class="p">,</span><span class="w"> </span><span class="n">SIGQUIT</span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27703</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">sigterms_mask</span><span class="p">(</span><span class="kt">sigset_t</span><span class="w"> </span><span class="o">*</span><span class="n">set</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27703</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sigemptyset</span><span class="p">(</span><span class="n">set</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 83109 times.</div> + <div class="takenBranch">✓ Branch 1 taken 27703 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">110812</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">sigterm_signals</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">sigterm_signals</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83109</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sigaddset</span><span class="p">(</span><span class="n">set</span><span class="p">,</span><span class="w"> </span><span class="n">sigterm_signals</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27703</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">82943</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">signal_set_mask_internal</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="o">*</span><span class="n">new</span><span class="p">,</span><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="o">*</span><span class="n">old</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">82943</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">82943</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_sigmask</span><span class="p">(</span><span class="n">SIG_SETMASK</span><span class="p">,</span><span class="w"> </span><span class="n">new</span><span class="p">,</span><span class="w"> </span><span class="n">old</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 82943 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">82943</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_sigmask"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">82943</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">signal_set_mask</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="o">*</span><span class="n">new</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">signal_set_mask_internal</span><span class="p">(</span><span class="n">new</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">signal_block_all</span><span class="p">(</span><span class="kt">sigset_t</span><span class="w"> </span><span class="o">*</span><span class="n">old</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="n">new</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sigfillset</span><span class="p">(</span><span class="o">&</span><span class="n">new</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">signal_set_mask_internal</span><span class="p">(</span><span class="o">&</span><span class="n">new</span><span class="p">,</span><span class="w"> </span><span class="n">old</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">signal_block_sigterms</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="n">set</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sigterms_mask</span><span class="p">(</span><span class="o">&</span><span class="n">set</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">signal_set_mask_internal</span><span class="p">(</span><span class="o">&</span><span class="n">set</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">signalfd_create</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="o">*</span><span class="n">set</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SFD_CLOEXEC</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="n">old</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">signal_set_mask_internal</span><span class="p">(</span><span class="n">set</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">old</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">83</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">signalfd</span><span class="p">(</span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">set</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 83 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">83</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">restore</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">restore</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">signal_set_mask_internal</span><span class="p">(</span><span class="o">&</span><span class="n">old</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">signalfd_create_sigterms</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="n">set</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sigterms_mask</span><span class="p">(</span><span class="o">&</span><span class="n">set</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">signalfd_create</span><span class="p">(</span><span class="o">&</span><span class="n">set</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">signalfd_destroy</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">file_close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html b/coverage/index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html new file mode 100644 index 0000000..61ac84f --- /dev/null +++ b/coverage/index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html @@ -0,0 +1,2462 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/sqlite.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>101</td> + <td>162</td> + <td class="coverage-low">62.3%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>18</td> + <td>21</td> + <td class="coverage-medium">85.7%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>21</td> + <td>95</td> + <td class="coverage-low">22.1%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l235">sqlite_bind_blob (line 235)</a></td><td>called 9180 times, returned 9180 times</td><td>31.0%</td></tr> + <tr><td><a href="#l209">sqlite_bind_int (line 209)</a></td><td>called 45929 times, returned 45929 times</td><td>31.0%</td></tr> + <tr><td><a href="#l222">sqlite_bind_text (line 222)</a></td><td>called 27540 times, returned 27540 times</td><td>31.0%</td></tr> + <tr><td><a href="#l75">sqlite_close (line 75)</a></td><td>called 29 times, returned 29 times</td><td>25.0%</td></tr> + <tr><td><a href="#l179">sqlite_column_blob (line 179)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l144">sqlite_column_int (line 144)</a></td><td>called 45929 times, returned 45929 times</td><td>100.0%</td></tr> + <tr><td><a href="#l149">sqlite_column_text (line 149)</a></td><td>called 18360 times, returned 18360 times</td><td>22.0%</td></tr> + <tr><td><a href="#l45">sqlite_destroy (line 45)</a></td><td>called 29 times, returned 29 times</td><td>25.0%</td></tr> + <tr><td><a href="#l80">sqlite_exec (line 80)</a></td><td>called 58 times, returned 58 times</td><td>31.0%</td></tr> + <tr><td><a href="#l248">sqlite_exec_as_transaction (line 248)</a></td><td>called 29 times, returned 29 times</td><td>38.0%</td></tr> + <tr><td><a href="#l93">sqlite_exec_log_result (line 93)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l121">sqlite_finalize (line 121)</a></td><td>called 203 times, returned 203 times</td><td>25.0%</td></tr> + <tr><td><a href="#l273">sqlite_get_user_version (line 273)</a></td><td>called 29 times, returned 29 times</td><td>40.0%</td></tr> + <tr><td><a href="#l32">sqlite_init (line 32)</a></td><td>called 29 times, returned 29 times</td><td>31.0%</td></tr> + <tr><td><a href="#l50">sqlite_open (line 50)</a></td><td>called 29 times, returned 29 times</td><td>31.0%</td></tr> + <tr><td><a href="#l69">sqlite_open_ro (line 69)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l63">sqlite_open_rw (line 63)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l102">sqlite_prepare (line 102)</a></td><td>called 203 times, returned 203 times</td><td>31.0%</td></tr> + <tr><td><a href="#l115">sqlite_reset (line 115)</a></td><td>called 36775 times, returned 36775 times</td><td>22.0%</td></tr> + <tr><td><a href="#l308">sqlite_set_foreign_keys (line 308)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l126">sqlite_step (line 126)</a></td><td>called 45984 times, returned 45984 times</td><td>36.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"sqlite.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sqlite3.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stddef.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#define sqlite_errno(var, fn) \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> do { \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> log_err("%s: %s\n", fn, sqlite3_errstr(var)); \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> var = -var; \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> } while (0)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#define sqlite_errno_if(expr, fn) \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> do { \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> int CONCAT(ret, __LINE__) = expr; \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> if (CONCAT(ret, __LINE__)) \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> sqlite_errno(CONCAT(ret, __LINE__), fn); \</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp"> } while (0)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_init</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_initialize</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_initialize"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">sqlite_destroy</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">sqlite_errno_if</span><span class="p">(</span><span class="n">sqlite3_shutdown</span><span class="p">(),</span><span class="w"> </span><span class="s">"sqlite3_shutdown"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_open</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="n">sqlite3</span><span class="w"> </span><span class="o">**</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_open_v2</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_open_v2"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_open_rw</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="n">sqlite3</span><span class="w"> </span><span class="o">**</span><span class="n">db</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SQLITE_OPEN_CREATE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">SQLITE_OPEN_READWRITE</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">sqlite_open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_open_ro</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="n">sqlite3</span><span class="w"> </span><span class="o">**</span><span class="n">db</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SQLITE_OPEN_READONLY</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">sqlite_open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">sqlite_close</span><span class="p">(</span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">sqlite_errno_if</span><span class="p">(</span><span class="n">sqlite3_close</span><span class="p">(</span><span class="n">db</span><span class="p">),</span><span class="w"> </span><span class="s">"sqlite3_close"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">58</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_exec</span><span class="p">(</span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">sqlite3_callback</span><span class="w"> </span><span class="n">callback</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">58</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">58</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_exec</span><span class="p">(</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">callback</span><span class="p">,</span><span class="w"> </span><span class="n">arg</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 58 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">58</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_exec"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">58</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_exec_log_result</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">numof_columns</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">values</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">column_names</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Row:</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">numof_columns</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"</span><span class="se">\t</span><span class="s">%s: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">column_names</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="w"> </span><span class="n">values</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">203</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_prepare</span><span class="p">(</span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">**</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">203</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">203</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_prepare_v2</span><span class="p">(</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 203 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">203</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_prepare_v2"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">203</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36775</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">sqlite_reset</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 36775 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36775</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">sqlite_errno_if</span><span class="p">(</span><span class="n">sqlite3_reset</span><span class="p">(</span><span class="n">stmt</span><span class="p">),</span><span class="w"> </span><span class="s">"sqlite3_reset"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 36775 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36775</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">sqlite_errno_if</span><span class="p">(</span><span class="n">sqlite3_clear_bindings</span><span class="p">(</span><span class="n">stmt</span><span class="p">),</span><span class="w"> </span><span class="s">"sqlite3_clear_bindings"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36775</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">203</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">sqlite_finalize</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 203 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">203</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">sqlite_errno_if</span><span class="p">(</span><span class="n">sqlite3_finalize</span><span class="p">(</span><span class="n">stmt</span><span class="p">),</span><span class="w"> </span><span class="s">"sqlite3_finalize"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">203</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45984</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_step</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45984</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45984</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_step</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/3</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27569 times.</div> + <div class="takenBranch">✓ Branch 1 taken 18415 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">45984</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27569</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="no">SQLITE_ROW</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27569</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18415</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="no">SQLITE_DONE</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18415</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">default</span><span class="o">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_step"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45929</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_column_int</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45929</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">sqlite3_column_int</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_column_text</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">_result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_column_text</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18360 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18360</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_errcode</span><span class="p">(</span><span class="n">sqlite3_db_handle</span><span class="p">(</span><span class="n">stmt</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_column_text"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_column_bytes</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">nb</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="n">nb</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 18360 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18360</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">memcpy</span><span class="p">(</span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">nb</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_column_blob</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">**</span><span class="n">_result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_column_blob</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_errcode</span><span class="p">(</span><span class="n">sqlite3_db_handle</span><span class="p">(</span><span class="n">stmt</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_column_text"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_column_bytes</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">nb</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="n">nb</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">memcpy</span><span class="p">(</span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">nb</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45929</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_bind_int</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45929</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45929</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_bind_int</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 45929 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">45929</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_bind_int"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">45929</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_bind_text</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_bind_text</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">SQLITE_STATIC</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27540 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27540</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_bind_text"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27540</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_bind_blob</span><span class="p">(</span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">nb</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite3_bind_blob64</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="n">nb</span><span class="p">,</span><span class="w"> </span><span class="n">SQLITE_STATIC</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"sqlite3_bind_blob64"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_exec_as_transaction</span><span class="p">(</span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"BEGIN; %s COMMIT;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">nb</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">ret</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">full_stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="n">nb</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">full_stmt</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="n">full_stmt</span><span class="p">,</span><span class="w"> </span><span class="n">nb</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_exec</span><span class="p">(</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l265" href="#l265">265</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l266" href="#l266">266</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l267" href="#l267">267</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l268" href="#l268">268</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">full_stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l269" href="#l269">269</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l270" href="#l270">270</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l271" href="#l271">271</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l272" href="#l272">272</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l273" href="#l273">273</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_get_user_version</span><span class="p">(</span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l274" href="#l274">274</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l275" href="#l275">275</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">sql</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"PRAGMA user_version;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l276" href="#l276">276</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l277" href="#l277">277</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l278" href="#l278">278</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l279" href="#l279">279</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l280" href="#l280">280</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_prepare</span><span class="p">(</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">sql</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l281" href="#l281">281</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l282" href="#l282">282</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l283" href="#l283">283</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_step</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l284" href="#l284">284</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l285" href="#l285">285</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l286" href="#l286">286</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l287" href="#l287">287</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l288" href="#l288">288</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Failed to read database version</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l289" href="#l289">289</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l290" href="#l290">290</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l291" href="#l291">291</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l292" href="#l292">292</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_int</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l293" href="#l293">293</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">result</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l294" href="#l294">294</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Invalid database version: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l295" href="#l295">295</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l296" href="#l296">296</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l297" href="#l297">297</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l298" href="#l298">298</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l299" href="#l299">299</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l300" href="#l300">300</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l301" href="#l301">301</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l302" href="#l302">302</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="nl">finalize</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l303" href="#l303">303</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_finalize</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l304" href="#l304">304</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l305" href="#l305">305</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l306" href="#l306">306</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l307" href="#l307">307</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l308" href="#l308">308</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">sqlite_set_foreign_keys</span><span class="p">(</span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l309" href="#l309">309</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l310" href="#l310">310</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">sql</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"PRAGMA foreign_keys = ON;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l311" href="#l311">311</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">sqlite_exec</span><span class="p">(</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">sql</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l312" href="#l312">312</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l313" href="#l313">313</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.storage.c.96d197609feea4b630e7b775fb18af81.html b/coverage/index.storage.c.96d197609feea4b630e7b775fb18af81.html new file mode 100644 index 0000000..c1807ba --- /dev/null +++ b/coverage/index.storage.c.96d197609feea4b630e7b775fb18af81.html @@ -0,0 +1,1088 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/storage.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>37</td> + <td>49</td> + <td class="coverage-medium">75.5%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>9</td> + <td>9</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>9</td> + <td>20</td> + <td class="coverage-low">45.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l57">get_api (line 57)</a></td><td>called 18502 times, returned 18502 times</td><td>36.0%</td></tr> + <tr><td><a href="#l52">numof_apis (line 52)</a></td><td>called 18502 times, returned 18502 times</td><td>100.0%</td></tr> + <tr><td><a href="#l79">storage_create (line 79)</a></td><td>called 29 times, returned 29 times</td><td>75.0%</td></tr> + <tr><td><a href="#l92">storage_destroy (line 92)</a></td><td>called 29 times, returned 29 times</td><td>80.0%</td></tr> + <tr><td><a href="#l124">storage_get_run_queue (line 124)</a></td><td>called 29 times, returned 29 times</td><td>80.0%</td></tr> + <tr><td><a href="#l116">storage_get_runs (line 116)</a></td><td>called 26 times, returned 26 times</td><td>80.0%</td></tr> + <tr><td><a href="#l100">storage_run_create (line 100)</a></td><td>called 9180 times, returned 9180 times</td><td>80.0%</td></tr> + <tr><td><a href="#l108">storage_run_finished (line 108)</a></td><td>called 9180 times, returned 9180 times</td><td>80.0%</td></tr> + <tr><td><a href="#l71">storage_settings_destroy (line 71)</a></td><td>called 29 times, returned 29 times</td><td>80.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"storage.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"process.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"run_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"storage_sqlite.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stddef.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">typedef</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">storage_settings_destroy_t</span><span class="p">)(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="o">*</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">typedef</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">storage_create_t</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="o">*</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">typedef</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">storage_destroy_t</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">typedef</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">storage_run_create_t</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">typedef</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">storage_run_finished_t</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">repo_id</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">typedef</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">storage_get_runs_t</span><span class="p">)(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">typedef</span><span class="w"> </span><span class="n">storage_get_runs_t</span><span class="w"> </span><span class="n">storage_get_run_queue_t</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_settings_destroy_t</span><span class="w"> </span><span class="n">destroy_settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_create_t</span><span class="w"> </span><span class="n">create</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_destroy_t</span><span class="w"> </span><span class="n">destroy</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_run_create_t</span><span class="w"> </span><span class="n">run_create</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_run_finished_t</span><span class="w"> </span><span class="n">run_finished</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_get_runs_t</span><span class="w"> </span><span class="n">get_runs</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_get_run_queue_t</span><span class="w"> </span><span class="n">get_run_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="n">apis</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_sqlite_settings_destroy</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_sqlite_create</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_sqlite_destroy</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_sqlite_run_create</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_sqlite_run_finished</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_sqlite_get_runs</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">storage_sqlite_get_run_queue</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18502</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="nf">numof_apis</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18502</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">apis</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">apis</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18502</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">get_api</span><span class="p">(</span><span class="k">enum</span><span class="w"> </span><span class="n">storage_type</span><span class="w"> </span><span class="n">type</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">type</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">invalid_type</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 18502 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">18502</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="kt">size_t</span><span class="p">)</span><span class="n">type</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">numof_apis</span><span class="p">())</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">invalid_type</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">18502</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">&</span><span class="n">apis</span><span class="p">[</span><span class="n">type</span><span class="p">];</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">invalid_type</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Unsupported storage type: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="n">storage_settings_destroy</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">api</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_api</span><span class="p">(</span><span class="n">settings</span><span class="o">-></span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">api</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">api</span><span class="o">-></span><span class="n">destroy_settings</span><span class="p">(</span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">storage_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">api</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_api</span><span class="p">(</span><span class="n">settings</span><span class="o">-></span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">api</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">api</span><span class="o">-></span><span class="n">create</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">type</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="n">storage_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">api</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_api</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">api</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">api</span><span class="o">-></span><span class="n">destroy</span><span class="p">(</span><span class="n">storage</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">storage_run_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">api</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_api</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">api</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">api</span><span class="o">-></span><span class="n">run_create</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">storage_run_finished</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">run_id</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">api</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_api</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">api</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">api</span><span class="o">-></span><span class="n">run_finished</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">run_id</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">storage_get_runs</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">api</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_api</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">api</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">api</span><span class="o">-></span><span class="n">get_runs</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">storage_get_run_queue</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_api</span><span class="w"> </span><span class="o">*</span><span class="n">api</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get_api</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">type</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">api</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">api</span><span class="o">-></span><span class="n">get_run_queue</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html b/coverage/index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html new file mode 100644 index 0000000..d7d310f --- /dev/null +++ b/coverage/index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html @@ -0,0 +1,4403 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/storage_sqlite.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>245</td> + <td>338</td> + <td class="coverage-low">72.5%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>23</td> + <td>23</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>66</td> + <td>156</td> + <td class="coverage-low">42.3%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l84">prepared_stmt_destroy (line 84)</a></td><td>called 174 times, returned 174 times</td><td>33.0%</td></tr> + <tr><td><a href="#l62">prepared_stmt_init (line 62)</a></td><td>called 174 times, returned 174 times</td><td>23.0%</td></tr> + <tr><td><a href="#l90">prepared_stmt_lock (line 90)</a></td><td>called 36775 times, returned 36775 times</td><td>33.0%</td></tr> + <tr><td><a href="#l100">prepared_stmt_unlock (line 100)</a></td><td>called 36775 times, returned 36775 times</td><td>27.0%</td></tr> + <tr><td><a href="#l261">storage_sqlite_create (line 261)</a></td><td>called 29 times, returned 29 times</td><td>48.0%</td></tr> + <tr><td><a href="#l299">storage_sqlite_destroy (line 299)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l251">storage_sqlite_finalize_statements (line 251)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l307">storage_sqlite_find_repo (line 307)</a></td><td>called 9180 times, returned 9180 times</td><td>76.0%</td></tr> + <tr><td><a href="#l526">storage_sqlite_get_run_queue (line 526)</a></td><td>called 29 times, returned 29 times</td><td>79.0%</td></tr> + <tr><td><a href="#l507">storage_sqlite_get_runs (line 507)</a></td><td>called 26 times, returned 26 times</td><td>82.0%</td></tr> + <tr><td><a href="#l335">storage_sqlite_insert_repo (line 335)</a></td><td>called 9180 times, returned 9180 times</td><td>75.0%</td></tr> + <tr><td><a href="#l360">storage_sqlite_insert_run (line 360)</a></td><td>called 9180 times, returned 9180 times</td><td>57.0%</td></tr> + <tr><td><a href="#l200">storage_sqlite_prepare_statements (line 200)</a></td><td>called 29 times, returned 29 times</td><td>54.0%</td></tr> + <tr><td><a href="#l444">storage_sqlite_row_to_run (line 444)</a></td><td>called 9180 times, returned 9180 times</td><td>81.0%</td></tr> + <tr><td><a href="#l477">storage_sqlite_rows_to_runs (line 477)</a></td><td>called 55 times, returned 55 times</td><td>67.0%</td></tr> + <tr><td><a href="#l397">storage_sqlite_run_create (line 397)</a></td><td>called 9180 times, returned 9180 times</td><td>75.0%</td></tr> + <tr><td><a href="#l412">storage_sqlite_run_finished (line 412)</a></td><td>called 9180 times, returned 9180 times</td><td>74.0%</td></tr> + <tr><td><a href="#l27">storage_sqlite_settings_create (line 27)</a></td><td>called 29 times, returned 29 times</td><td>23.0%</td></tr> + <tr><td><a href="#l51">storage_sqlite_settings_destroy (line 51)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l185">storage_sqlite_setup (line 185)</a></td><td>called 29 times, returned 29 times</td><td>75.0%</td></tr> + <tr><td><a href="#l159">storage_sqlite_upgrade (line 159)</a></td><td>called 29 times, returned 29 times</td><td>47.0%</td></tr> + <tr><td><a href="#l143">storage_sqlite_upgrade_from_to (line 143)</a></td><td>called 29 times, returned 29 times</td><td>55.0%</td></tr> + <tr><td><a href="#l116">storage_sqlite_upgrade_to (line 116)</a></td><td>called 29 times, returned 29 times</td><td>38.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"storage_sqlite.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"process.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"run_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"sql/sqlite_sql.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"sqlite.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"storage.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sqlite3.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><pthread.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite_settings</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_settings_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">path</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite_settings</span><span class="w"> </span><span class="o">*</span><span class="n">sqlite</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite_settings</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">sqlite</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite</span><span class="o">-></span><span class="n">path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strdup</span><span class="p">(</span><span class="n">path</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">sqlite</span><span class="o">-></span><span class="n">path</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strdup"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">STORAGE_TYPE_SQLITE</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">sqlite</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">sqlite</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">storage_sqlite_settings_destroy</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">settings</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">path</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">settings</span><span class="o">-></span><span class="n">sqlite</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">pthread_mutex_t</span><span class="w"> </span><span class="n">mtx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">impl</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">prepared_stmt_init</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">sql</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_mutex_init</span><span class="p">(</span><span class="o">&</span><span class="n">stmt</span><span class="o">-></span><span class="n">mtx</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 174 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">174</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_mutex_init"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_prepare</span><span class="p">(</span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">sql</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 174 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">174</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_mtx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_mtx</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_mutex_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">stmt</span><span class="o">-></span><span class="n">mtx</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_mutex_destroy"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">prepared_stmt_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 174 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">174</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_mutex_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">stmt</span><span class="o">-></span><span class="n">mtx</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_mutex_destroy"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_finalize</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">174</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36775</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">prepared_stmt_lock</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36775</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_mutex_lock</span><span class="p">(</span><span class="o">&</span><span class="n">stmt</span><span class="o">-></span><span class="n">mtx</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 36775 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36775</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_mutex_unlock"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36775</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36775</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">prepared_stmt_unlock</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 36775 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">36775</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_mutex_unlock</span><span class="p">(</span><span class="o">&</span><span class="n">stmt</span><span class="o">-></span><span class="n">mtx</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_mutex_unlock"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36775</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">sqlite3</span><span class="w"> </span><span class="o">*</span><span class="n">db</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="n">stmt_repo_find</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="n">stmt_repo_insert</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="n">stmt_run_insert</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="n">stmt_run_finished</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="n">stmt_get_runs</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="n">stmt_get_run_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_upgrade_to</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">version</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"%s PRAGMA user_version = %zu;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_schemas</span><span class="p">[</span><span class="n">version</span><span class="p">];</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span><span class="n">script</span><span class="p">,</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">nb</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">ret</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">full_script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="n">nb</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">full_script</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">snprintf</span><span class="p">(</span><span class="n">full_script</span><span class="p">,</span><span class="w"> </span><span class="n">nb</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span><span class="n">script</span><span class="p">,</span><span class="w"> </span><span class="n">version</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_exec_as_transaction</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">full_script</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">full_script</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_upgrade_from_to</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">from</span><span class="p">,</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">to</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 29 times.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">58</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">size_t</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">from</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">to</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Upgrading SQLite database from version %zu to version %zu</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_upgrade_to</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Failed to upgrade to version %zu</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_upgrade</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">current_version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_get_user_version</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">current_version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"SQLite database version: %u</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">current_version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">newest_version</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">sqlite_schemas</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">sqlite_schemas</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Newest database version: %zu</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">newest_version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">current_version</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">newest_version</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Unknown database version: %u</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">current_version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">current_version</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">newest_version</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"SQLite database already at the newest version</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">storage_sqlite_upgrade_from_to</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">current_version</span><span class="p">,</span><span class="w"> </span><span class="n">newest_version</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_setup</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_set_foreign_keys</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_upgrade</span><span class="p">(</span><span class="n">storage</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_prepare_statements</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt_repo_find</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"SELECT id FROM cimple_repos WHERE url = ?;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt_repo_insert</span><span class="w"> </span><span class="o">=</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"INSERT INTO cimple_repos(url) VALUES (?) ON CONFLICT(url) DO NOTHING;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt_run_insert</span><span class="w"> </span><span class="o">=</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"INSERT INTO cimple_runs(status, exit_code, output, repo_id, repo_rev) VALUES (?, -1, x'', ?, ?) RETURNING id;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt_run_finished</span><span class="w"> </span><span class="o">=</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"UPDATE cimple_runs SET status = ?, exit_code = ?, output = ? WHERE id = ?;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt_get_runs</span><span class="w"> </span><span class="o">=</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"SELECT id, status, exit_code, repo_url, repo_rev FROM cimple_runs_view ORDER BY id DESC"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="k">const</span><span class="w"> </span><span class="n">fmt_get_run_queue</span><span class="w"> </span><span class="o">=</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="s">"SELECT id, status, exit_code, repo_url, repo_rev FROM cimple_runs_view WHERE status = ? ORDER BY id;"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_init</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_find</span><span class="p">,</span><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">fmt_repo_find</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_init</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_insert</span><span class="p">,</span><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">fmt_repo_insert</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize_repo_find</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_init</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_run_insert</span><span class="p">,</span><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">fmt_run_insert</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize_repo_insert</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_init</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_run_finished</span><span class="p">,</span><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">fmt_run_finished</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize_run_insert</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_init</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_get_runs</span><span class="p">,</span><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">fmt_get_runs</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize_run_finished</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_init</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_get_run_queue</span><span class="p">,</span><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">db</span><span class="p">,</span><span class="w"> </span><span class="n">fmt_get_run_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">finalize_get_runs</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">finalize_get_runs</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_get_runs</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">finalize_run_finished</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_run_finished</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">finalize_run_insert</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_run_insert</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">finalize_repo_insert</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_insert</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">finalize_repo_find</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_find</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">storage_sqlite_finalize_statements</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_get_run_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_get_runs</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_run_finished</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_run_insert</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_insert</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_find</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l265" href="#l265">265</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Using SQLite database at %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">path</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l266" href="#l266">266</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l267" href="#l267">267</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">sqlite</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l268" href="#l268">268</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">sqlite</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l269" href="#l269">269</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l270" href="#l270">270</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l271" href="#l271">271</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l272" href="#l272">272</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l273" href="#l273">273</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_init</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l274" href="#l274">274</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l275" href="#l275">275</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l276" href="#l276">276</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_open_rw</span><span class="p">(</span><span class="n">settings</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">sqlite</span><span class="o">-></span><span class="n">db</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l277" href="#l277">277</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l278" href="#l278">278</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l279" href="#l279">279</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_setup</span><span class="p">(</span><span class="n">sqlite</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l280" href="#l280">280</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l281" href="#l281">281</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l282" href="#l282">282</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_prepare_statements</span><span class="p">(</span><span class="n">sqlite</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l283" href="#l283">283</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l284" href="#l284">284</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l285" href="#l285">285</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l286" href="#l286">286</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l287" href="#l287">287</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l288" href="#l288">288</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l289" href="#l289">289</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">close</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l290" href="#l290">290</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_close</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">db</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l291" href="#l291">291</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l292" href="#l292">292</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">sqlite_destroy</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l293" href="#l293">293</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l294" href="#l294">294</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">sqlite</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l295" href="#l295">295</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l296" href="#l296">296</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l297" href="#l297">297</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l298" href="#l298">298</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l299" href="#l299">299</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">storage_sqlite_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l300" href="#l300">300</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l301" href="#l301">301</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">storage_sqlite_finalize_statements</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l302" href="#l302">302</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_close</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">db</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l303" href="#l303">303</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_destroy</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l304" href="#l304">304</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l305" href="#l305">305</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l306" href="#l306">306</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l307" href="#l307">307</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_find_repo</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l308" href="#l308">308</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l309" href="#l309">309</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_find</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l310" href="#l310">310</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l311" href="#l311">311</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l312" href="#l312">312</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_lock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l313" href="#l313">313</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l314" href="#l314">314</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l315" href="#l315">315</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_text</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l316" href="#l316">316</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l317" href="#l317">317</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l318" href="#l318">318</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_step</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l319" href="#l319">319</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l320" href="#l320">320</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l321" href="#l321">321</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l322" href="#l322">322</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">ret</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l323" href="#l323">323</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l324" href="#l324">324</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l325" href="#l325">325</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l326" href="#l326">326</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l327" href="#l327">327</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l328" href="#l328">328</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">reset</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l329" href="#l329">329</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_reset</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l330" href="#l330">330</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_unlock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l331" href="#l331">331</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l332" href="#l332">332</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l333" href="#l333">333</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l334" href="#l334">334</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l335" href="#l335">335</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_insert_repo</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l336" href="#l336">336</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l337" href="#l337">337</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_repo_insert</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l338" href="#l338">338</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l339" href="#l339">339</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l340" href="#l340">340</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_lock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l341" href="#l341">341</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l342" href="#l342">342</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l343" href="#l343">343</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_text</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l344" href="#l344">344</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l345" href="#l345">345</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l346" href="#l346">346</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_step</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l347" href="#l347">347</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l348" href="#l348">348</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l349" href="#l349">349</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l350" href="#l350">350</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">reset</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l351" href="#l351">351</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_reset</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l352" href="#l352">352</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_unlock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l353" href="#l353">353</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l354" href="#l354">354</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l355" href="#l355">355</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l356" href="#l356">356</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l357" href="#l357">357</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">storage_sqlite_find_repo</span><span class="p">(</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l358" href="#l358">358</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l359" href="#l359">359</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l360" href="#l360">360</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_insert_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage_sqlite</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">repo_id</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l361" href="#l361">361</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l362" href="#l362">362</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">stmt_run_insert</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l363" href="#l363">363</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l364" href="#l364">364</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l365" href="#l365">365</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_lock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l366" href="#l366">366</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l367" href="#l367">367</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l368" href="#l368">368</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">RUN_STATUS_CREATED</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l369" href="#l369">369</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l370" href="#l370">370</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l371" href="#l371">371</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">repo_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l372" href="#l372">372</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l373" href="#l373">373</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l374" href="#l374">374</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_text</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l375" href="#l375">375</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l376" href="#l376">376</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l377" href="#l377">377</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_step</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l378" href="#l378">378</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l379" href="#l379">379</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l380" href="#l380">380</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l381" href="#l381">381</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l382" href="#l382">382</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l383" href="#l383">383</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Failed to insert a run</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l384" href="#l384">384</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l385" href="#l385">385</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l386" href="#l386">386</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l387" href="#l387">387</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l388" href="#l388">388</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l389" href="#l389">389</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l390" href="#l390">390</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">reset</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l391" href="#l391">391</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_reset</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l392" href="#l392">392</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_unlock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l393" href="#l393">393</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l394" href="#l394">394</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l395" href="#l395">395</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l396" href="#l396">396</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l397" href="#l397">397</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_run_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">repo_url</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l398" href="#l398">398</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l399" href="#l399">399</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l400" href="#l400">400</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l401" href="#l401">401</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_insert_repo</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="p">,</span><span class="w"> </span><span class="n">repo_url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l402" href="#l402">402</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l403" href="#l403">403</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l404" href="#l404">404</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l405" href="#l405">405</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_insert_run</span><span class="p">(</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="p">,</span><span class="w"> </span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l406" href="#l406">406</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l407" href="#l407">407</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l408" href="#l408">408</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l409" href="#l409">409</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l410" href="#l410">410</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l411" href="#l411">411</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l412" href="#l412">412</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_run_finished</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">run_id</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l413" href="#l413">413</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l414" href="#l414">414</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l415" href="#l415">415</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">stmt_run_finished</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l416" href="#l416">416</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l417" href="#l417">417</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l418" href="#l418">418</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_lock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l419" href="#l419">419</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l420" href="#l420">420</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l421" href="#l421">421</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">RUN_STATUS_FINISHED</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l422" href="#l422">422</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l423" href="#l423">423</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l424" href="#l424">424</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">ec</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l425" href="#l425">425</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l426" href="#l426">426</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l427" href="#l427">427</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_blob</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">data</span><span class="p">,</span><span class="w"> </span><span class="n">output</span><span class="o">-></span><span class="n">data_size</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l428" href="#l428">428</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l429" href="#l429">429</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l430" href="#l430">430</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="n">run_id</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l431" href="#l431">431</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l432" href="#l432">432</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l433" href="#l433">433</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_step</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l434" href="#l434">434</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l435" href="#l435">435</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l436" href="#l436">436</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l437" href="#l437">437</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">reset</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l438" href="#l438">438</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_reset</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l439" href="#l439">439</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_unlock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l440" href="#l440">440</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l441" href="#l441">441</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l442" href="#l442">442</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l443" href="#l443">443</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l444" href="#l444">444</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_row_to_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">**</span><span class="n">run</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l445" href="#l445">445</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l446" href="#l446">446</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l447" href="#l447">447</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l448" href="#l448">448</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_int</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l449" href="#l449">449</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">status</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_int</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l450" href="#l450">450</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">exit_code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_int</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l451" href="#l451">451</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l452" href="#l452">452</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l453" href="#l453">453</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_text</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l454" href="#l454">454</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l455" href="#l455">455</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l456" href="#l456">456</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l457" href="#l457">457</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">rev</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l458" href="#l458">458</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_column_text</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l459" href="#l459">459</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l460" href="#l460">460</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_url</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l461" href="#l461">461</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l462" href="#l462">462</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run_new</span><span class="p">(</span><span class="n">run</span><span class="p">,</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">,</span><span class="w"> </span><span class="n">rev</span><span class="p">,</span><span class="w"> </span><span class="n">status</span><span class="p">,</span><span class="w"> </span><span class="n">exit_code</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l463" href="#l463">463</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l464" href="#l464">464</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_rev</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l465" href="#l465">465</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l466" href="#l466">466</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Adding a run %d for repository %s to the queue</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l467" href="#l467">467</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l468" href="#l468">468</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">free_rev</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l469" href="#l469">469</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">rev</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l470" href="#l470">470</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l471" href="#l471">471</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">free_url</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l472" href="#l472">472</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">url</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l473" href="#l473">473</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l474" href="#l474">474</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l475" href="#l475">475</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l476" href="#l476">476</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l477" href="#l477">477</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_rows_to_runs</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">sqlite3_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l478" href="#l478">478</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l479" href="#l479">479</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l480" href="#l480">480</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l481" href="#l481">481</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_queue_create</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l482" href="#l482">482</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l483" href="#l483">483</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l484" href="#l484">484</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9235</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_step</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l485" href="#l485">485</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 55 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9235</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">ret</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l486" href="#l486">486</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l487" href="#l487">487</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l488" href="#l488">488</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">run_queue_destroy</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l489" href="#l489">489</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l490" href="#l490">490</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l491" href="#l491">491</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l492" href="#l492">492</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_row_to_run</span><span class="p">(</span><span class="n">stmt</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l493" href="#l493">493</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l494" href="#l494">494</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">run_queue_destroy</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l495" href="#l495">495</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l496" href="#l496">496</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_queue_add_last</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l497" href="#l497">497</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l498" href="#l498">498</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l499" href="#l499">499</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">55</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l500" href="#l500">500</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l501" href="#l501">501</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">run_queue_destroy</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l502" href="#l502">502</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">run_queue_destroy</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l503" href="#l503">503</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l504" href="#l504">504</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l505" href="#l505">505</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l506" href="#l506">506</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l507" href="#l507">507</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_get_runs</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l508" href="#l508">508</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l509" href="#l509">509</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">stmt_get_runs</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l510" href="#l510">510</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l511" href="#l511">511</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l512" href="#l512">512</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_lock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l513" href="#l513">513</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 26 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l514" href="#l514">514</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l515" href="#l515">515</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_rows_to_runs</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l516" href="#l516">516</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 26 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">26</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l517" href="#l517">517</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l518" href="#l518">518</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l519" href="#l519">519</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="nl">reset</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l520" href="#l520">520</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_reset</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l521" href="#l521">521</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_unlock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l522" href="#l522">522</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l523" href="#l523">523</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">26</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l524" href="#l524">524</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l525" href="#l525">525</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l526" href="#l526">526</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">storage_sqlite_get_run_queue</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">storage</span><span class="w"> </span><span class="o">*</span><span class="n">storage</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l527" href="#l527">527</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l528" href="#l528">528</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">prepared_stmt</span><span class="w"> </span><span class="o">*</span><span class="n">stmt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">storage</span><span class="o">-></span><span class="n">sqlite</span><span class="o">-></span><span class="n">stmt_get_run_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l529" href="#l529">529</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l530" href="#l530">530</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l531" href="#l531">531</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">prepared_stmt_lock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l532" href="#l532">532</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l533" href="#l533">533</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l534" href="#l534">534</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sqlite_bind_int</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">RUN_STATUS_CREATED</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l535" href="#l535">535</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l536" href="#l536">536</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l537" href="#l537">537</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage_sqlite_rows_to_runs</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">,</span><span class="w"> </span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l538" href="#l538">538</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 29 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l539" href="#l539">539</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">reset</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l540" href="#l540">540</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l541" href="#l541">541</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="nl">reset</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l542" href="#l542">542</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">sqlite_reset</span><span class="p">(</span><span class="n">stmt</span><span class="o">-></span><span class="n">impl</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l543" href="#l543">543</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">prepared_stmt_unlock</span><span class="p">(</span><span class="n">stmt</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l544" href="#l544">544</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l545" href="#l545">545</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l546" href="#l546">546</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l547" href="#l547">547</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.string.c.2a75186e465ffeac1b306a350f4a56f8.html b/coverage/index.string.c.2a75186e465ffeac1b306a350f4a56f8.html new file mode 100644 index 0000000..f6108b7 --- /dev/null +++ b/coverage/index.string.c.2a75186e465ffeac1b306a350f4a56f8.html @@ -0,0 +1,486 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/string.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>6</td> + <td>22</td> + <td class="coverage-low">27.3%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>1</td> + <td>2</td> + <td class="coverage-low">50.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>3</td> + <td>16</td> + <td class="coverage-low">18.8%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l17">string_append (line 17)</a></td><td>called 340226 times, returned 340226 times</td><td>67.0%</td></tr> + <tr><td><a href="#l32">string_to_int (line 32)</a></td><td>not called</td><td>0.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"string.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><errno.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/* glibc calls this stpecpy; it's not provided by glibc; however, it does</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * provide a possible implementation in string_copying(7), which I copied from. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="nf">string_append</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dst</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">end</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">dst</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 340226 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dst</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">end</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">end</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">memccpy</span><span class="p">(</span><span class="n">dst</span><span class="p">,</span><span class="w"> </span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">,</span><span class="w"> </span><span class="n">end</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">dst</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 340226 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">340226</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">340226</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">end</span><span class="p">[</span><span class="mi">-1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">end</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">string_to_int</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">endptr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">errno</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strtol</span><span class="p">(</span><span class="n">src</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">endptr</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">errno</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strtol"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">endptr</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">src</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">*</span><span class="n">endptr</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Invalid number: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">src</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html b/coverage/index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html new file mode 100644 index 0000000..880ce36 --- /dev/null +++ b/coverage/index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html @@ -0,0 +1,2276 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/tcp_server.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>87</td> + <td>122</td> + <td class="coverage-low">71.3%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>11</td> + <td>11</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>27</td> + <td>66</td> + <td class="coverage-low">40.9%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l156">client_create (line 156)</a></td><td>called 27620 times, returned 27620 times</td><td>24.0%</td></tr> + <tr><td><a href="#l131">client_create_thread (line 131)</a></td><td>called 27620 times, returned 27620 times</td><td>50.0%</td></tr> + <tr><td><a href="#l86">client_destroy (line 86)</a></td><td>called 27620 times, returned 27620 times</td><td>62.0%</td></tr> + <tr><td><a href="#l97">client_destroy_handler (line 97)</a></td><td>called 27620 times, returned 27620 times</td><td>75.0%</td></tr> + <tr><td><a href="#l201">client_queue_create (line 201)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l206">client_queue_destroy (line 206)</a></td><td>called 29 times, returned 29 times</td><td>60.0%</td></tr> + <tr><td><a href="#l107">client_thread_func (line 107)</a></td><td>called 27620 times, returned 27620 times</td><td>54.0%</td></tr> + <tr><td><a href="#l268">tcp_server_accept (line 268)</a></td><td>called 27620 times, returned 27620 times</td><td>60.0%</td></tr> + <tr><td><a href="#l216">tcp_server_accept_handler (line 216)</a></td><td>called 27620 times, returned 27620 times</td><td>100.0%</td></tr> + <tr><td><a href="#l223">tcp_server_create (line 223)</a></td><td>called 29 times, returned 29 times</td><td>40.0%</td></tr> + <tr><td><a href="#l261">tcp_server_destroy (line 261)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"tcp_server.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"event_loop.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"file.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"net.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"signal.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><poll.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><pthread.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><signal.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/eventfd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/queue.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This is a simple threaded TCP server implementation. Each client is handled</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * in a separate thread.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * It used to be much simpler; basically, we have two types of client</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * connections: those made by cimple-worker and cimple-client respectively.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * cimple-server would keep track of cimple-worker threads/connections, and</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * clean them up when assigning tasks/on shutdown.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * What about cimple-client connections though? I struggled to come up with a</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * scheme that would allow cimple-server to clean them up gracefully. When</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * would it do the cleanup even? I didn't want to do it on shutdown, since</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * there would be potentially a lot of them.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * One solution is to make client threads detached. This is a common advise;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * I really don't understand the merit of this approach though. Client threads</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * actively work on shared data, take locks, etc. Data corruption is very</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * likely after the main thread exits and all the rest are killed.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Another approach is pre-threading; we make a number of threads beforehand</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * and handle all client connections; I view this approach as limiting in</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * principle; probably that's foolish of me.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Finally, I cannot bring myself to do non-blocking I/O. I honestly fear the</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * amount of work it would require to maintain read buffers, etc.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * So I came up with this convoluted scheme. The TCP server adds the listening</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * socket to the event loop, as before. Each client thread makes an eventfd</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * descriptor that it writes to when it's about to finish. The eventfd</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * descriptor is added to the event loop; once it's readable, we clean up the</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * client thread quickly from the main event loop thread. The TCP server itself</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * keeps track of client threads; on shutdown, it cleans up those still working.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> *</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * I'm _really_ not sure about this approach, it seems fishy as hell; I guess,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * we'll see.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">cleanup_fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">pid_t</span><span class="w"> </span><span class="n">tid</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">pthread_t</span><span class="w"> </span><span class="kr">thread</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">SIMPLEQ_ENTRY</span><span class="p">(</span><span class="n">client</span><span class="p">)</span><span class="w"> </span><span class="n">entries</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="n">SIMPLEQ_HEAD</span><span class="p">(</span><span class="n">client_queue</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">tcp_server_conn_handler</span><span class="w"> </span><span class="n">conn_handler</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">conn_handler_arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client_queue</span><span class="w"> </span><span class="n">client_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">accept_fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">client_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">"Cleaning up client thread %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">tid</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">8/8</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 13827 times.</div> + <div class="takenBranch">✓ Branch 1 taken 13793 times.</div> + <div class="takenBranch">✓ Branch 2 taken 4449 times.</div> + <div class="takenBranch">✓ Branch 3 taken 9378 times.</div> + <div class="takenBranch">✓ Branch 4 taken 16151 times.</div> + <div class="takenBranch">✓ Branch 5 taken 13793 times.</div> + <div class="takenBranch">✓ Branch 6 taken 9380 times.</div> + <div class="takenBranch">✓ Branch 7 taken 4413 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">43771</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_REMOVE</span><span class="p">(</span><span class="o">&</span><span class="n">client</span><span class="o">-></span><span class="n">server</span><span class="o">-></span><span class="n">client_queue</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">pthread_errno_if</span><span class="p">(</span><span class="n">pthread_join</span><span class="p">(</span><span class="n">client</span><span class="o">-></span><span class="kr">thread</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">),</span><span class="w"> </span><span class="s">"pthread_join"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">file_close</span><span class="p">(</span><span class="n">client</span><span class="o">-></span><span class="n">cleanup_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">client</span><span class="o">-></span><span class="n">conn_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">client_destroy_handler</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">revents</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_client</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_client</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">"Client thread %d indicated that it's done</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">tid</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client_destroy</span><span class="p">(</span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="nf">client_thread_func</span><span class="p">(</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_client</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_client</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">tid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gettid</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_debug</span><span class="p">(</span><span class="s">"New client thread thread %d has started</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">tid</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* Let the client thread handle its signals except those that should be</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * handled in the main thread. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">signal_block_sigterms</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">cleanup</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">server</span><span class="o">-></span><span class="n">conn_handler</span><span class="p">(</span><span class="n">client</span><span class="o">-></span><span class="n">conn_fd</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">server</span><span class="o">-></span><span class="n">conn_handler_arg</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">cleanup</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="nl">cleanup</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/4</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 4 not taken.</div> + <div class="notTakenBranch">✗ Branch 5 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log_errno_if</span><span class="p">(</span><span class="n">eventfd_write</span><span class="p">(</span><span class="n">client</span><span class="o">-></span><span class="n">cleanup_fd</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="s">"eventfd_write"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">client_create_thread</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="n">old_mask</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* Block all signals (we'll unblock them later); the client thread will</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * have all signals blocked initially. This allows the main thread to</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * handle SIGINT/SIGTERM/etc. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">signal_block_all</span><span class="p">(</span><span class="o">&</span><span class="n">old_mask</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pthread_create</span><span class="p">(</span><span class="o">&</span><span class="n">client</span><span class="o">-></span><span class="kr">thread</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">client_thread_func</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 27620 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">pthread_errno</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span><span class="w"> </span><span class="s">"pthread_create"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">restore_mask</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="nl">restore_mask</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* Restore the previously-enabled signals for handling in the main thread. */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">signal_set_mask</span><span class="p">(</span><span class="o">&</span><span class="n">old_mask</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">client_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">conn_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">eventfd</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">EFD_CLOEXEC</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"eventfd"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">cleanup_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_add_once</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="o">-></span><span class="n">cleanup_fd</span><span class="p">,</span><span class="w"> </span><span class="n">POLLIN</span><span class="p">,</span><span class="w"> </span><span class="n">client_destroy_handler</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_cleanup_fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INSERT_TAIL</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">client_queue</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client_create_thread</span><span class="p">(</span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">remove_from_client_queue</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">remove_from_client_queue</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">SIMPLEQ_REMOVE</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">client_queue</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">client</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">close_cleanup_fd</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">file_close</span><span class="p">(</span><span class="n">client</span><span class="o">-></span><span class="n">cleanup_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">client</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">client_queue_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client_queue</span><span class="w"> </span><span class="o">*</span><span class="n">client_queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INIT</span><span class="p">(</span><span class="n">client_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">client_queue_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">client_queue</span><span class="w"> </span><span class="o">*</span><span class="n">client_queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="n">client_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">entry1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">client</span><span class="w"> </span><span class="o">*</span><span class="n">entry2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_NEXT</span><span class="p">(</span><span class="n">entry1</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">client_destroy</span><span class="p">(</span><span class="n">entry1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry2</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">tcp_server_accept_handler</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">revents</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">tcp_server_accept</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">tcp_server_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">**</span><span class="n">_server</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">port</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">tcp_server_conn_handler</span><span class="w"> </span><span class="n">conn_handler</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">conn_handler_arg</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">calloc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">server</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">loop</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">loop</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">conn_handler</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn_handler</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">conn_handler_arg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">conn_handler_arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client_queue_create</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">client_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_bind</span><span class="p">(</span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">accept_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_add</span><span class="p">(</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">server</span><span class="o">-></span><span class="n">accept_fd</span><span class="p">,</span><span class="w"> </span><span class="n">POLLIN</span><span class="p">,</span><span class="w"> </span><span class="n">tcp_server_accept_handler</span><span class="p">,</span><span class="w"> </span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">29</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">server</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">close</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">accept_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">tcp_server_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">accept_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">client_queue_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">server</span><span class="o">-></span><span class="n">client_queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l265" href="#l265">265</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">server</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l266" href="#l266">266</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l267" href="#l267">267</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l268" href="#l268">268</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">tcp_server_accept</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">tcp_server</span><span class="w"> </span><span class="o">*</span><span class="n">server</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l269" href="#l269">269</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l270" href="#l270">270</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">conn_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l271" href="#l271">271</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l272" href="#l272">272</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_accept</span><span class="p">(</span><span class="n">server</span><span class="o">-></span><span class="n">accept_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l273" href="#l273">273</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l274" href="#l274">274</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l275" href="#l275">275</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">conn_fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l276" href="#l276">276</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l277" href="#l277">277</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client_create</span><span class="p">(</span><span class="n">server</span><span class="p">,</span><span class="w"> </span><span class="n">conn_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l278" href="#l278">278</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 27620 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">27620</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l279" href="#l279">279</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_conn</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l280" href="#l280">280</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l281" href="#l281">281</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27620</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l282" href="#l282">282</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l283" href="#l283">283</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">close_conn</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l284" href="#l284">284</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">conn_fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l285" href="#l285">285</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l286" href="#l286">286</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l287" href="#l287">287</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l288" href="#l288">288</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html b/coverage/index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html new file mode 100644 index 0000000..fa4c39a --- /dev/null +++ b/coverage/index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html @@ -0,0 +1,2243 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/worker.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>106</td> + <td>151</td> + <td class="coverage-low">70.2%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>9</td> + <td>9</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>27</td> + <td>62</td> + <td class="coverage-low">43.5%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l105">worker_create (line 105)</a></td><td>called 54 times, returned 54 times</td><td>44.0%</td></tr> + <tr><td><a href="#l166">worker_destroy (line 166)</a></td><td>called 54 times, returned 54 times</td><td>91.0%</td></tr> + <tr><td><a href="#l178">worker_do_run (line 178)</a></td><td>called 9180 times, returned 9180 times</td><td>65.0%</td></tr> + <tr><td><a href="#l224">worker_get_run (line 224)</a></td><td>called 9234 times, returned 9234 times</td><td>77.0%</td></tr> + <tr><td><a href="#l85">worker_handle_cmd_start_run (line 85)</a></td><td>called 9180 times, returned 9180 times</td><td>80.0%</td></tr> + <tr><td><a href="#l260">worker_main (line 260)</a></td><td>called 54 times, returned 54 times</td><td>83.0%</td></tr> + <tr><td><a href="#l77">worker_set_stopping (line 77)</a></td><td>called 54 times, returned 54 times</td><td>100.0%</td></tr> + <tr><td><a href="#l39">worker_settings_copy (line 39)</a></td><td>called 54 times, returned 54 times</td><td>21.0%</td></tr> + <tr><td><a href="#l70">worker_settings_destroy (line 70)</a></td><td>called 54 times, returned 54 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"worker.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"ci.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"command.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"compiler.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"event_loop.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"git.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"net.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"process.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"protocol.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"run_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"signal.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><poll.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">stopping</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_dispatcher</span><span class="w"> </span><span class="o">*</span><span class="n">cmd_dispatcher</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">event_loop</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">signalfd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">run</span><span class="w"> </span><span class="o">*</span><span class="n">run</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">worker_settings_copy</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">src</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">src</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">result</span><span class="o">-></span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strdup</span><span class="p">(</span><span class="n">src</span><span class="o">-></span><span class="n">host</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="o">-></span><span class="n">host</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strdup"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">result</span><span class="o">-></span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">strdup</span><span class="p">(</span><span class="n">src</span><span class="o">-></span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">result</span><span class="o">-></span><span class="n">port</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"strdup"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_host</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">result</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_host</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">((</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">result</span><span class="o">-></span><span class="n">host</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_result</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">worker_settings_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">((</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">((</span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">settings</span><span class="o">-></span><span class="n">host</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">worker_set_stopping</span><span class="p">(</span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">event_loop</span><span class="w"> </span><span class="o">*</span><span class="n">loop</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">revents</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_worker</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_worker</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">stopping</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">worker_handle_cmd_start_run</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">request</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">UNUSED</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_response</span><span class="w"> </span><span class="o">**</span><span class="n">response</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">_ctx</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="n">ctx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_conn_ctx</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">_ctx</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">ctx</span><span class="o">-></span><span class="n">arg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_parse_start_run</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">worker</span><span class="o">-></span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l97" href="#l97">97</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l98" href="#l98">98</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l99" href="#l99">99</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cmd_desc</span><span class="w"> </span><span class="n">commands</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l100" href="#l100">100</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="n">CMD_START_RUN</span><span class="p">,</span><span class="w"> </span><span class="n">worker_handle_cmd_start_run</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l101" href="#l101">101</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l102" href="#l102">102</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l103" href="#l103">103</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">static</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">numof_commands</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">commands</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">sizeof</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l104" href="#l104">104</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l105" href="#l105">105</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">worker_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">**</span><span class="n">_worker</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l106" href="#l106">106</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l107" href="#l107">107</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l108" href="#l108">108</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l110" href="#l110">110</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">worker</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l111" href="#l111">111</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l112" href="#l112">112</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l113" href="#l113">113</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l114" href="#l114">114</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l115" href="#l115">115</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker_settings_copy</span><span class="p">(</span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l116" href="#l116">116</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l117" href="#l117">117</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l118" href="#l118">118</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l119" href="#l119">119</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">stopping</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l122" href="#l122">122</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l123" href="#l123">123</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">cmd_dispatcher_create</span><span class="p">(</span><span class="o">&</span><span class="n">worker</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">,</span><span class="w"> </span><span class="n">commands</span><span class="p">,</span><span class="w"> </span><span class="n">numof_commands</span><span class="p">,</span><span class="w"> </span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l124" href="#l124">124</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l125" href="#l125">125</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l126" href="#l126">126</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l127" href="#l127">127</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_create</span><span class="p">(</span><span class="o">&</span><span class="n">worker</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l128" href="#l128">128</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l129" href="#l129">129</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_cmd_dispatcher</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l130" href="#l130">130</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l131" href="#l131">131</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">signalfd_create_sigterms</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l132" href="#l132">132</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l133" href="#l133">133</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_event_loop</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l134" href="#l134">134</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">signalfd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l135" href="#l135">135</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l136" href="#l136">136</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_add</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">event_loop</span><span class="p">,</span><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">signalfd</span><span class="p">,</span><span class="w"> </span><span class="n">POLLIN</span><span class="p">,</span><span class="w"> </span><span class="n">worker_set_stopping</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l137" href="#l137">137</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l138" href="#l138">138</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l139" href="#l139">139</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_signalfd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l140" href="#l140">140</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l141" href="#l141">141</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">libgit_init</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l142" href="#l142">142</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l143" href="#l143">143</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_signalfd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l144" href="#l144">144</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l145" href="#l145">145</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_worker</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l146" href="#l146">146</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l147" href="#l147">147</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l148" href="#l148">148</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">close_signalfd</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l149" href="#l149">149</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">signalfd_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">signalfd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l150" href="#l150">150</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l151" href="#l151">151</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_event_loop</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l152" href="#l152">152</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">event_loop_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l153" href="#l153">153</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l154" href="#l154">154</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">destroy_cmd_dispatcher</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l155" href="#l155">155</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">cmd_dispatcher_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l156" href="#l156">156</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l157" href="#l157">157</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_settings</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l158" href="#l158">158</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">worker_settings_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l159" href="#l159">159</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l160" href="#l160">160</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l161" href="#l161">161</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l162" href="#l162">162</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l163" href="#l163">163</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l164" href="#l164">164</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l165" href="#l165">165</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l166" href="#l166">166</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">worker_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l167" href="#l167">167</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l168" href="#l168">168</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Shutting down</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l169" href="#l169">169</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l170" href="#l170">170</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">libgit_shutdown</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l171" href="#l171">171</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">signalfd_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">signalfd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l172" href="#l172">172</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">event_loop_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l173" href="#l173">173</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">cmd_dispatcher_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l174" href="#l174">174</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker_settings_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l175" href="#l175">175</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l176" href="#l176">176</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l177" href="#l177">177</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l178" href="#l178">178</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">worker_do_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l179" href="#l179">179</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l180" href="#l180">180</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l181" href="#l181">181</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l182" href="#l182">182</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">process_output</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l183" href="#l183">183</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">process_output_create</span><span class="p">(</span><span class="o">&</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l184" href="#l184">184</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l185" href="#l185">185</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l186" href="#l186">186</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l187" href="#l187">187</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ci_run_git_repo</span><span class="p">(</span><span class="n">run_get_repo_url</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">run</span><span class="p">),</span><span class="w"> </span><span class="n">run_get_repo_rev</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">run</span><span class="p">),</span><span class="w"> </span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l188" href="#l188">188</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l189" href="#l189">189</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_err</span><span class="p">(</span><span class="s">"Run failed with an error</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l190" href="#l190">190</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l191" href="#l191">191</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l192" href="#l192">192</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l193" href="#l193">193</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">process_output_dump</span><span class="p">(</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l194" href="#l194">194</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l195" href="#l195">195</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">finished_request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l196" href="#l196">196</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l197" href="#l197">197</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_create_finished_run</span><span class="p">(</span><span class="o">&</span><span class="n">finished_request</span><span class="p">,</span><span class="w"> </span><span class="n">run_get_id</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">run</span><span class="p">),</span><span class="w"> </span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l198" href="#l198">198</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l199" href="#l199">199</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_output</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l200" href="#l200">200</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l201" href="#l201">201</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_connect</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="o">-></span><span class="n">host</span><span class="p">,</span><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l202" href="#l202">202</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l203" href="#l203">203</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">free_request</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l204" href="#l204">204</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l205" href="#l205">205</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l206" href="#l206">206</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_send</span><span class="p">(</span><span class="n">finished_request</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l207" href="#l207">207</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9180 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l208" href="#l208">208</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close_conn</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l209" href="#l209">209</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l210" href="#l210">210</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">close_conn</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l211" href="#l211">211</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l212" href="#l212">212</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l213" href="#l213">213</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">free_request</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l214" href="#l214">214</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="n">finished_request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l215" href="#l215">215</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l216" href="#l216">216</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="nl">free_output</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l217" href="#l217">217</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">process_output_destroy</span><span class="p">(</span><span class="n">result</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l218" href="#l218">218</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l219" href="#l219">219</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">run_destroy</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">run</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l220" href="#l220">220</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l221" href="#l221">221</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l222" href="#l222">222</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l223" href="#l223">223</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l224" href="#l224">224</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">worker_get_run</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l225" href="#l225">225</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l226" href="#l226">226</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l227" href="#l227">227</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l228" href="#l228">228</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">net_connect</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="o">-></span><span class="n">host</span><span class="p">,</span><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l229" href="#l229">229</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l230" href="#l230">230</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l231" href="#l231">231</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l232" href="#l232">232</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l233" href="#l233">233</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">jsonrpc_request</span><span class="w"> </span><span class="o">*</span><span class="n">new_worker_request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l234" href="#l234">234</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">request_create_new_worker</span><span class="p">(</span><span class="o">&</span><span class="n">new_worker_request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l235" href="#l235">235</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l236" href="#l236">236</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l237" href="#l237">237</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l238" href="#l238">238</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">jsonrpc_request_send</span><span class="p">(</span><span class="n">new_worker_request</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l239" href="#l239">239</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">jsonrpc_request_destroy</span><span class="p">(</span><span class="n">new_worker_request</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l240" href="#l240">240</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l241" href="#l241">241</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l242" href="#l242">242</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l243" href="#l243">243</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_add_once</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">event_loop</span><span class="p">,</span><span class="w"> </span><span class="n">fd</span><span class="p">,</span><span class="w"> </span><span class="n">POLLIN</span><span class="p">,</span><span class="w"> </span><span class="n">cmd_dispatcher_handle_event</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l244" href="#l244">244</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker</span><span class="o">-></span><span class="n">cmd_dispatcher</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l245" href="#l245">245</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l246" href="#l246">246</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l247" href="#l247">247</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l248" href="#l248">248</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="s">"Waiting for a new command</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l249" href="#l249">249</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l250" href="#l250">250</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">event_loop_run</span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">event_loop</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l251" href="#l251">251</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9234 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l252" href="#l252">252</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">close</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l253" href="#l253">253</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l254" href="#l254">254</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="nl">close</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l255" href="#l255">255</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l256" href="#l256">256</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l257" href="#l257">257</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l258" href="#l258">258</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l259" href="#l259">259</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l260" href="#l260">260</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">worker_main</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l261" href="#l261">261</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l262" href="#l262">262</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l263" href="#l263">263</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l264" href="#l264">264</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l265" href="#l265">265</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker_get_run</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l266" href="#l266">266</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l267" href="#l267">267</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l268" href="#l268">268</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l269" href="#l269">269</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 54 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">worker</span><span class="o">-></span><span class="n">stopping</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l270" href="#l270">270</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l271" href="#l271">271</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l272" href="#l272">272</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker_do_run</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l273" href="#l273">273</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9180</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l274" href="#l274">274</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l275" href="#l275">275</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l276" href="#l276">276</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l277" href="#l277">277</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l278" href="#l278">278</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l279" href="#l279">279</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html b/coverage/index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html new file mode 100644 index 0000000..e441476 --- /dev/null +++ b/coverage/index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html @@ -0,0 +1,814 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/worker_main.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>34</td> + <td>43</td> + <td class="coverage-medium">79.1%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>4</td> + <td>4</td> + <td class="coverage-high">100.0%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>10</td> + <td>14</td> + <td class="coverage-low">71.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l16">default_settings (line 16)</a></td><td>called 60 times, returned 60 times</td><td>100.0%</td></tr> + <tr><td><a href="#l25">get_usage_string (line 25)</a></td><td>called 4 times, returned 4 times</td><td>100.0%</td></tr> + <tr><td><a href="#l73">main (line 73)</a></td><td>called 60 times, returned 54 times</td><td>79.0%</td></tr> + <tr><td><a href="#l30">parse_settings (line 30)</a></td><td>called 60 times, returned 54 times</td><td>76.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2022 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"cmd_line.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"const.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"worker.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><getopt.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><unistd.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">default_settings</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">.</span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_host</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">.</span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_port</span><span class="p">,</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">4</td> + <td class="src coveredLine"><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">get_usage_string</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">4</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"[-h|--help] [-V|--version] [-v|--verbose] [-H|--host HOST] [-p|--port PORT]"</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">parse_settings</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">opt</span><span class="p">,</span><span class="w"> </span><span class="n">longind</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">default_settings</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* clang-format off */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">option</span><span class="w"> </span><span class="n">long_options</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"help"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'h'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"version"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'V'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"verbose"</span><span class="p">,</span><span class="w"> </span><span class="n">no_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'v'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"host"</span><span class="p">,</span><span class="w"> </span><span class="n">required_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'H'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="s">"port"</span><span class="p">,</span><span class="w"> </span><span class="n">required_argument</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="sc">'p'</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">},</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="cm">/* clang-format on */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 1 taken 114 times.</div> + <div class="takenBranch">✓ Branch 2 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">168</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">((</span><span class="n">opt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getopt_long</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">,</span><span class="w"> </span><span class="s">"hVvH:p:"</span><span class="p">,</span><span class="w"> </span><span class="n">long_options</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">longind</span><span class="p">))</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">-1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">5/6</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 2 times.</div> + <div class="takenBranch">✓ Branch 1 taken 2 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + <div class="takenBranch">✓ Branch 3 taken 54 times.</div> + <div class="takenBranch">✓ Branch 4 taken 54 times.</div> + <div class="takenBranch">✓ Branch 5 taken 2 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">114</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">opt</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'h'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'V'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_version</span><span class="p">();</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'v'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">g_log_lvl</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">LOG_LVL_DEBUG</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'H'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">optarg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'p'</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">settings</span><span class="o">-></span><span class="n">port</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">optarg</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">default</span><span class="o">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">2</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">exit_with_usage</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">break</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="n">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">settings</span><span class="w"> </span><span class="n">settings</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">60</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">parse_settings</span><span class="p">(</span><span class="o">&</span><span class="n">settings</span><span class="p">,</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="n">argv</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l83" href="#l83">83</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker_create</span><span class="p">(</span><span class="o">&</span><span class="n">worker</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">settings</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l84" href="#l84">84</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 54 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l85" href="#l85">85</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l86" href="#l86">86</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l87" href="#l87">87</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">ret</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">worker_main</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l88" href="#l88">88</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 54 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">54</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ret</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l89" href="#l89">89</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">goto</span><span class="w"> </span><span class="n">destroy_worker</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l90" href="#l90">90</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l91" href="#l91">91</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="nl">destroy_worker</span><span class="p">:</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l92" href="#l92">92</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker_destroy</span><span class="p">(</span><span class="n">worker</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l93" href="#l93">93</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l94" href="#l94">94</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l95" href="#l95">95</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l96" href="#l96">96</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html b/coverage/index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html new file mode 100644 index 0000000..bc6eae5 --- /dev/null +++ b/coverage/index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html @@ -0,0 +1,703 @@ +<!DOCTYPE html> +<html class="theme-green"> + + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <title>GCC Code Coverage Report</title> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <link rel="stylesheet" href="index.css"/> + </head> + + <body> + <header> + <h1>GCC Code Coverage Report</h1> + + <hr/> + + <div class="summary"> +<div> + <table class="legend"> + <tr> + <th scope="row">Directory:</th> + <td>src/</td> + </tr> + <tr> + <th scope="row">File:</th> + <td>src/worker_queue.c</td> + </tr> + <tr> + <th scope="row">Date:</th> + <td>2024-12-26 11:11:59</td> + </tr> + </table> +</div> +<div> + <table class="coverage"> + <tr> + <th></th> + <th scope="col">Exec</th> + <th scope="col">Total</th> + <th scope="col">Coverage</th> + </tr> + <tr> + <th scope="row">Lines:</th> + <td>32</td> + <td>37</td> + <td class="coverage-medium">86.5%</td> + </tr> + <tr> + <th scope="row">Functions:</th> + <td>8</td> + <td>9</td> + <td class="coverage-medium">88.9%</td> + </tr> + <tr> + <th scope="row">Branches:</th> + <td>5</td> + <td>10</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + </header> + + <nav> +<details> + <summary>List of functions</summary> + <table class="listOfFunctions"> + <tr> + <th>Function (Line)</th> + <th>Call count</th> + <th>Block coverage</th> + </tr> + <tr><td><a href="#l20">worker_create (line 20)</a></td><td>called 9234 times, returned 9234 times</td><td>27.0%</td></tr> + <tr><td><a href="#l34">worker_destroy (line 34)</a></td><td>called 9234 times, returned 9234 times</td><td>100.0%</td></tr> + <tr><td><a href="#l40">worker_get_fd (line 40)</a></td><td>called 36774 times, returned 36774 times</td><td>100.0%</td></tr> + <tr><td><a href="#l66">worker_queue_add_first (line 66)</a></td><td>not called</td><td>0.0%</td></tr> + <tr><td><a href="#l71">worker_queue_add_last (line 71)</a></td><td>called 9234 times, returned 9234 times</td><td>100.0%</td></tr> + <tr><td><a href="#l45">worker_queue_create (line 45)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l50">worker_queue_destroy (line 50)</a></td><td>called 29 times, returned 29 times</td><td>100.0%</td></tr> + <tr><td><a href="#l61">worker_queue_is_empty (line 61)</a></td><td>called 27215 times, returned 27215 times</td><td>100.0%</td></tr> + <tr><td><a href="#l76">worker_queue_remove_first (line 76)</a></td><td>called 9180 times, returned 9180 times</td><td>100.0%</td></tr> + </table> +</details> + + </nav> + + <main> +<div class="file-source"> + <table> + <tr> + <th align="right">Line</th> + <th align="right">Branch</th> + <th align="right">Exec</th> + <th align="left">Source</th> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l1" href="#l1">1</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm">/*</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l2" href="#l2">2</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Copyright (c) 2023 Egor Tensin <egor@tensin.name></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l3" href="#l3">3</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * This file is part of the "cimple" project.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l4" href="#l4">4</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * For details, see https://github.com/egor-tensin/cimple.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l5" href="#l5">5</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> * Distributed under the MIT License.</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l6" href="#l6">6</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cm"> */</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l7" href="#l7">7</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l8" href="#l8">8</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"worker_queue.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l9" href="#l9">9</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"log.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l10" href="#l10">10</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">"net.h"</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l11" href="#l11">11</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l12" href="#l12">12</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l13" href="#l13">13</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/queue.h></span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l14" href="#l14">14</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l15" href="#l15">15</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l16" href="#l16">16</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l17" href="#l17">17</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="n">SIMPLEQ_ENTRY</span><span class="p">(</span><span class="n">worker</span><span class="p">)</span><span class="w"> </span><span class="n">entries</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l18" href="#l18">18</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">};</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l19" href="#l19">19</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l20" href="#l20">20</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">worker_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">**</span><span class="n">_entry</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">fd</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l21" href="#l21">21</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l22" href="#l22">22</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="p">));</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l23" href="#l23">23</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">1/2</summary> + <div class="linebranchContents"> + <div class="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 9234 times.</div> + </div> + </details> + </td> + <td class="linecount partialCoveredLine">9234</td> + <td class="src partialCoveredLine"><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">entry</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l24" href="#l24">24</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">log_errno</span><span class="p">(</span><span class="s">"malloc"</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l25" href="#l25">25</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l26" href="#l26">26</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l27" href="#l27">27</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l28" href="#l28">28</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l29" href="#l29">29</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l30" href="#l30">30</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="o">*</span><span class="n">_entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l31" href="#l31">31</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l32" href="#l32">32</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l33" href="#l33">33</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l34" href="#l34">34</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">worker_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l35" href="#l35">35</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l36" href="#l36">36</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">net_close</span><span class="p">(</span><span class="n">entry</span><span class="o">-></span><span class="n">fd</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l37" href="#l37">37</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">entry</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l38" href="#l38">38</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l39" href="#l39">39</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l40" href="#l40">40</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36774</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">worker_get_fd</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l41" href="#l41">41</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l42" href="#l42">42</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">36774</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entry</span><span class="o">-></span><span class="n">fd</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l43" href="#l43">43</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l44" href="#l44">44</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l45" href="#l45">45</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">worker_queue_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l46" href="#l46">46</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l47" href="#l47">47</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INIT</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l48" href="#l48">48</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l49" href="#l49">49</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l50" href="#l50">50</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">worker_queue_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l51" href="#l51">51</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l52" href="#l52">52</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l53" href="#l53">53</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 54 times.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">83</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">entry1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l54" href="#l54">54</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_NEXT</span><span class="p">(</span><span class="n">entry1</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l55" href="#l55">55</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">worker_destroy</span><span class="p">(</span><span class="n">entry1</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l56" href="#l56">56</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">54</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">entry1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">entry2</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l57" href="#l57">57</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="w"> </span><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l58" href="#l58">58</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INIT</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l59" href="#l59">59</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">29</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l60" href="#l60">60</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l61" href="#l61">61</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27215</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">worker_queue_is_empty</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l62" href="#l62">62</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l63" href="#l63">63</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">27215</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">SIMPLEQ_EMPTY</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l64" href="#l64">64</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l65" href="#l65">65</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l66" href="#l66">66</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">worker_queue_add_first</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l67" href="#l67">67</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l68" href="#l68">68</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INSERT_HEAD</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l69" href="#l69">69</a></td> + <td class="linebranch"> + </td> + <td class="linecount uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l70" href="#l70">70</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l71" href="#l71">71</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">worker_queue_add_last</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l72" href="#l72">72</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l73" href="#l73">73</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_INSERT_TAIL</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">entry</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l74" href="#l74">74</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9234</td> + <td class="src coveredLine"><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l75" href="#l75">75</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l76" href="#l76">76</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">worker_queue_remove_first</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">worker_queue</span><span class="w"> </span><span class="o">*</span><span class="n">queue</span><span class="p">)</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l77" href="#l77">77</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">{</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l78" href="#l78">78</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">worker</span><span class="w"> </span><span class="o">*</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">SIMPLEQ_FIRST</span><span class="p">(</span><span class="n">queue</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l79" href="#l79">79</a></td> + <td class="linebranch"> + <details class="linebranchDetails"> + <summary class="linebranchSummary">2/2</summary> + <div class="linebranchContents"> + <div class="takenBranch">✓ Branch 0 taken 9063 times.</div> + <div class="takenBranch">✓ Branch 1 taken 117 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="n">SIMPLEQ_REMOVE_HEAD</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span><span class="w"> </span><span class="n">entries</span><span class="p">);</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l80" href="#l80">80</a></td> + <td class="linebranch"> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entry</span><span class="p">;</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l81" href="#l81">81</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "><span class="p">}</span></td> + </tr> + <tr class="source-line"> + <td class="lineno"><a id="l82" href="#l82">82</a></td> + <td class="linebranch"> + </td> + <td class="linecount "></td> + <td class="src "></td> + </tr> + </table> +</div> + <hr/> + </main> + + <footer> + Generated by: <a href="http://gcovr.com/en/7.0">GCOVR (Version 7.0)</a> + </footer> + </body> +</html> |