diff options
Diffstat (limited to 'coverage')
30 files changed, 50501 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..6de630e --- /dev/null +++ b/coverage/index.base64.c.6cc41135837c80527c8f246c27adf87e.html @@ -0,0 +1,603 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>3</td> + <td>12</td> + <td class="coverage-low">25.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">dst</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">dst</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..7988fce --- /dev/null +++ b/coverage/index.buf.c.ed8381695b8bbc07634acc8fcf3aab27.html @@ -0,0 +1,517 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>1</td> + <td>4</td> + <td class="coverage-low">25.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">92012</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">buf</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..3bccad8 --- /dev/null +++ b/coverage/index.ci.c.aafc6aa1373a4054fe8dceca1e5a2cd2.html @@ -0,0 +1,990 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>9</td> + <td>18</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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">proc_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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span><span class="w"></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><span class="w"></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 coveredLine">36720</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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">my_chdir</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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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">my_chdir</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..be1da71 --- /dev/null +++ b/coverage/index.client.c.7eeddcdb2bd1344daca0a340abd305ae.html @@ -0,0 +1,1121 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>17</td> + <td>30</td> + <td class="coverage-low">56.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">client</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">argc</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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_str</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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 coveredLine">9206</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">jsonrpc_response_is_error</span><span class="p">(</span><span class="n">response</span><span class="p">))</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..47d3a69 --- /dev/null +++ b/coverage/index.client_main.c.0ff1a98449e6ae22cf540fe28921fa2d.html @@ -0,0 +1,909 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>10</td> + <td>14</td> + <td class="coverage-low">71.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18422</td> + <td class="src coveredLine"><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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..fbaa218 --- /dev/null +++ b/coverage/index.cmd_line.c.fc55483624faae9ff92546137d095857.html @@ -0,0 +1,680 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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>31</td> + <td class="coverage-high">90.3%</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/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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">my_readlink</span><span class="p">(</span><span class="s">"/proc/self/exe"</span><span class="p">);</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">20</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">path</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">20</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">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">14</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">"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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">2</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">msg</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">6</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..6eca578 --- /dev/null +++ b/coverage/index.command.c.d26991ef13eb41283f88bf34125ef986.html @@ -0,0 +1,2048 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>33</td> + <td>66</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">170</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">dest</span><span class="o">-></span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">170</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">83</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">dispatcher</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">83</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">dispatcher</span><span class="o">-></span><span class="n">cmds</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">83</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">64418</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">ctx</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">new_ctx</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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">actual_response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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="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><span class="w"></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><span class="w"></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><span class="w"></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 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_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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.css b/coverage/index.css new file mode 100644 index 0000000..b51dc2e --- /dev/null +++ b/coverage/index.css @@ -0,0 +1,505 @@ +:root { + font-family: sans-serif; + --unknown_color: LightGray; + --low_color: #FF6666; + --medium_color: #F9FD63; + --high_color: #85E485; + --covered_color: #85E485; + --uncovered_color: #FF8C8C; + --takenBranch_color: Green; + --notTakenBranch_color: Red; +} + +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.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 +{ + 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 +{ + background-color: var(--low_color) !important; +} + +table.legend span.coverage-medium, +table.coverage td.coverage-medium +{ + background-color: var(--medium_color) !important; +} + +table.legend span.coverage-high, +table.coverage 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.uncoveredLine, +span.uncoveredLine +{ + background-color: var(--uncovered_color) !important; +} + +.linebranch, .linecount +{ + font-family: monospace; + border-right: 1px gray solid; + background-color: lightgray; + text-align: right; +} + +.linebranchDetails +{ + position: relative; +} +.linebranchSummary +{ + cursor: help; +} +.linebranchContents +{ + 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; +} + +.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 +{ + font-family: monospace; + font-weight: bold; +} + +pre +{ + height : 15px; + margin-top: 0; + margin-bottom: 0; +} + +.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 */ +.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..22de3df --- /dev/null +++ b/coverage/index.event_loop.c.037d09258818a0617a2d29f47e2b5064.html @@ -0,0 +1,2163 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>39</td> + <td>76</td> + <td class="coverage-low">51.3%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36966</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">res</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">83</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">loop</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36966</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">112</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">entry</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36854</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">entry</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36800</td> + <td class="src coveredLine"><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><span class="w"></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 48335 times.</div> + <div class="takenBranch">✓ Branch 5 taken 36800 times.</div> + <div class="takenBranch">✓ Branch 6 taken 25199 times.</div> + <div class="takenBranch">✓ Branch 7 taken 11601 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">85135</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">305444</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><span class="w"></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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">ptr</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">buf</span><span class="p">)</span><span class="w"></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><span class="w"></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">305444</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><span class="w"></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><span class="w"></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">305444</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><span class="w"></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><span class="w"></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">305444</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><span class="w"></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">305444</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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">buf</span><span class="p">)</span><span class="w"></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><span class="w"></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">305444</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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLNVAL</span><span class="p">)</span><span class="w"></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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLERR</span><span class="p">)</span><span class="w"></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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLHUP</span><span class="p">)</span><span class="w"></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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLRDHUP</span><span class="p">)</span><span class="w"></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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLPRI</span><span class="p">)</span><span class="w"></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><span class="w"></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 305444 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">events</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></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">305444</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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">events</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">POLLOUT</span><span class="p">)</span><span class="w"></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><span class="w"></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">305444</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><span class="w"></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><span class="w"></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">63268</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><span class="w"></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><span class="w"></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">63268</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><span class="w"></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 63268 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">63268</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="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">63268</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><span class="w"></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 240941 times.</div> + <div class="takenBranch">✓ Branch 1 taken 63268 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">304209</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><span class="w"></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">240941</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><span class="w"></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">240941</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><span class="w"></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><span class="w"></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 63268 times.</div> + <div class="notTakenBranch">✗ Branch 2 not taken.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">63268</td> + <td class="src coveredLine"><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><span class="w"></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 240941 times.</div> + <div class="takenBranch">✓ Branch 1 taken 63268 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">304209</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><span class="w"></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">240941</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><span class="w"></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 240941 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 coveredLine">240941</td> + <td class="src coveredLine"><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><span class="w"></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">240941</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><span class="w"></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><span class="w"></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">63268</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><span class="w"></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><span class="w"></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">63268</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><span class="w"></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><span class="w"></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><span class="w"></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">63268</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><span class="w"></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">63268</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><span class="w"></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 63268 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">63268</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="w"></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><span class="w"></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">63268</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><span class="w"></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 63268 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">63268</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">63268</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><span class="w"></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">63268</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><span class="w"></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 240941 times.</div> + <div class="takenBranch">✓ Branch 1 taken 63268 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">304209</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><span class="w"></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">240941</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><span class="w"></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 176438 times.</div> + <div class="takenBranch">✓ Branch 1 taken 64503 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">240941</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><span class="w"></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">176438</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><span class="w"></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><span class="w"></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 coveredLine">64503</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">handler_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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">240941</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><span class="w"></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">240941</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">continue</span><span class="p">;</span><span class="w"></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><span class="w"></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">63268</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><span class="w"></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">63268</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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..3a3f228 --- /dev/null +++ b/coverage/index.file.c.0cc24881e570d19e625204519d50254f.html @@ -0,0 +1,1491 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>20</td> + <td>52</td> + <td class="coverage-low">38.5%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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">403638</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><span class="w"></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><span class="w"></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><span class="w"></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">403638</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></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">403638</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><span class="w"></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 403638 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">403638</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">403638</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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">my_chdir</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!*</span><span class="n">old</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">my_readlink</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">20</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">tmp_buf</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">20</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">20</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">110566</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36720</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">261952</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><span class="w"></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">271132</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><span class="w"></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 271132 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">271132</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">tmp_contents</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">271132</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><span class="w"></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">271132</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><span class="w"></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 271132 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">271132</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 261952 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">271132</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">261952</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><span class="w"></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 212056 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">261952</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..a82cde7 --- /dev/null +++ b/coverage/index.git.c.ecafe65200a95f92fc10a3095d9e5f09.html @@ -0,0 +1,1092 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>10</td> + <td>64</td> + <td class="coverage-low">15.6%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.0)</a> + </footer> + </body> +</html> diff --git a/coverage/index.html b/coverage/index.html new file mode 100644 index 0000000..e252ffb --- /dev/null +++ b/coverage/index.html @@ -0,0 +1,475 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</td> + </tr> + <tr> + <th scope="row">Legend:</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>2841</td> + <td class="coverage-low">71.1%</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/> + +<table class="file-list"> + <col/> + <colgroup span="3"/> + <colgroup span="2"/> + + <tr> + <th scope="col">File</th> + <th scope="colgroup" colspan=3>Lines</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 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 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 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 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 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-high" min="0" max="100" value="90.3" title="90.3%">90.3</meter> + </td> + <td class="CoverValue line-coverage coverage-high">90.3%</td> + <td class="CoverValue line-coverage coverage-high">28 / 31</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 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 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 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 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 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 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 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 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 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 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.6" title="73.6%">73.6</meter> + </td> + <td class="CoverValue line-coverage coverage-low">73.6%</td> + <td class="CoverValue line-coverage coverage-low">81 / 110</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 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 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 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 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 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 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 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 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 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 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="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">32 / 36</td> + <td class="CoverValue branch-coverage coverage-low">50.0%</td> + <td class="CoverValue branch-coverage coverage-low">5 / 10</td> + </tr> + +</table> + + <hr/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..2f4c69d --- /dev/null +++ b/coverage/index.json.c.9fe0913c76249e448eec3131d7e8b263.html @@ -0,0 +1,2632 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>22</td> + <td>70</td> + <td class="coverage-low">31.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">55212</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">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">str</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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></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><span class="w"></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><span class="w"></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 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">result</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">110344</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">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">385956</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">165506</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></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><span class="w"></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 coveredLine">165506</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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></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><span class="w"></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 coveredLine">27540</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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">errno</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">321772</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">174684</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">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">174684</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">64312</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">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">64312</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..dc75407 --- /dev/null +++ b/coverage/index.json_rpc.c.2aeccc6679171fb423f72eef95ec01c0.html @@ -0,0 +1,4816 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>58</td> + <td>146</td> + <td class="coverage-low">39.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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></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><span class="w"></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 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="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><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18412</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27594</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">required</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18412</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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_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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">request</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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 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">params</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">request</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">impl</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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></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><span class="w"></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><span class="w"></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 coveredLine">27540</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">45900</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">45900</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">45900</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">params</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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">params</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18412</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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 coveredLine">9206</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">response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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">impl</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9206</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..0b70801 --- /dev/null +++ b/coverage/index.log.c.47179e5db7ed3f2db741c99372ba24f3.html @@ -0,0 +1,539 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>4</td> + <td>6</td> + <td class="coverage-low">66.7%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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">182861</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">182861</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><span class="w"></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 182861 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">182861</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">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><span class="w"></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><span class="w"></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 182861 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">182861</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">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><span class="w"></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><span class="w"></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">182861</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><span class="w"></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">182861</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><span class="w"></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">182861</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><span class="w"></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">182861</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><span class="w"></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">182861</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><span class="w"></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><span class="w"></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">182861</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><span class="w"></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><span class="w"></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">182861</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><span class="w"></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">182861</td> + <td class="src coveredLine"><span class="p">}</span><span class="w"></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">708199</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><span class="w"></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><span class="w"></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 525338 times.</div> + <div class="takenBranch">✓ Branch 1 taken 182861 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">708199</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><span class="w"></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">525338</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><span class="w"></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">182861</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><span class="w"></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">182861</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><span class="w"></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">182861</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><span class="w"></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">182861</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><span class="w"></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><span class="w"></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">182861</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><span class="w"></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><span class="w"></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">182861</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><span class="w"></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">182861</td> + <td class="src coveredLine"><span class="p">}</span><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..25c157c --- /dev/null +++ b/coverage/index.net.c.37012fce13860cefc5963f57e0f36732.html @@ -0,0 +1,2386 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>30</td> + <td>92</td> + <td class="coverage-low">32.6%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">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><span class="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">it</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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">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><span class="w"></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><span class="w"></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 coveredLine">27620</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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">it</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">92012</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">92012</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">sent_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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 109165 times.</div> + <div class="takenBranch">✓ Branch 1 taken 92012 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">201177</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><span class="w"></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">109165</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><span class="w"></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 109165 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">109165</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_now</span><span class="p">)</span><span class="w"></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><span class="w"></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 109165 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">109165</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">109165</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><span class="w"></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><span class="w"></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 coveredLine">92012</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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></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><span class="w"></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><span class="w"></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 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="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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">data</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..d724686 --- /dev/null +++ b/coverage/index.process.c.52f9324f34485af6c2c0f7cc7bbf5f8b.html @@ -0,0 +1,1491 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>12</td> + <td>52</td> + <td class="coverage-low">23.1%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36</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="n">WIFSIGNALED</span><span class="p">(</span><span class="n">status</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_spawn</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_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><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">result</span><span class="p">)</span><span class="w"></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><span class="w"></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="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><span class="w"></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="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></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><span class="w"></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="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><span class="w"></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 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">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><span class="w"></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_errno</span><span class="p">(</span><span class="s">"pipe2"</span><span class="p">);</span><span class="w"></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="mi">-1</span><span class="p">;</span><span class="w"></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="p">}</span><span class="w"></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="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><span class="w"></span></td> + </tr> + + <tr class="source-line"> + <td class="lineno"><a id="l109" href="#l109">109</a></td> + <td class="linebranch"> + <details class="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 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">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><span class="w"></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">log_errno</span><span class="p">(</span><span class="s">"fork"</span><span class="p">);</span><span class="w"></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="k">goto</span><span class="w"> </span><span class="n">close_pipe</span><span class="p">;</span><span class="w"></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="p">}</span><span class="w"></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"> + <details class="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 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="o">!</span><span class="n">child_pid</span><span class="p">)</span><span class="w"></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="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><span class="w"></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">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><span class="w"></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">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><span class="w"></span></td> + </tr> + + <tr class="source-line"> + <td class="lineno"><a id="l120" href="#l120">120</a></td> + <td class="linebranch"> + <details class="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 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">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></td> + </tr> + + <tr class="source-line"> + <td class="lineno"><a id="l121" href="#l121">121</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><span class="w"></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">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><span class="w"></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 9180 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">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></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_data</span><span class="p">;</span><span class="w"></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="k">goto</span><span class="w"> </span><span class="n">close_pipe</span><span class="p">;</span><span class="w"></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 uncoveredLine">✗</td> + <td class="src uncoveredLine"><span class="nl">free_data</span><span class="p">:</span><span class="w"></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="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><span class="w"></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">9180</td> + <td class="src coveredLine"><span class="nl">close_pipe</span><span class="p">:</span><span class="w"></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">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><span class="w"></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="w"> </span><span class="cm">/* No errno checking here, we might've already closed the write end. */</span><span class="w"></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">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><span class="w"></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="k">return</span><span class="w"> </span><span class="n">ret</span><span class="p">;</span><span class="w"></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="p">}</span><span class="w"></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">18360</td> + <td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">proc_output_create</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">proc_output</span><span class="w"> </span><span class="o">**</span><span class="n">_output</span><span class="p">)</span><span class="w"></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><span class="w"></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">18360</td> + <td class="src coveredLine"><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">proc_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">proc_output</span><span class="p">));</span><span class="w"></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 18360 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="o">!</span><span class="n">output</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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="n">log_errno</span><span class="p">(</span><span class="s">"calloc"</span><span class="p">);</span><span class="w"></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">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span><span class="w"></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="w"> </span><span class="p">}</span><span class="w"></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">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><span class="w"></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">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><span class="w"></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_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></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">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><span class="w"></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">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><span class="w"></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><span class="w"></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">18360</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">proc_output_destroy</span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span><span class="w"></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><span class="w"></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">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><span class="w"></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="p">);</span><span class="w"></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="p">}</span><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><span class="kt">void</span><span class="w"> </span><span class="nf">proc_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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span><span class="w"></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="p">{</span><span class="w"></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 1 not taken.</div> + <div class="takenBranch">✓ Branch 2 taken 9180 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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="p">}</span><span class="w"></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> + + </table> +</div> + + <hr/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..e07baf3 --- /dev/null +++ b/coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html @@ -0,0 +1,2054 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>24</td> + <td>48</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">**</span><span class="n">_output</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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">proc_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><span class="w"></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">proc_output_create</span><span class="p">(</span><span class="o">&</span><span class="n">output</span><span class="p">);</span><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output_destroy</span><span class="p">(</span><span class="n">output</span><span class="p">);</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..3b4a19b --- /dev/null +++ b/coverage/index.run_queue.c.fdfaa39d71447cf1e7d01ff206bd91e5.html @@ -0,0 +1,1816 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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>110</td> + <td class="coverage-low">73.6%</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/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">entry</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">repo_url</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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 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">repo_rev</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">27472</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><span class="w"></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><span class="w"></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">27472</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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="p">}</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 78 times.</div> + <div class="takenBranch">✓ Branch 1 taken 9102 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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..3a2d594 --- /dev/null +++ b/coverage/index.server.c.0235f01a49d01b35e981a41f59a9d2d6.html @@ -0,0 +1,4455 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>61</td> + <td>146</td> + <td class="coverage-low">41.8%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18472</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18472</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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">18292</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><span class="w"></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><span class="w"></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">18292</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><span class="w"></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 18292 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">18292</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">18292</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18443</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">27255</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><span class="w"></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><span class="w"></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">27255</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 coveredLine">9234</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">27472</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><span class="w"></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><span class="w"></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">27472</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">27501</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><span class="w"></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><span class="w"></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 27472 times.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + <div class="takenBranch">✓ Branch 3 taken 27255 times.</div> + <div class="takenBranch">✓ Branch 4 taken 217 times.</div> + <div class="takenBranch">✓ Branch 6 taken 9180 times.</div> + <div class="takenBranch">✓ Branch 7 taken 18075 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">27501</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 18292 times.</div> + <div class="takenBranch">✓ Branch 2 taken 9209 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">27501</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><span class="w"></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">18292</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><span class="w"></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 18292 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">18292</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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="notTakenBranch">✗ Branch 0 not taken.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">;</span><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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">proc_output_destroy</span><span class="p">(</span><span class="n">output</span><span class="p">);</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">server</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 54034 times.</div> + <div class="takenBranch">✓ Branch 1 taken 29 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">54063</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><span class="w"></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 54034 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">54034</td> + <td class="src coveredLine"><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><span class="w"></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">54034</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><span class="w"></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 54034 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">54034</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..95b0db1 --- /dev/null +++ b/coverage/index.server_main.c.3ca591a47eaf0cc37ef7579efe6031fe.html @@ -0,0 +1,885 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>10</td> + <td>14</td> + <td class="coverage-low">71.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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 coveredLine">64</td> + <td class="src coveredLine"><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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..5ca5cd8 --- /dev/null +++ b/coverage/index.signal.c.71d63611c8a63e0778dd598afad76dfd.html @@ -0,0 +1,826 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>5</td> + <td>10</td> + <td class="coverage-low">50.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">82943</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">83</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></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><span class="w"></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><span class="w"></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 coveredLine">83</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..4ef0e01 --- /dev/null +++ b/coverage/index.sqlite.c.13cf77e7262c599539f10e3be0248b3e.html @@ -0,0 +1,2733 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>21</td> + <td>95</td> + <td class="coverage-low">22.1%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">58</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">203</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36775</td> + <td class="src coveredLine"><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><span class="w"></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 coveredLine">36775</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">203</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">45984</td> + <td class="src coveredLine"><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><span class="w"></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="nl">SQLITE_ROW</span><span class="p">:</span><span class="w"></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><span class="w"></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="nl">SQLITE_DONE</span><span class="p">:</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">45929</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27540</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">full_stmt</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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 coveredLine">29</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><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..97fd758 --- /dev/null +++ b/coverage/index.storage.c.96d197609feea4b630e7b775fb18af81.html @@ -0,0 +1,1189 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>9</td> + <td>20</td> + <td class="coverage-low">45.0%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="p">);</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">18502</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">api</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">api</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">api</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">api</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">api</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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">api</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">api</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..935b9ed --- /dev/null +++ b/coverage/index.storage_sqlite.c.b44f7f73d467be85cd4227a40c11d12a.html @@ -0,0 +1,4906 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>66</td> + <td>156</td> + <td class="coverage-low">42.3%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">sqlite</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">sqlite</span><span class="o">-></span><span class="n">path</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">174</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">174</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">174</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36775</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">36775</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">full_script</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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 coveredLine">29</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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 coveredLine">29</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">sqlite</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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 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="o">!</span><span class="n">ret</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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 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="o">!</span><span class="n">ret</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output</span><span class="w"> </span><span class="o">*</span><span class="n">output</span><span class="p">)</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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 coveredLine">9180</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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 coveredLine">26</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..d4fd91c --- /dev/null +++ b/coverage/index.string.c.2a75186e465ffeac1b306a350f4a56f8.html @@ -0,0 +1,515 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>3</td> + <td>16</td> + <td class="coverage-low">18.8%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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">305444</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><span class="w"></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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">dst</span><span class="p">)</span><span class="w"></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><span class="w"></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 305444 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">dst</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">end</span><span class="p">)</span><span class="w"></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><span class="w"></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">305444</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><span class="w"></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 305444 times.</div> + <div class="notTakenBranch">✗ Branch 1 not taken.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">305444</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">p</span><span class="p">)</span><span class="w"></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">305444</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..d3df3c6 --- /dev/null +++ b/coverage/index.tcp_server.c.68fbb5aebb39dbc263f5110d228c9b35.html @@ -0,0 +1,2532 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>27</td> + <td>66</td> + <td class="coverage-low">40.9%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</td> + <td class="src coveredLine"><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><span class="w"></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 14983 times.</div> + <div class="takenBranch">✓ Branch 1 taken 12637 times.</div> + <div class="takenBranch">✓ Branch 2 taken 6743 times.</div> + <div class="takenBranch">✓ Branch 3 taken 8240 times.</div> + <div class="takenBranch">✓ Branch 4 taken 8078 times.</div> + <div class="takenBranch">✓ Branch 5 taken 12637 times.</div> + <div class="takenBranch">✓ Branch 6 taken 9276 times.</div> + <div class="takenBranch">✓ Branch 7 taken 3361 times.</div> + </div> + </details> + </td> + <td class="linecount coveredLine">35698</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><span class="w"></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 coveredLine">27620</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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></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><span class="w"></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><span class="w"></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 coveredLine">27620</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></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><span class="w"></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><span class="w"></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 coveredLine">27620</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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></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><span class="w"></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><span class="w"></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 coveredLine">27620</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="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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">client</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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">server</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">29</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">27620</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..86f8955 --- /dev/null +++ b/coverage/index.worker.c.4cbdfac39be7d0330fdfd94f65ce9ea9.html @@ -0,0 +1,2492 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>27</td> + <td>62</td> + <td class="coverage-low">43.5%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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">result</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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 coveredLine">54</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">result</span><span class="o">-></span><span class="n">host</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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">result</span><span class="o">-></span><span class="n">port</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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">worker</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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">worker</span><span class="o">-></span><span class="n">settings</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_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><span class="w"></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">proc_output_create</span><span class="p">(</span><span class="o">&</span><span class="n">result</span><span class="p">);</span><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output_dump</span><span class="p">(</span><span class="n">result</span><span class="p">);</span><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">proc_output_destroy</span><span class="p">(</span><span class="n">result</span><span class="p">);</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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 coveredLine">9234</td> + <td class="src coveredLine"><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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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">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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..a7f416f --- /dev/null +++ b/coverage/index.worker_main.c.3e96ea0429977547c8b5eee564591fe0.html @@ -0,0 +1,885 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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">Branches:</th> + <td>10</td> + <td>14</td> + <td class="coverage-low">71.4%</td> + </tr> + </table> +</div> + </div> + + <hr/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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="w"></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><span class="w"></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><span class="w"></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 coveredLine">114</td> + <td class="src coveredLine"><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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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="o">:</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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 coveredLine">54</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></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.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..9402dd1 --- /dev/null +++ b/coverage/index.worker_queue.c.aeb7258cd8f695c41a9aa8634701b38c.html @@ -0,0 +1,755 @@ +<!DOCTYPE html> +<html> + + <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> + <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-04-25 03:45:42</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>36</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/> + +<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><span class="w"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="cp"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 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="o">!</span><span class="n">entry</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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">27255</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><span class="w"></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><span class="w"></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">27255</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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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><span class="w"></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 9098 times.</div> + <div class="takenBranch">✓ Branch 1 taken 82 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><span class="w"></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><span class="w"></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><span class="w"></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/> + + <footer> + Generated by: <a href="http://gcovr.com">GCOVR (Version 5.0)</a> + </footer> + </body> +</html> |