Files
libaaruformat/docs/html/flux_8c_source.html

1121 lines
218 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.15.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libaaruformat: src/blocks/flux.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">libaaruformat<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Aaru Data Preservation Suite - Format Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.15.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('flux_8c_source.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">flux.c</div></div>
</div><!--header-->
<div class="contents">
<a href="flux_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * This file is part of the Aaru Data Preservation Suite.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * Copyright (c) 2019-2025 Natalia Portillo.</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * This library is free software; you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * published by the Free Software Foundation; either version 2.1 of the</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * License, or (at your option) any later version.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * This library is distributed in the hope that it will be useful, but</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> *</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * License along with this library; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> */</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;limits.h&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &quot;<a class="code" href="context_8h.html">aaruformat/context.h</a>&quot;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#include &quot;<a class="code" href="errors_8h.html">aaruformat/errors.h</a>&quot;</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include &quot;<a class="code" href="index_8h.html">aaruformat/structs/index.h</a>&quot;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#include &quot;<a class="code" href="consts_8h.html">consts.h</a>&quot;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &quot;<a class="code" href="decls_8h.html">decls.h</a>&quot;</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#include &quot;<a class="code" href="log_8h.html">log.h</a>&quot;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include &quot;utarray.h&quot;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &quot;uthash.h&quot;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="foldopen" id="foldopen00033" data-start="{" data-end="};">
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structFluxCaptureMapEntry.html"> 33</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structFluxCaptureMapEntry.html">FluxCaptureMapEntry</a></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span>{</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="structFluxCaptureMapEntry.html#aaf424970094cf368e17a01ae1cbe9e24"> 35</a></span> <a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a> <a class="code hl_variable" href="structFluxCaptureMapEntry.html#aaf424970094cf368e17a01ae1cbe9e24">key</a>;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="structFluxCaptureMapEntry.html#ae94a107184c391a86fc74b3a3acb1f3a"> 36</a></span> uint32_t <a class="code hl_variable" href="structFluxCaptureMapEntry.html#ae94a107184c391a86fc74b3a3acb1f3a">index</a>;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="structFluxCaptureMapEntry.html#ae5c32160a1cbc308cec42816832f79c7"> 37</a></span> UT_hash_handle <a class="code hl_variable" href="structFluxCaptureMapEntry.html#ae5c32160a1cbc308cec42816832f79c7">hh</a>;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span>};</div>
</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span></div>
<div class="foldopen" id="foldopen00054" data-start="{" data-end="}">
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="flux_8c.html#a548a8cb21d02fded8a5084c96bbf5e30"> 54</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="flux_8c.html#a548a8cb21d02fded8a5084c96bbf5e30">flux_capture_record_dtor</a>(<span class="keywordtype">void</span> *element)</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span>{</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">if</span>(element == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_struct" href="structFluxCaptureRecord.html">FluxCaptureRecord</a> *record = element;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> free(record-&gt;<a class="code hl_variable" href="structFluxCaptureRecord.html#afd9cf94122b9f59c548cda29599f8047">data_buffer</a>);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> free(record-&gt;<a class="code hl_variable" href="structFluxCaptureRecord.html#af5bce1443f5112ce65f54c39ff873b57">index_buffer</a>);</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> record-&gt;<a class="code hl_variable" href="structFluxCaptureRecord.html#afd9cf94122b9f59c548cda29599f8047">data_buffer</a> = NULL;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> record-&gt;<a class="code hl_variable" href="structFluxCaptureRecord.html#af5bce1443f5112ce65f54c39ff873b57">index_buffer</a> = NULL;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>}</div>
</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="flux_8c.html#af25f05916bee2f8489613b6a096c2cec"> 65</a></span><span class="keyword">static</span> <span class="keyword">const</span> UT_icd <a class="code hl_variable" href="flux_8c.html#af25f05916bee2f8489613b6a096c2cec">FLUX_CAPTURE_RECORD_ICD</a> = {<span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxCaptureRecord.html">FluxCaptureRecord</a>), NULL, NULL, <a class="code hl_function" href="flux_8c.html#a548a8cb21d02fded8a5084c96bbf5e30">flux_capture_record_dtor</a>};</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span></div>
<div class="foldopen" id="foldopen00084" data-start="{" data-end="}">
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="flux_8c.html#a608a4570f8f6e4a8b7d97dd2fdaf8050"> 84</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="flux_8c.html#a608a4570f8f6e4a8b7d97dd2fdaf8050">flux_map_clear</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span>{</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_struct" href="structFluxCaptureMapEntry.html">FluxCaptureMapEntry</a> *entry;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <a class="code hl_struct" href="structFluxCaptureMapEntry.html">FluxCaptureMapEntry</a> *tmp;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a>, entry, tmp)</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> HASH_DEL(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a>, entry);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> free(entry);</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> }</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a> = NULL;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>}</div>
</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span></div>
<div class="foldopen" id="foldopen00122" data-start="{" data-end="}">
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="flux_8c.html#a3fd05dad98e7dedb15e256070bd73a88"> 122</a></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="flux_8c.html#a3fd05dad98e7dedb15e256070bd73a88">flux_map_add</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, <span class="keyword">const</span> <a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a> *key, uint32_t index)</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span>{</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <a class="code hl_struct" href="structFluxCaptureMapEntry.html">FluxCaptureMapEntry</a> *entry = NULL;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> HASH_FIND(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a>, key, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a>), entry);</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">if</span>(entry == NULL)</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> {</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> entry = malloc(<span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxCaptureMapEntry.html">FluxCaptureMapEntry</a>));</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">if</span>(entry == NULL) <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> entry-&gt;<a class="code hl_variable" href="structFluxCaptureMapEntry.html#aaf424970094cf368e17a01ae1cbe9e24">key</a> = *key;</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> HASH_ADD(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a>, key, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a>), entry);</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> }</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> entry-&gt;<a class="code hl_variable" href="structFluxCaptureMapEntry.html#ae94a107184c391a86fc74b3a3acb1f3a">index</a> = index;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span>}</div>
</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span></div>
<div class="foldopen" id="foldopen00171" data-start="{" data-end="}">
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="internal_8h.html#ae840a46bdea143ad49be3ba037376320"> 171</a></span>int32_t <a class="code hl_function" href="flux_8c.html#ae840a46bdea143ad49be3ba037376320">flux_map_rebuild_from_entries</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span>{</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <a class="code hl_function" href="flux_8c.html#a608a4570f8f6e4a8b7d97dd2fdaf8050">flux_map_clear</a>(ctx);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> == 0) <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">for</span>(uint32_t i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>; i++)</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *entry = &amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>[i];</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a> key = {entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a31cafff6f54acc9e019da447e94ace4a">head</a>, entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a46108bba60946e7b7d4f41160e3dfd86">track</a>, entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#abd12c00010d82cd83820dd3405b7b860">subtrack</a>, entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#ae5af51709faf749501d44b242a57481c">captureIndex</a>};</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keywordflow">if</span>(<a class="code hl_function" href="flux_8c.html#a3fd05dad98e7dedb15e256070bd73a88">flux_map_add</a>(ctx, &amp;key, i) != 0)</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> {</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not add flux capture to lookup map&quot;</span>);</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <a class="code hl_function" href="flux_8c.html#a608a4570f8f6e4a8b7d97dd2fdaf8050">flux_map_clear</a>(ctx);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> }</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> }</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span>}</div>
</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span></div>
<div class="foldopen" id="foldopen00307" data-start="{" data-end="}">
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"><a class="line" href="internal_8h.html#aac6f1ed284f46388319d99bff2a1f409"> 307</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="flux_8c.html#aac6f1ed284f46388319d99bff2a1f409">process_flux_data_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, <span class="keyword">const</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> *entry)</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span>{</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="keywordtype">int</span> pos = 0;</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">size_t</span> read_bytes = 0;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> uint64_t crc64 = 0;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> </div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="comment">// Check if the context and image stream are valid</span></div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <span class="keywordflow">if</span>(ctx == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a> == NULL)</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> {</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context or image stream.&quot;</span>);</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> }</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a> != NULL)</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> {</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> utarray_free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a>);</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a> = NULL;</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> }</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> != NULL)</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> {</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>);</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = NULL;</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> }</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <a class="code hl_function" href="flux_8c.html#a608a4570f8f6e4a8b7d97dd2fdaf8050">flux_map_clear</a>(ctx);</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> </div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> memset(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>));</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="comment">// Seek to block</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> pos = fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a>, SEEK_SET);</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keywordflow">if</span>(pos &lt; 0 || ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) != entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a>)</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> {</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not seek to %&quot;</span> PRIu64 <span class="stringliteral">&quot; as indicated by index entry...\n&quot;</span>, entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a>);</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> }</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> </div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="comment">// Even if those two checks shall have been done before</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> read_bytes = fread(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 1, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>), ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> </div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keywordflow">if</span>(read_bytes != <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>))</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> {</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> memset(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>));</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Could not read flux data header, continuing...\n&quot;</span>);</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> }</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> </div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a17794a3f0cc5b11a5169580cc510a71c">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aeaee7c0287e406b4b09ad4b8954e46a3">FluxDataBlock</a>)</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> {</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> memset(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>));</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Incorrect identifier for flux data block at position %&quot;</span> PRIu64 <span class="stringliteral">&quot;\n&quot;</span>, entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a>);</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> }</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#abca8e73a9655d810e6d30d36c3ab54d7">ImageSize</a> += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>) * ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>;</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> </div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = (<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *)malloc(<span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>) * ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>);</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> </div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> == NULL)</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> {</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> memset(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>));</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate memory for flux data block, continuing...\n&quot;</span>);</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> }</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> read_bytes = fread(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>), ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keywordflow">if</span>(read_bytes != ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>)</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> {</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> memset(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>));</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = NULL;</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read flux data block, continuing...\n&quot;</span>);</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> }</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> </div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> crc64 = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((<span class="keyword">const</span> uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>));</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> </div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <span class="keywordflow">if</span>(crc64 != ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a3980b9bf3db82de544c991cae4e6126a">crc64</a>)</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> {</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Incorrect CRC found: 0x%&quot;</span> PRIx64 <span class="stringliteral">&quot; found, expected 0x%&quot;</span> PRIx64 <span class="stringliteral">&quot;, continuing...\n&quot;</span>, crc64,</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a3980b9bf3db82de544c991cae4e6126a">crc64</a>);</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> }</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> </div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keywordflow">if</span>(<a class="code hl_function" href="flux_8c.html#ae840a46bdea143ad49be3ba037376320">flux_map_rebuild_from_entries</a>(ctx) != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> {</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>);</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = NULL;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> memset(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>));</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> }</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> </div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Found %d flux entries at position %&quot;</span> PRIu64 <span class="stringliteral">&quot;.\n&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>, entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a>);</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span>}</div>
</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span></div>
<div class="foldopen" id="foldopen00415" data-start="{" data-end="}">
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"><a class="line" href="flux_8c.html#a91c222a3e35c47e7a2a13a864d85bc03"> 415</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="flux_8c.html#a91c222a3e35c47e7a2a13a864d85bc03">ensure_flux_entries_loaded</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span>{</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="comment">// If already loaded, nothing to do</span></div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> != NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> &gt; 0)</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> {</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> }</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> </div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="comment">// Find FluxDataBlock in index</span></div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a> == NULL)</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> {</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae74707aa7fa4c8d8c3b717514a5f5c7c">AARUF_ERROR_FLUX_DATA_NOT_FOUND</a>;</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> }</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> </div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> *entry = NULL;</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; utarray_len(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>); i++)</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> {</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> entry = (<a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> *)utarray_eltptr(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, i);</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordflow">if</span>(entry &amp;&amp; entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> == <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aeaee7c0287e406b4b09ad4b8954e46a3">FluxDataBlock</a>)</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> {</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> }</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> entry = NULL;</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> }</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> </div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordflow">if</span>(entry == NULL)</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> {</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae74707aa7fa4c8d8c3b717514a5f5c7c">AARUF_ERROR_FLUX_DATA_NOT_FOUND</a>;</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> }</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="comment">// Load the flux data block</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <a class="code hl_function" href="flux_8c.html#aac6f1ed284f46388319d99bff2a1f409">process_flux_data_block</a>(ctx, entry);</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> </div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="comment">// Check if loading was successful</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> == 0)</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> {</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae74707aa7fa4c8d8c3b717514a5f5c7c">AARUF_ERROR_FLUX_DATA_NOT_FOUND</a>;</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> }</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> </div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span>}</div>
</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span></div>
<div class="foldopen" id="foldopen00497" data-start="{" data-end="}">
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"><a class="line" href="decls_8h.html#a5f50a859c1849d13a6f4d26d904fb458"> 497</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="flux_8c.html#a5f50a859c1849d13a6f4d26d904fb458">aaruf_get_flux_captures</a>(<span class="keywordtype">void</span> *context, uint8_t *buffer, <span class="keywordtype">size_t</span> *length)</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span>{</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_get_flux_captures(%p, %p, %zu)&quot;</span>, context, buffer, (length ? *length : 0));</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="comment">// Check context is correct AaruFormat context</span></div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> {</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> }</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> </div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = (<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *)context;</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> </div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> <span class="comment">// Not a libaaruformat context</span></div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> {</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> }</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> </div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> <span class="comment">// Lazy load flux entries if not already loaded</span></div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> int32_t res = <a class="code hl_function" href="flux_8c.html#a91c222a3e35c47e7a2a13a864d85bc03">ensure_flux_entries_loaded</a>(ctx);</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> {</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_get_flux_captures() = %d&quot;</span>, res);</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> }</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> </div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> == 0 || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> == NULL)</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> {</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Image contains no flux captures&quot;</span>);</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_get_flux_captures() = AARUF_ERROR_FLUX_DATA_NOT_FOUND&quot;</span>);</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae74707aa7fa4c8d8c3b717514a5f5c7c">AARUF_ERROR_FLUX_DATA_NOT_FOUND</a>;</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> }</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> </div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="keywordtype">size_t</span> required_length = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxCaptureMeta.html">FluxCaptureMeta</a>);</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> </div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <span class="keywordflow">if</span>(length == NULL)</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> {</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Buffer too small for flux captures, required %zu bytes&quot;</span>, required_length);</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_get_flux_captures() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> }</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> </div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <span class="keywordflow">if</span>(buffer == NULL || *length &lt; required_length)</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> {</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> *length = required_length;</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Buffer too small for flux captures, required %zu bytes&quot;</span>, required_length);</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_get_flux_captures() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> }</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> </div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> <a class="code hl_struct" href="structFluxCaptureMeta.html">FluxCaptureMeta</a> *out_entries = (<a class="code hl_struct" href="structFluxCaptureMeta.html">FluxCaptureMeta</a> *)buffer;</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> <span class="keywordflow">for</span>(uint16_t i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>; i++)</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> {</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *entry = &amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>[i];</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> out_entries[i].<a class="code hl_variable" href="structFluxCaptureMeta.html#a0b227d050c7e82a606376fd3f0c2db02">head</a> = entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a31cafff6f54acc9e019da447e94ace4a">head</a>;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> out_entries[i].<a class="code hl_variable" href="structFluxCaptureMeta.html#aebee512e3f6ce8a4c1aa1b4cfbecdb33">track</a> = entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a46108bba60946e7b7d4f41160e3dfd86">track</a>;</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> out_entries[i].<a class="code hl_variable" href="structFluxCaptureMeta.html#a9e7ceeae4845e8dcd87bd76e32d065d6">subtrack</a> = entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#abd12c00010d82cd83820dd3405b7b860">subtrack</a>;</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> out_entries[i].<a class="code hl_variable" href="structFluxCaptureMeta.html#a6558bace422cf15c3f371ef437cc5610">captureIndex</a> = entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#ae5af51709faf749501d44b242a57481c">captureIndex</a>;</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> out_entries[i].<a class="code hl_variable" href="structFluxCaptureMeta.html#a3df2812cbb33d5774ae4485eee96c4c9">indexResolution</a> = entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a12f64e1c66187ebbbdcdf03916293c95">indexResolution</a>;</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> out_entries[i].<a class="code hl_variable" href="structFluxCaptureMeta.html#ae9699355343e04f88bfe25093774dfde">dataResolution</a> = entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a27c590b581f2ea33306f89e609c28c95">dataResolution</a>;</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> }</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> </div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> *length = required_length;</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> </div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_get_flux_captures(%p, %p, %zu) = AARUF_STATUS_OK&quot;</span>, context, buffer, *length);</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span>}</div>
</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span></div>
<div class="foldopen" id="foldopen00616" data-start="{" data-end="}">
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"><a class="line" href="decls_8h.html#ae11fa81212d9e363d8761e849859bab8"> 616</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="flux_8c.html#ae11fa81212d9e363d8761e849859bab8">aaruf_write_flux_capture</a>(<span class="keywordtype">void</span> *context, uint32_t head, uint16_t track, uint8_t subtrack,</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> uint32_t capture_index, uint64_t data_resolution,</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> uint64_t index_resolution, <span class="keyword">const</span> uint8_t *data,</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> uint32_t data_length, <span class="keyword">const</span> uint8_t *index,</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> uint32_t index_length)</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span>{</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_add_flux_capture(%p, %u, %u, %u, %u, %&quot;</span> PRIu64 <span class="stringliteral">&quot;, %&quot;</span> PRIu64 <span class="stringliteral">&quot;, %p, %u, %p, %u)&quot;</span>, context,</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> head, track, subtrack, capture_index, data_resolution, index_resolution, data, data_length, index,</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> index_length);</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> </div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> {</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> }</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> </div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = context;</div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> </div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> {</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> }</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> </div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a6f61f9ea20f4e3b791a0d6388dd43651">is_writing</a>)</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> {</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux captures can only be added when writing&quot;</span>);</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1df49eaa19eaa14891b6aaab966a9bc6">AARUF_READ_ONLY</a>;</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> }</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> </div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> <span class="keywordflow">if</span>((index_length != 0 &amp;&amp; index == NULL) || (data_length != 0 &amp;&amp; data == NULL))</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> {</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid flux capture buffers&quot;</span>);</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> }</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> </div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> <span class="keywordflow">if</span>((uint64_t)data_length + index_length &gt; UINT32_MAX)</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> {</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux capture too large (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, (uint64_t)data_length + index_length);</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> }</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> </div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a> == NULL)</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> {</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> utarray_new(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a>, &amp;<a class="code hl_variable" href="flux_8c.html#af25f05916bee2f8489613b6a096c2cec">FLUX_CAPTURE_RECORD_ICD</a>);</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a> == NULL)</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> {</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate flux capture storage&quot;</span>);</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> }</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> }</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> </div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> <span class="keywordtype">size_t</span> existing_captures = utarray_len(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a>);</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> <span class="keywordflow">if</span>(existing_captures &gt;= UINT16_MAX)</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> {</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux capture limit exceeded (%zu &gt;= %u)&quot;</span>, existing_captures, UINT16_MAX);</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> }</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> </div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> uint8_t *data_copy = NULL;</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> uint8_t *index_copy = NULL;</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> </div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> <span class="keywordflow">if</span>(data_length != 0)</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> {</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> data_copy = malloc(data_length);</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> <span class="keywordflow">if</span>(data_copy == NULL)</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> {</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate %u bytes for flux data&quot;</span>, data_length);</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> }</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> memcpy(data_copy, data, data_length);</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> }</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> </div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> <span class="keywordflow">if</span>(index_length != 0)</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> {</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> index_copy = malloc(index_length);</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <span class="keywordflow">if</span>(index_copy == NULL)</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> {</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> free(data_copy);</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate %u bytes for flux index&quot;</span>, index_length);</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> }</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> memcpy(index_copy, index, index_length);</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> }</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> </div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> <a class="code hl_struct" href="structFluxCaptureRecord.html">FluxCaptureRecord</a> record = {0};</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#a31cafff6f54acc9e019da447e94ace4a">head</a> = head;</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#a46108bba60946e7b7d4f41160e3dfd86">track</a> = track;</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#abd12c00010d82cd83820dd3405b7b860">subtrack</a> = subtrack;</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#ae5af51709faf749501d44b242a57481c">captureIndex</a> = capture_index;</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#a27c590b581f2ea33306f89e609c28c95">dataResolution</a> = data_resolution;</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#a12f64e1c66187ebbbdcdf03916293c95">indexResolution</a> = index_resolution;</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#aaaaaf686bec81c632f8de3131b540946">indexOffset</a> = data_length;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>.<a class="code hl_variable" href="structFluxEntry.html#a3f5949d0feb9bdcf62afeb1acb1fa009">payloadOffset</a> = 0;</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#afd9cf94122b9f59c548cda29599f8047">data_buffer</a> = data_copy;</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a9563435372ecc4af506c4fae2ac2f617">data_length</a> = data_length;</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#af5bce1443f5112ce65f54c39ff873b57">index_buffer</a> = index_copy;</div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> record.<a class="code hl_variable" href="structFluxCaptureRecord.html#adcf7766ac4311fe79a1324f2eec6868d">index_length</a> = index_length;</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> </div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *new_entries = realloc(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>, (existing_captures + 1) * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>));</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> <span class="keywordflow">if</span>(new_entries == NULL)</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> {</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> free(data_copy);</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> free(index_copy);</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not grow flux entry array&quot;</span>);</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> }</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> </div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = new_entries;</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a>, &amp;record);</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> </div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>[existing_captures] = record.<a class="code hl_variable" href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">entry</a>;</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a17794a3f0cc5b11a5169580cc510a71c">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aeaee7c0287e406b4b09ad4b8954e46a3">FluxDataBlock</a>;</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> = (uint16_t)(existing_captures + 1);</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a3980b9bf3db82de544c991cae4e6126a">crc64</a> =</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((<span class="keyword">const</span> uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>));</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acbb9df628de2c980cd3d7c22e5515f62">dirty_flux_block</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> </div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> <a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a> key = {head, track, subtrack, capture_index};</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> <span class="keywordflow">if</span>(<a class="code hl_function" href="flux_8c.html#a3fd05dad98e7dedb15e256070bd73a88">flux_map_add</a>(ctx, &amp;key, (uint32_t)existing_captures) != 0)</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> {</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not add flux capture to lookup map&quot;</span>);</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> </div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> <span class="keywordtype">size_t</span> len = utarray_len(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a>);</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> <span class="keywordflow">if</span>(len &gt; 0) utarray_erase(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a>, len - 1, 1);</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> </div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> <span class="keywordflow">if</span>(existing_captures == 0)</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> {</div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>);</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = NULL;</div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span> }</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> {</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *shrunk = realloc(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>, existing_captures * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>));</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <span class="keywordflow">if</span>(shrunk != NULL) ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = shrunk;</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> }</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> </div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> = (uint16_t)existing_captures;</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a3980b9bf3db82de544c991cae4e6126a">crc64</a> = existing_captures == 0 ? 0</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> : <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((<span class="keyword">const</span> uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>,</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> existing_captures * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a>));</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> }</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> </div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_add_flux_capture() = AARUF_STATUS_OK (captures=%u)&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>);</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span>}</div>
</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span></div>
<div class="foldopen" id="foldopen00790" data-start="{" data-end="}">
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"><a class="line" href="decls_8h.html#a430617e60dee0b72e0ae5635c69f9a6c"> 790</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="flux_8c.html#a430617e60dee0b72e0ae5635c69f9a6c">aaruf_clear_flux_captures</a>(<span class="keywordtype">void</span> *context)</div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span>{</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_clear_flux_captures(%p)&quot;</span>, context);</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> </div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> {</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> }</div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> </div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = context;</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> </div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> {</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> }</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> </div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a> != NULL)</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> {</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> utarray_free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a>);</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">flux_captures</a> = NULL;</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> }</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> </div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> <a class="code hl_function" href="flux_8c.html#a608a4570f8f6e4a8b7d97dd2fdaf8050">flux_map_clear</a>(ctx);</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> </div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>);</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> = NULL;</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> </div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> memset(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxHeader.html">FluxHeader</a>));</div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> </div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_clear_flux_captures() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span>}</div>
</div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span></div>
<div class="foldopen" id="foldopen00833" data-start="{" data-end="}">
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"><a class="line" href="flux_8c.html#a11995aba3f4efbc10d6b41a628c08e5d"> 833</a></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *<a class="code hl_function" href="flux_8c.html#a11995aba3f4efbc10d6b41a628c08e5d">find_flux_entry_by_key</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, <span class="keyword">const</span> <a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a> *key)</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span>{</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> <span class="comment">// Try lookup map first (O(1))</span></div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a> != NULL)</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span> {</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span> <a class="code hl_struct" href="structFluxCaptureMapEntry.html">FluxCaptureMapEntry</a> *map_entry = NULL;</div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span> HASH_FIND(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">flux_map</a>, key, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a>), map_entry);</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"> 840</span> <span class="keywordflow">if</span>(map_entry != NULL &amp;&amp; map_entry-&gt;<a class="code hl_variable" href="structFluxCaptureMapEntry.html#ae94a107184c391a86fc74b3a3acb1f3a">index</a> &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>)</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span> <span class="keywordflow">return</span> &amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>[map_entry-&gt;<a class="code hl_variable" href="structFluxCaptureMapEntry.html#ae94a107184c391a86fc74b3a3acb1f3a">index</a>];</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> }</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> </div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span> <span class="comment">// Fall back to linear search (O(n))</span></div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> <span class="keywordflow">for</span>(uint32_t i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a>; i++)</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> {</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *entry = &amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a>[i];</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"> 848</span> <span class="keywordflow">if</span>(entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a31cafff6f54acc9e019da447e94ace4a">head</a> == key-&gt;<a class="code hl_variable" href="structFluxCaptureKey.html#ac8945dce9e2b566546610d67bd729e64">head</a> &amp;&amp; entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a46108bba60946e7b7d4f41160e3dfd86">track</a> == key-&gt;<a class="code hl_variable" href="structFluxCaptureKey.html#a1728ed3937674d667aec49213c454dc0">track</a> &amp;&amp; entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#abd12c00010d82cd83820dd3405b7b860">subtrack</a> == key-&gt;<a class="code hl_variable" href="structFluxCaptureKey.html#a8a1ff1cb573f89f004babec6b42b2edf">subtrack</a> &amp;&amp;</div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#ae5af51709faf749501d44b242a57481c">captureIndex</a> == key-&gt;<a class="code hl_variable" href="structFluxCaptureKey.html#afa1b8117c16006ec9f4ea99a573c12c2">captureIndex</a>)</div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> <span class="keywordflow">return</span> entry;</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> }</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> </div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span>}</div>
</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span></div>
<div class="foldopen" id="foldopen00865" data-start="{" data-end="}">
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"><a class="line" href="flux_8c.html#ac9145d7789804958ea126d136a45231b"> 865</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="flux_8c.html#ac9145d7789804958ea126d136a45231b">read_flux_payload_header</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, uint64_t payload_offset,</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> <a class="code hl_struct" href="structDataStreamPayloadHeader.html">DataStreamPayloadHeader</a> *header)</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span>{</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> <span class="keywordflow">if</span>(fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, payload_offset, SEEK_SET) &lt; 0)</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> {</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not seek to flux payload at offset %&quot;</span> PRIu64, payload_offset);</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_flux_payload_header() = AARUF_ERROR_CANNOT_READ_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> }</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span> </div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> <span class="keywordtype">long</span> file_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> <span class="keywordflow">if</span>(file_position &lt; 0 || (uint64_t)file_position != payload_offset)</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> {</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid flux payload position (expected %&quot;</span> PRIu64 <span class="stringliteral">&quot;, got %ld)&quot;</span>, payload_offset, file_position);</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_flux_payload_header() = AARUF_ERROR_CANNOT_READ_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> }</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> </div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> <span class="keywordtype">size_t</span> read_bytes = fread(header, 1, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDataStreamPayloadHeader.html">DataStreamPayloadHeader</a>), ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> <span class="keywordflow">if</span>(read_bytes != <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDataStreamPayloadHeader.html">DataStreamPayloadHeader</a>))</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> {</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read flux payload header at offset %&quot;</span> PRIu64, payload_offset);</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_flux_payload_header() = AARUF_ERROR_CANNOT_READ_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> }</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> </div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> <span class="keywordflow">if</span>(header-&gt;<a class="code hl_variable" href="structDataStreamPayloadHeader.html#aade6939bd84d33e4869785d7d412d3c7">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3afbe1bc6eb5c4d2258b9e885c8e89513d">DataStreamPayloadBlock</a>)</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> {</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect identifier 0x%08&quot;</span> PRIx32 <span class="stringliteral">&quot; for flux payload at offset %&quot;</span> PRIu64, header-&gt;<a class="code hl_variable" href="structDataStreamPayloadHeader.html#aade6939bd84d33e4869785d7d412d3c7">identifier</a>,</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> payload_offset);</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_flux_payload_header() = AARUF_ERROR_CANNOT_READ_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> }</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> </div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> <span class="keywordflow">if</span>(header-&gt;<a class="code hl_variable" href="structDataStreamPayloadHeader.html#a1b7498a80a254f1203bb8705221261f8">dataType</a> != <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a390407e323208ceb978198c5d993ea80">FluxData</a>)</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> {</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect data type %u for flux payload at offset %&quot;</span> PRIu64 <span class="stringliteral">&quot; (expected FluxData)&quot;</span>, header-&gt;<a class="code hl_variable" href="structDataStreamPayloadHeader.html#a1b7498a80a254f1203bb8705221261f8">dataType</a>,</div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> payload_offset);</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_flux_payload_header() = AARUF_ERROR_CANNOT_READ_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> }</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> </div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span>}</div>
</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span></div>
<div class="foldopen" id="foldopen00921" data-start="{" data-end="}">
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"><a class="line" href="flux_8c.html#a99b0c18957e1cb755c1c5e967bb9b97b"> 921</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="flux_8c.html#a99b0c18957e1cb755c1c5e967bb9b97b">read_uncompressed_payload</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, <span class="keywordtype">size_t</span> cmp_length, <span class="keywordtype">size_t</span> raw_length,</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> uint8_t **cmp_buffer, uint8_t **payload)</div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span>{</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> <span class="keywordflow">if</span>(cmp_length != raw_length)</div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span> {</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux payload lengths mismatch for uncompressed block (cmp=%zu, raw=%zu)&quot;</span>, cmp_length, raw_length);</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_uncompressed_payload() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ac9f4e38e8d5a1f940c9cd0c7f6788c37">AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</a>;</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> }</div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> </div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> <span class="keywordflow">if</span>(cmp_length == 0)</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> {</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> *cmp_buffer = NULL;</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> *payload = NULL;</div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> }</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> </div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> *cmp_buffer = (uint8_t *)malloc(cmp_length);</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> <span class="keywordflow">if</span>(*cmp_buffer == NULL)</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span> {</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate %zu bytes for flux payload&quot;</span>, cmp_length);</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_uncompressed_payload() = AARUF_ERROR_NOT_ENOUGH_MEMORY\n&quot;</span>);</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span> }</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"> 945</span> </div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno"> 946</span> <span class="keywordtype">size_t</span> read_bytes = fread(*cmp_buffer, 1, cmp_length, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"> 947</span> <span class="keywordflow">if</span>(read_bytes != cmp_length)</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span> {</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read %zu bytes of flux payload&quot;</span>, cmp_length);</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span> free(*cmp_buffer);</div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"> 951</span> *cmp_buffer = NULL;</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_uncompressed_payload() = AARUF_ERROR_CANNOT_READ_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> }</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> </div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> *payload = *cmp_buffer;</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span>}</div>
</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span></div>
<div class="foldopen" id="foldopen00971" data-start="{" data-end="}">
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"><a class="line" href="flux_8c.html#a8b2e6d3cc3b80a282d15c2a737eb427c"> 971</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="flux_8c.html#a8b2e6d3cc3b80a282d15c2a737eb427c">read_lzma_compressed_payload</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, <span class="keywordtype">size_t</span> cmp_length, <span class="keywordtype">size_t</span> raw_length,</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> uint8_t **cmp_buffer, uint8_t **payload)</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span>{</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> <span class="keywordflow">if</span>(cmp_length &lt;= <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>)</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span> {</div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux payload compressed length %zu too small for LZMA&quot;</span>, cmp_length);</div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_lzma_compressed_payload() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ac9f4e38e8d5a1f940c9cd0c7f6788c37">AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</a>;</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> }</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> </div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span> *cmp_buffer = (uint8_t *)malloc(cmp_length);</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> <span class="keywordflow">if</span>(*cmp_buffer == NULL)</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> {</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate %zu bytes for flux payload&quot;</span>, cmp_length);</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_lzma_compressed_payload() = AARUF_ERROR_NOT_ENOUGH_MEMORY\n&quot;</span>);</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> }</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> </div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> <span class="keywordtype">size_t</span> read_bytes = fread(*cmp_buffer, 1, cmp_length, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> <span class="keywordflow">if</span>(read_bytes != cmp_length)</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> {</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read %zu bytes of flux payload&quot;</span>, cmp_length);</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> free(*cmp_buffer);</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> *cmp_buffer = NULL;</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_lzma_compressed_payload() = AARUF_ERROR_CANNOT_READ_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> }</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> </div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> <span class="keywordflow">if</span>(raw_length == 0)</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> {</div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> *payload = NULL;</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> }</div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> </div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> *payload = (uint8_t *)malloc(raw_length);</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> <span class="keywordflow">if</span>(*payload == NULL)</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> {</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate %zu bytes for decompressed flux payload&quot;</span>, raw_length);</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> free(*cmp_buffer);</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> *cmp_buffer = NULL;</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_lzma_compressed_payload() = AARUF_ERROR_NOT_ENOUGH_MEMORY\n&quot;</span>);</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> }</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> </div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> <span class="keywordtype">size_t</span> cmp_stream_len = cmp_length - <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> <span class="keywordtype">size_t</span> dst_len = raw_length;</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <span class="keywordtype">size_t</span> src_len = cmp_stream_len;</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> <span class="keyword">const</span> uint8_t *cmp_props = *cmp_buffer;</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <span class="keyword">const</span> uint8_t *cmp_stream = *cmp_buffer + <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> int32_t error_no =</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> <a class="code hl_function" href="decls_8h.html#a12f3cbc43c2f57a11fbba32a71ba2704">aaruf_lzma_decode_buffer</a>(*payload, &amp;dst_len, cmp_stream, &amp;src_len, cmp_props, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>);</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> <span class="keywordflow">if</span>(error_no != 0 || dst_len != raw_length)</div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> {</div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;LZMA decompression failed for flux payload (err=%d, dst=%zu/%zu)&quot;</span>, error_no, dst_len, raw_length);</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> free(*payload);</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> free(*cmp_buffer);</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> *payload = NULL;</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> *cmp_buffer = NULL;</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting read_lzma_compressed_payload() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK\n&quot;</span>);</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ac9f4e38e8d5a1f940c9cd0c7f6788c37">AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</a>;</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> }</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> </div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span>}</div>
</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span></div>
<div class="foldopen" id="foldopen01048" data-start="{" data-end="}">
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"><a class="line" href="flux_8c.html#a0c36f4d6d0d0cec73810133a28c0eb6f"> 1048</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="flux_8c.html#a0c36f4d6d0d0cec73810133a28c0eb6f">validate_flux_payload_crcs</a>(<span class="keyword">const</span> uint8_t *cmp_buffer, <span class="keywordtype">size_t</span> cmp_length, <span class="keyword">const</span> uint8_t *payload,</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> <span class="keywordtype">size_t</span> raw_length, uint64_t expected_cmp_crc, uint64_t expected_raw_crc)</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span>{</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> uint64_t cmp_crc = 0;</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> <span class="keywordflow">if</span>(cmp_length != 0 &amp;&amp; cmp_buffer != NULL) cmp_crc = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(cmp_buffer, cmp_length);</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> </div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> <span class="keywordflow">if</span>(cmp_crc != expected_cmp_crc)</div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> {</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux payload compressed CRC mismatch (expected 0x%&quot;</span> PRIx64 <span class="stringliteral">&quot;, got 0x%&quot;</span> PRIx64 <span class="stringliteral">&quot;)&quot;</span>, expected_cmp_crc,</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> cmp_crc);</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting validate_flux_payload_crcs() = AARUF_ERROR_INVALID_BLOCK_CRC\n&quot;</span>);</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa8dcb9cad962fc5f5f84d5e1ec41fae7">AARUF_ERROR_INVALID_BLOCK_CRC</a>;</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> }</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> </div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> uint64_t raw_crc = 0;</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> <span class="keywordflow">if</span>(raw_length != 0 &amp;&amp; payload != NULL) raw_crc = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(payload, raw_length);</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span> </div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> <span class="keywordflow">if</span>(raw_crc != expected_raw_crc)</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> {</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux payload raw CRC mismatch (expected 0x%&quot;</span> PRIx64 <span class="stringliteral">&quot;, got 0x%&quot;</span> PRIx64 <span class="stringliteral">&quot;)&quot;</span>, expected_raw_crc, raw_crc);</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting validate_flux_payload_crcs() = AARUF_ERROR_INVALID_BLOCK_CRC\n&quot;</span>);</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa8dcb9cad962fc5f5f84d5e1ec41fae7">AARUF_ERROR_INVALID_BLOCK_CRC</a>;</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> }</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> </div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span>}</div>
</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span></div>
<div class="foldopen" id="foldopen01088" data-start="{" data-end="}">
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"><a class="line" href="flux_8c.html#a2e3b7343a847fe5dac1d25bdf7f82b26"> 1088</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="flux_8c.html#a2e3b7343a847fe5dac1d25bdf7f82b26">extract_flux_data_buffers</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *flux_entry, <span class="keyword">const</span> uint8_t *payload, <span class="keywordtype">size_t</span> raw_length,</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span> uint8_t *data_data, uint32_t *data_length, uint8_t *index_data,</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> uint32_t *index_length)</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>{</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> <span class="keywordflow">if</span>(flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#aaaaaf686bec81c632f8de3131b540946">indexOffset</a> &gt; raw_length)</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> {</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux index offset %&quot;</span> PRIu64 <span class="stringliteral">&quot; beyond payload length %zu&quot;</span>, flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#aaaaaf686bec81c632f8de3131b540946">indexOffset</a>, raw_length);</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting extract_flux_data_buffers() = AARUF_ERROR_INVALID_BLOCK_CRC\n&quot;</span>);</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa8dcb9cad962fc5f5f84d5e1ec41fae7">AARUF_ERROR_INVALID_BLOCK_CRC</a>;</div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span> }</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span> </div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> uint64_t data_length_required64 = flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#aaaaaf686bec81c632f8de3131b540946">indexOffset</a>;</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> uint64_t index_length_required64 = raw_length - flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#aaaaaf686bec81c632f8de3131b540946">indexOffset</a>;</div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span> </div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span> <span class="keywordflow">if</span>(data_length_required64 &gt; UINT32_MAX || index_length_required64 &gt; UINT32_MAX)</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> {</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Flux payload section length exceeds 32-bit limits (data=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, index=%&quot;</span> PRIu64 <span class="stringliteral">&quot;)&quot;</span>,</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> data_length_required64, index_length_required64);</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting extract_flux_data_buffers() = AARUF_ERROR_INCORRECT_DATA_SIZE\n&quot;</span>);</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> }</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> </div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> uint32_t data_required = (uint32_t)data_length_required64;</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> uint32_t index_required = (uint32_t)index_length_required64;</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> </div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span> uint32_t data_capacity = *data_length;</div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> uint32_t index_capacity = *index_length;</div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> </div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span> *data_length = data_required;</div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> *index_length = index_required;</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> </div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span> <span class="keywordflow">if</span>(data_data == NULL || index_data == NULL || data_capacity &lt; data_required || index_capacity &lt; index_required)</div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> {</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Returning required flux capture sizes (data=%u, index=%u)\n&quot;</span>, data_required, index_required);</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span> }</div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> </div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> <span class="keyword">const</span> uint8_t *index_ptr = payload ? payload + data_length_required64 : NULL;</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> <span class="keyword">const</span> uint8_t *data_ptr = payload;</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> </div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> <span class="keywordflow">if</span>(data_required != 0 &amp;&amp; data_ptr != NULL) memcpy(data_data, data_ptr, data_required);</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> <span class="keywordflow">if</span>(index_required != 0 &amp;&amp; index_ptr != NULL) memcpy(index_data, index_ptr, index_required);</div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> </div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span>}</div>
</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span></div>
<div class="foldopen" id="foldopen01201" data-start="{" data-end="}">
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"><a class="line" href="decls_8h.html#a4592e2f67d77e1ee35d14cfca412add0"> 1201</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="flux_8c.html#a4592e2f67d77e1ee35d14cfca412add0">aaruf_read_flux_capture</a>(<span class="keywordtype">void</span> *context, uint32_t head, uint16_t track, uint8_t subtrack,</div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span> uint32_t capture_index, uint8_t *index_data,</div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span> uint32_t *index_length, uint8_t *data_data, uint32_t *data_length)</div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span>{</div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_read_flux_capture(%p, %u, %u, %u, %u, %p, %p, %p, %p)&quot;</span>, context, head, track, subtrack,</div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span> capture_index, index_data, index_length, data_data, data_length);</div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span> </div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span> {</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> }</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span> </div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = (<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *)context;</div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span> </div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span> {</div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> }</div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span> </div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span> <span class="comment">// Lazy load flux entries if not already loaded</span></div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span> int32_t load_res = <a class="code hl_function" href="flux_8c.html#a91c222a3e35c47e7a2a13a864d85bc03">ensure_flux_entries_loaded</a>(ctx);</div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span> <span class="keywordflow">if</span>(load_res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span> {</div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = %d&quot;</span>, load_res);</div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span> <span class="keywordflow">return</span> load_res;</div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span> }</div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span> </div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">entries</a> == 0 || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">flux_entries</a> == NULL)</div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span> {</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_ERROR_FLUX_DATA_NOT_FOUND&quot;</span>);</div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae74707aa7fa4c8d8c3b717514a5f5c7c">AARUF_ERROR_FLUX_DATA_NOT_FOUND</a>;</div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span> }</div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span> </div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span> <span class="keywordflow">if</span>(index_length == NULL || data_length == NULL)</div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span> {</div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;index_length or data_length pointers are NULL&quot;</span>);</div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_ERROR_BUFFER_TOO_SMALL\n&quot;</span>);</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span> }</div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span> </div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a> == NULL)</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> {</div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid image stream&quot;</span>);</div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_ERROR_NOT_AARUFORMAT\n&quot;</span>);</div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span> }</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> </div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> <a class="code hl_struct" href="structFluxCaptureKey.html">FluxCaptureKey</a> key = {head, track, subtrack, capture_index};</div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span> <span class="keyword">const</span> <a class="code hl_struct" href="structFluxEntry.html">FluxEntry</a> *flux_entry = <a class="code hl_function" href="flux_8c.html#a11995aba3f4efbc10d6b41a628c08e5d">find_flux_entry_by_key</a>(ctx, &amp;key);</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span> <span class="keywordflow">if</span>(flux_entry == NULL)</div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> {</div>
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"> 1256</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_ERROR_FLUX_DATA_NOT_FOUND\n&quot;</span>);</div>
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae74707aa7fa4c8d8c3b717514a5f5c7c">AARUF_ERROR_FLUX_DATA_NOT_FOUND</a>;</div>
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span> }</div>
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span> </div>
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Requested flux capture: head=%u track=%u subtrack=%u captureIndex=%u payloadOffset=%&quot;</span> PRIu64 <span class="stringliteral">&quot;\n&quot;</span>,</div>
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span> flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a31cafff6f54acc9e019da447e94ace4a">head</a>, flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a46108bba60946e7b7d4f41160e3dfd86">track</a>, flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#abd12c00010d82cd83820dd3405b7b860">subtrack</a>, flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#ae5af51709faf749501d44b242a57481c">captureIndex</a>,</div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span> flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a3f5949d0feb9bdcf62afeb1acb1fa009">payloadOffset</a>);</div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span> </div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span> <span class="comment">// Get block alignment shift from FluxHeader</span></div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"> 1265</span> uint8_t block_alignment_shift = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">flux_data_header</a>.<a class="code hl_variable" href="structFluxHeader.html#a8e2f7fb0153155438629cda42cb6f329">blockAlignmentShift</a>;</div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span> </div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span> <span class="comment">// Convert payloadOffset from block-aligned units to absolute file offset</span></div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> <span class="comment">// payloadOffset is stored divided by (1 &lt;&lt; blockAlignmentShift), consistent with DDT</span></div>
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span> uint64_t absolute_payload_offset = flux_entry-&gt;<a class="code hl_variable" href="structFluxEntry.html#a3f5949d0feb9bdcf62afeb1acb1fa009">payloadOffset</a> &lt;&lt; block_alignment_shift;</div>
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span> </div>
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span> <a class="code hl_struct" href="structDataStreamPayloadHeader.html">DataStreamPayloadHeader</a> payload_header;</div>
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span> int32_t res = <a class="code hl_function" href="flux_8c.html#ac9145d7789804958ea126d136a45231b">read_flux_payload_header</a>(ctx, absolute_payload_offset, &amp;payload_header);</div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span> {</div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = %d\n&quot;</span>, res);</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span> }</div>
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span> </div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> <span class="keyword">const</span> <a class="code hl_enumeration" href="enums_8h.html#affec749ed88365143745313ae9168263">CompressionType</a> compression = (<a class="code hl_enumeration" href="enums_8h.html#affec749ed88365143745313ae9168263">CompressionType</a>)payload_header.<a class="code hl_variable" href="structDataStreamPayloadHeader.html#acb6524ee97c11cbd9934dddcf791478a">compression</a>;</div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span> uint8_t *cmp_buffer = NULL;</div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span> uint8_t *payload = NULL;</div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span> <span class="keywordtype">size_t</span> cmp_length = payload_header.<a class="code hl_variable" href="structDataStreamPayloadHeader.html#a55c9590fb1c3d87a9cce3b389826c1a5">cmpLength</a>;</div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span> <span class="keywordtype">size_t</span> raw_length = payload_header.<a class="code hl_variable" href="structDataStreamPayloadHeader.html#ad36cd6ef72854188450049c99b731273">length</a>;</div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span> </div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span> <span class="keywordflow">if</span>(compression == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span> {</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span> res = <a class="code hl_function" href="flux_8c.html#a99b0c18957e1cb755c1c5e967bb9b97b">read_uncompressed_payload</a>(ctx, cmp_length, raw_length, &amp;cmp_buffer, &amp;payload);</div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span> }</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(compression == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>)</div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span> {</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span> res = <a class="code hl_function" href="flux_8c.html#a8b2e6d3cc3b80a282d15c2a737eb427c">read_lzma_compressed_payload</a>(ctx, cmp_length, raw_length, &amp;cmp_buffer, &amp;payload);</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span> }</div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span> {</div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Unsupported flux payload compression type %u&quot;</span>, payload_header.<a class="code hl_variable" href="structDataStreamPayloadHeader.html#acb6524ee97c11cbd9934dddcf791478a">compression</a>);</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_ERROR_UNSUPPORTED_COMPRESSION\n&quot;</span>);</div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aec106e533b79916d14e4d48a3d95e8c8">AARUF_ERROR_UNSUPPORTED_COMPRESSION</a>;</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span> }</div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span> </div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span> {</div>
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = %d\n&quot;</span>, res);</div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span> }</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span> </div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span> res = <a class="code hl_function" href="flux_8c.html#a0c36f4d6d0d0cec73810133a28c0eb6f">validate_flux_payload_crcs</a>(cmp_buffer, cmp_length, payload, raw_length, payload_header.<a class="code hl_variable" href="structDataStreamPayloadHeader.html#a6b72345551c540a0c36c971f4374eb0e">cmpCrc64</a>,</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span> payload_header.<a class="code hl_variable" href="structDataStreamPayloadHeader.html#aea3724bf5786add9715363dbc67671a8">crc64</a>);</div>
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span> {</div>
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span> <span class="keywordflow">if</span>(payload != NULL &amp;&amp; payload != cmp_buffer) free(payload);</div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span> <span class="keywordflow">if</span>(cmp_buffer != NULL) free(cmp_buffer);</div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = %d\n&quot;</span>, res);</div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span> }</div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span> </div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span> res = <a class="code hl_function" href="flux_8c.html#a2e3b7343a847fe5dac1d25bdf7f82b26">extract_flux_data_buffers</a>(flux_entry, payload, raw_length, data_data, data_length, index_data,</div>
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span> index_length);</div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span> {</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span> <span class="keywordflow">if</span>(payload != NULL &amp;&amp; payload != cmp_buffer) free(payload);</div>
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"> 1321</span> <span class="keywordflow">if</span>(cmp_buffer != NULL) free(cmp_buffer);</div>
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = %d\n&quot;</span>, res);</div>
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span> }</div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span> </div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span> <span class="keywordflow">if</span>(payload != NULL &amp;&amp; payload != cmp_buffer) free(payload);</div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span> <span class="keywordflow">if</span>(cmp_buffer != NULL) free(cmp_buffer);</div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span> </div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_flux_capture() = AARUF_STATUS_OK\n&quot;</span>);</div>
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span>}</div>
</div>
<div class="ttc" id="aconsts_8h_html"><div class="ttname"><a href="consts_8h.html">consts.h</a></div><div class="ttdoc">Core public constants and compiletime limits for the Aaru container format implementation.</div></div>
<div class="ttc" id="aconsts_8h_html_a25fd08252b97a0230d3efc899bddd240"><div class="ttname"><a href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a></div><div class="ttdeci">#define LZMA_PROPERTIES_LENGTH</div><div class="ttdoc">Size in bytes of the fixed LZMA properties header (lc/lp/pb + dictionary size).</div><div class="ttdef"><b>Definition</b> <a href="consts_8h_source.html#l00082">consts.h:82</a></div></div>
<div class="ttc" id="aconsts_8h_html_a3c3ba66fe2b547655c9e4b16a1ba519a"><div class="ttname"><a href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a></div><div class="ttdeci">#define AARU_MAGIC</div><div class="ttdoc">Magic identifier for AaruFormat container (ASCII &quot;AARUFRMT&quot;).</div><div class="ttdef"><b>Definition</b> <a href="consts_8h_source.html#l00064">consts.h:64</a></div></div>
<div class="ttc" id="acontext_8h_html"><div class="ttname"><a href="context_8h.html">context.h</a></div><div class="ttdoc">Central runtime context structures for libaaruformat (image state, caches, checksum buffers).</div></div>
<div class="ttc" id="adecls_8h_html"><div class="ttname"><a href="decls_8h.html">decls.h</a></div></div>
<div class="ttc" id="adecls_8h_html_a018e0da1c1f7e4f6187a982c0e40e056"><div class="ttname"><a href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a></div><div class="ttdeci">#define AARU_CALL</div><div class="ttdef"><b>Definition</b> <a href="decls_8h_source.html#l00046">decls.h:46</a></div></div>
<div class="ttc" id="adecls_8h_html_a0fee4834bf0747bcd933c4e754aa4692"><div class="ttname"><a href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a></div><div class="ttdeci">uint64_t aaruf_crc64_data(const uint8_t *data, uint32_t len)</div><div class="ttdef"><b>Definition</b> <a href="crc64_8c_source.html#l00160">crc64.c:160</a></div></div>
<div class="ttc" id="adecls_8h_html_a12f3cbc43c2f57a11fbba32a71ba2704"><div class="ttname"><a href="decls_8h.html#a12f3cbc43c2f57a11fbba32a71ba2704">aaruf_lzma_decode_buffer</a></div><div class="ttdeci">int32_t aaruf_lzma_decode_buffer(uint8_t *dst_buffer, size_t *dst_size, const uint8_t *src_buffer, size_t *src_size, const uint8_t *props, size_t props_size)</div><div class="ttdoc">Decodes an LZMA-compressed buffer.</div><div class="ttdef"><b>Definition</b> <a href="lzma_8c_source.html#l00039">lzma.c:39</a></div></div>
<div class="ttc" id="adecls_8h_html_a9001412c35f3c92d3a9320d27b0d97f9"><div class="ttname"><a href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a></div><div class="ttdeci">#define AARU_EXPORT</div><div class="ttdef"><b>Definition</b> <a href="decls_8h_source.html#l00055">decls.h:55</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3aeaee7c0287e406b4b09ad4b8954e46a3"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aeaee7c0287e406b4b09ad4b8954e46a3">FluxDataBlock</a></div><div class="ttdeci">@ FluxDataBlock</div><div class="ttdoc">Block containing flux data metadata.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00164">enums.h:164</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3afbe1bc6eb5c4d2258b9e885c8e89513d"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3afbe1bc6eb5c4d2258b9e885c8e89513d">DataStreamPayloadBlock</a></div><div class="ttdeci">@ DataStreamPayloadBlock</div><div class="ttdoc">Block containing compressed data stream payload (e.g., flux data, bitstreams).</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00165">enums.h:165</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a390407e323208ceb978198c5d993ea80"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a390407e323208ceb978198c5d993ea80">FluxData</a></div><div class="ttdeci">@ FluxData</div><div class="ttdoc">Flux data.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00134">enums.h:134</a></div></div>
<div class="ttc" id="aenums_8h_html_affec749ed88365143745313ae9168263"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263">CompressionType</a></div><div class="ttdeci">CompressionType</div><div class="ttdoc">List of known compression types.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00031">enums.h:32</a></div></div>
<div class="ttc" id="aenums_8h_html_affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a></div><div class="ttdeci">@ Lzma</div><div class="ttdoc">LZMA compression.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00034">enums.h:34</a></div></div>
<div class="ttc" id="aenums_8h_html_affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a></div><div class="ttdeci">@ None</div><div class="ttdoc">Not compressed.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00033">enums.h:33</a></div></div>
<div class="ttc" id="aerrors_8h_html"><div class="ttname"><a href="errors_8h.html">errors.h</a></div><div class="ttdoc">Public error and status code definitions for libaaruformat.</div></div>
<div class="ttc" id="aerrors_8h_html_a1d6e49f7e8a1fa489efa0a582e90b5de"><div class="ttname"><a href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a></div><div class="ttdeci">#define AARUF_STATUS_OK</div><div class="ttdoc">Sector present and read without uncorrectable errors.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00077">errors.h:77</a></div></div>
<div class="ttc" id="aerrors_8h_html_a1df49eaa19eaa14891b6aaab966a9bc6"><div class="ttname"><a href="errors_8h.html#a1df49eaa19eaa14891b6aaab966a9bc6">AARUF_READ_ONLY</a></div><div class="ttdeci">#define AARUF_READ_ONLY</div><div class="ttdoc">Operation requires write mode but context is read-only.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00061">errors.h:61</a></div></div>
<div class="ttc" id="aerrors_8h_html_a35a771e3648bf971a004d4b2be9b5ec4"><div class="ttname"><a href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a></div><div class="ttdeci">#define AARUF_ERROR_NOT_ENOUGH_MEMORY</div><div class="ttdoc">Memory allocation failure (critical).</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00048">errors.h:48</a></div></div>
<div class="ttc" id="aerrors_8h_html_a67753dacbd0ffdd397e563a8a5ecd271"><div class="ttname"><a href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a></div><div class="ttdeci">#define AARUF_ERROR_CANNOT_READ_BLOCK</div><div class="ttdoc">Generic block read failure (seek/read error).</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00046">errors.h:46</a></div></div>
<div class="ttc" id="aerrors_8h_html_a8fc3ecb14777e72bebad62084b6caf16"><div class="ttname"><a href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a></div><div class="ttdeci">#define AARUF_ERROR_INCORRECT_DATA_SIZE</div><div class="ttdoc">Data size does not match expected size.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00065">errors.h:65</a></div></div>
<div class="ttc" id="aerrors_8h_html_aa8dcb9cad962fc5f5f84d5e1ec41fae7"><div class="ttname"><a href="errors_8h.html#aa8dcb9cad962fc5f5f84d5e1ec41fae7">AARUF_ERROR_INVALID_BLOCK_CRC</a></div><div class="ttdeci">#define AARUF_ERROR_INVALID_BLOCK_CRC</div><div class="ttdoc">CRC64 mismatch indicating corruption.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00057">errors.h:57</a></div></div>
<div class="ttc" id="aerrors_8h_html_abb63e240b11d790da83bd34507b57851"><div class="ttname"><a href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a></div><div class="ttdeci">#define AARUF_ERROR_NOT_AARUFORMAT</div><div class="ttdoc">Input file/stream failed magic or structural validation.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00040">errors.h:40</a></div></div>
<div class="ttc" id="aerrors_8h_html_ac9f4e38e8d5a1f940c9cd0c7f6788c37"><div class="ttname"><a href="errors_8h.html#ac9f4e38e8d5a1f940c9cd0c7f6788c37">AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</a></div><div class="ttdeci">#define AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</div><div class="ttdoc">Decompression routine failed or size mismatch.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00056">errors.h:56</a></div></div>
<div class="ttc" id="aerrors_8h_html_ae74707aa7fa4c8d8c3b717514a5f5c7c"><div class="ttname"><a href="errors_8h.html#ae74707aa7fa4c8d8c3b717514a5f5c7c">AARUF_ERROR_FLUX_DATA_NOT_FOUND</a></div><div class="ttdeci">#define AARUF_ERROR_FLUX_DATA_NOT_FOUND</div><div class="ttdoc">Requested flux data not present in image.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00071">errors.h:71</a></div></div>
<div class="ttc" id="aerrors_8h_html_ae7eea5936a22100db46aac3e4312cdae"><div class="ttname"><a href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a></div><div class="ttdeci">#define AARUF_ERROR_BUFFER_TOO_SMALL</div><div class="ttdoc">Caller-supplied buffer insufficient for data.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00049">errors.h:49</a></div></div>
<div class="ttc" id="aerrors_8h_html_aec106e533b79916d14e4d48a3d95e8c8"><div class="ttname"><a href="errors_8h.html#aec106e533b79916d14e4d48a3d95e8c8">AARUF_ERROR_UNSUPPORTED_COMPRESSION</a></div><div class="ttdeci">#define AARUF_ERROR_UNSUPPORTED_COMPRESSION</div><div class="ttdoc">Block marked with unsupported compression algorithm.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00047">errors.h:47</a></div></div>
<div class="ttc" id="aflux_8c_html_a0c36f4d6d0d0cec73810133a28c0eb6f"><div class="ttname"><a href="flux_8c.html#a0c36f4d6d0d0cec73810133a28c0eb6f">validate_flux_payload_crcs</a></div><div class="ttdeci">static int32_t validate_flux_payload_crcs(const uint8_t *cmp_buffer, size_t cmp_length, const uint8_t *payload, size_t raw_length, uint64_t expected_cmp_crc, uint64_t expected_raw_crc)</div><div class="ttdoc">Validate CRC64 checksums for a flux payload block.</div><div class="ttdef"><b>Definition</b> <a href="#l01048">flux.c:1048</a></div></div>
<div class="ttc" id="aflux_8c_html_a11995aba3f4efbc10d6b41a628c08e5d"><div class="ttname"><a href="flux_8c.html#a11995aba3f4efbc10d6b41a628c08e5d">find_flux_entry_by_key</a></div><div class="ttdeci">static const FluxEntry * find_flux_entry_by_key(const aaruformat_context *ctx, const FluxCaptureKey *key)</div><div class="ttdoc">Find a flux entry by its identifier key.</div><div class="ttdef"><b>Definition</b> <a href="#l00833">flux.c:833</a></div></div>
<div class="ttc" id="aflux_8c_html_a2e3b7343a847fe5dac1d25bdf7f82b26"><div class="ttname"><a href="flux_8c.html#a2e3b7343a847fe5dac1d25bdf7f82b26">extract_flux_data_buffers</a></div><div class="ttdeci">static int32_t extract_flux_data_buffers(const FluxEntry *flux_entry, const uint8_t *payload, size_t raw_length, uint8_t *data_data, uint32_t *data_length, uint8_t *index_data, uint32_t *index_length)</div><div class="ttdoc">Extract data and index buffers from decompressed payload and copy to output buffers.</div><div class="ttdef"><b>Definition</b> <a href="#l01088">flux.c:1088</a></div></div>
<div class="ttc" id="aflux_8c_html_a3fd05dad98e7dedb15e256070bd73a88"><div class="ttname"><a href="flux_8c.html#a3fd05dad98e7dedb15e256070bd73a88">flux_map_add</a></div><div class="ttdeci">static int flux_map_add(aaruformat_context *ctx, const FluxCaptureKey *key, uint32_t index)</div><div class="ttdoc">Add or update a flux capture entry in the lookup map.</div><div class="ttdef"><b>Definition</b> <a href="#l00122">flux.c:122</a></div></div>
<div class="ttc" id="aflux_8c_html_a430617e60dee0b72e0ae5635c69f9a6c"><div class="ttname"><a href="flux_8c.html#a430617e60dee0b72e0ae5635c69f9a6c">aaruf_clear_flux_captures</a></div><div class="ttdeci">int32_t aaruf_clear_flux_captures(void *context)</div><div class="ttdoc">Clear all flux captures from the context.</div><div class="ttdef"><b>Definition</b> <a href="#l00790">flux.c:790</a></div></div>
<div class="ttc" id="aflux_8c_html_a4592e2f67d77e1ee35d14cfca412add0"><div class="ttname"><a href="flux_8c.html#a4592e2f67d77e1ee35d14cfca412add0">aaruf_read_flux_capture</a></div><div class="ttdeci">int32_t aaruf_read_flux_capture(void *context, uint32_t head, uint16_t track, uint8_t subtrack, uint32_t capture_index, uint8_t *index_data, uint32_t *index_length, uint8_t *data_data, uint32_t *data_length)</div><div class="ttdoc">Read a specific flux capture&#39;s data and index buffers from the image.</div><div class="ttdef"><b>Definition</b> <a href="#l01201">flux.c:1201</a></div></div>
<div class="ttc" id="aflux_8c_html_a548a8cb21d02fded8a5084c96bbf5e30"><div class="ttname"><a href="flux_8c.html#a548a8cb21d02fded8a5084c96bbf5e30">flux_capture_record_dtor</a></div><div class="ttdeci">static void flux_capture_record_dtor(void *element)</div><div class="ttdoc">Destructor callback for FluxCaptureRecord elements in a utarray.</div><div class="ttdef"><b>Definition</b> <a href="#l00054">flux.c:54</a></div></div>
<div class="ttc" id="aflux_8c_html_a5f50a859c1849d13a6f4d26d904fb458"><div class="ttname"><a href="flux_8c.html#a5f50a859c1849d13a6f4d26d904fb458">aaruf_get_flux_captures</a></div><div class="ttdeci">int32_t aaruf_get_flux_captures(void *context, uint8_t *buffer, size_t *length)</div><div class="ttdoc">Retrieve metadata for all flux captures in the image.</div><div class="ttdef"><b>Definition</b> <a href="#l00497">flux.c:497</a></div></div>
<div class="ttc" id="aflux_8c_html_a608a4570f8f6e4a8b7d97dd2fdaf8050"><div class="ttname"><a href="flux_8c.html#a608a4570f8f6e4a8b7d97dd2fdaf8050">flux_map_clear</a></div><div class="ttdeci">static void flux_map_clear(aaruformat_context *ctx)</div><div class="ttdoc">Clear and deallocate the flux capture lookup map.</div><div class="ttdef"><b>Definition</b> <a href="#l00084">flux.c:84</a></div></div>
<div class="ttc" id="aflux_8c_html_a8b2e6d3cc3b80a282d15c2a737eb427c"><div class="ttname"><a href="flux_8c.html#a8b2e6d3cc3b80a282d15c2a737eb427c">read_lzma_compressed_payload</a></div><div class="ttdeci">static int32_t read_lzma_compressed_payload(const aaruformat_context *ctx, size_t cmp_length, size_t raw_length, uint8_t **cmp_buffer, uint8_t **payload)</div><div class="ttdoc">Read and decompress an LZMA-compressed flux payload from the image stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00971">flux.c:971</a></div></div>
<div class="ttc" id="aflux_8c_html_a91c222a3e35c47e7a2a13a864d85bc03"><div class="ttname"><a href="flux_8c.html#a91c222a3e35c47e7a2a13a864d85bc03">ensure_flux_entries_loaded</a></div><div class="ttdeci">static int32_t ensure_flux_entries_loaded(aaruformat_context *ctx)</div><div class="ttdoc">Lazy load flux data block if not already loaded.</div><div class="ttdef"><b>Definition</b> <a href="#l00415">flux.c:415</a></div></div>
<div class="ttc" id="aflux_8c_html_a99b0c18957e1cb755c1c5e967bb9b97b"><div class="ttname"><a href="flux_8c.html#a99b0c18957e1cb755c1c5e967bb9b97b">read_uncompressed_payload</a></div><div class="ttdeci">static int32_t read_uncompressed_payload(const aaruformat_context *ctx, size_t cmp_length, size_t raw_length, uint8_t **cmp_buffer, uint8_t **payload)</div><div class="ttdoc">Read an uncompressed flux payload from the image stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00921">flux.c:921</a></div></div>
<div class="ttc" id="aflux_8c_html_aac6f1ed284f46388319d99bff2a1f409"><div class="ttname"><a href="flux_8c.html#aac6f1ed284f46388319d99bff2a1f409">process_flux_data_block</a></div><div class="ttdeci">void process_flux_data_block(aaruformat_context *ctx, const IndexEntry *entry)</div><div class="ttdoc">Parse and integrate a Flux Data block from the image stream into the context.</div><div class="ttdef"><b>Definition</b> <a href="#l00307">flux.c:307</a></div></div>
<div class="ttc" id="aflux_8c_html_ac9145d7789804958ea126d136a45231b"><div class="ttname"><a href="flux_8c.html#ac9145d7789804958ea126d136a45231b">read_flux_payload_header</a></div><div class="ttdeci">static int32_t read_flux_payload_header(const aaruformat_context *ctx, uint64_t payload_offset, DataStreamPayloadHeader *header)</div><div class="ttdoc">Read and validate a flux payload block header from the image stream.</div><div class="ttdef"><b>Definition</b> <a href="#l00865">flux.c:865</a></div></div>
<div class="ttc" id="aflux_8c_html_ae11fa81212d9e363d8761e849859bab8"><div class="ttname"><a href="flux_8c.html#ae11fa81212d9e363d8761e849859bab8">aaruf_write_flux_capture</a></div><div class="ttdeci">int32_t aaruf_write_flux_capture(void *context, uint32_t head, uint16_t track, uint8_t subtrack, uint32_t capture_index, uint64_t data_resolution, uint64_t index_resolution, const uint8_t *data, uint32_t data_length, const uint8_t *index, uint32_t index_length)</div><div class="ttdoc">Add a flux capture to the image during write mode.</div><div class="ttdef"><b>Definition</b> <a href="#l00616">flux.c:616</a></div></div>
<div class="ttc" id="aflux_8c_html_ae840a46bdea143ad49be3ba037376320"><div class="ttname"><a href="flux_8c.html#ae840a46bdea143ad49be3ba037376320">flux_map_rebuild_from_entries</a></div><div class="ttdeci">int32_t flux_map_rebuild_from_entries(aaruformat_context *ctx)</div><div class="ttdoc">Rebuild the flux capture lookup map from the flux_entries array.</div><div class="ttdef"><b>Definition</b> <a href="#l00171">flux.c:171</a></div></div>
<div class="ttc" id="aflux_8c_html_af25f05916bee2f8489613b6a096c2cec"><div class="ttname"><a href="flux_8c.html#af25f05916bee2f8489613b6a096c2cec">FLUX_CAPTURE_RECORD_ICD</a></div><div class="ttdeci">static const UT_icd FLUX_CAPTURE_RECORD_ICD</div><div class="ttdef"><b>Definition</b> <a href="#l00065">flux.c:65</a></div></div>
<div class="ttc" id="aindex_8h_html"><div class="ttname"><a href="index_8h.html">index.h</a></div><div class="ttdoc">Ondisk index block header and entry structures (versions 1, 2 and 3).</div></div>
<div class="ttc" id="alog_8h_html"><div class="ttname"><a href="log_8h.html">log.h</a></div></div>
<div class="ttc" id="alog_8h_html_a053d6037d543b84ce59308ce71d15cd1"><div class="ttname"><a href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a></div><div class="ttdeci">#define FATAL(fmt,...)</div><div class="ttdef"><b>Definition</b> <a href="log_8h_source.html#l00040">log.h:40</a></div></div>
<div class="ttc" id="alog_8h_html_a21cc0459b78d5f2d7bd737e5aae1278a"><div class="ttname"><a href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a></div><div class="ttdeci">#define TRACE(fmt,...)</div><div class="ttdef"><b>Definition</b> <a href="log_8h_source.html#l00025">log.h:25</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html"><div class="ttname"><a href="structDataStreamPayloadHeader.html">DataStreamPayloadHeader</a></div><div class="ttdoc">Header structure for a DataStreamPayloadBlock containing data stream payload.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00242">flux.h:243</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html_a1b7498a80a254f1203bb8705221261f8"><div class="ttname"><a href="structDataStreamPayloadHeader.html#a1b7498a80a254f1203bb8705221261f8">DataStreamPayloadHeader::dataType</a></div><div class="ttdeci">uint16_t dataType</div><div class="ttdoc">Data type classification (value from DataType), e.g., FluxData or BitstreamData.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00245">flux.h:245</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html_a55c9590fb1c3d87a9cce3b389826c1a5"><div class="ttname"><a href="structDataStreamPayloadHeader.html#a55c9590fb1c3d87a9cce3b389826c1a5">DataStreamPayloadHeader::cmpLength</a></div><div class="ttdeci">uint32_t cmpLength</div><div class="ttdoc">Compressed length in bytes (includes LZMA properties if compression = Lzma).</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00247">flux.h:247</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html_a6b72345551c540a0c36c971f4374eb0e"><div class="ttname"><a href="structDataStreamPayloadHeader.html#a6b72345551c540a0c36c971f4374eb0e">DataStreamPayloadHeader::cmpCrc64</a></div><div class="ttdeci">uint64_t cmpCrc64</div><div class="ttdoc">CRC64-ECMA checksum of the compressed payload (or same as crc64 if uncompressed).</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00249">flux.h:249</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html_aade6939bd84d33e4869785d7d412d3c7"><div class="ttname"><a href="structDataStreamPayloadHeader.html#aade6939bd84d33e4869785d7d412d3c7">DataStreamPayloadHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::DataStreamPayloadBlock (0x4C505344, &quot;DSPL&quot;).</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00244">flux.h:244</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html_acb6524ee97c11cbd9934dddcf791478a"><div class="ttname"><a href="structDataStreamPayloadHeader.html#acb6524ee97c11cbd9934dddcf791478a">DataStreamPayloadHeader::compression</a></div><div class="ttdeci">uint16_t compression</div><div class="ttdoc">Compression type: 0 = None, 1 = Lzma.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00246">flux.h:246</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html_ad36cd6ef72854188450049c99b731273"><div class="ttname"><a href="structDataStreamPayloadHeader.html#ad36cd6ef72854188450049c99b731273">DataStreamPayloadHeader::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Uncompressed length in bytes.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00248">flux.h:248</a></div></div>
<div class="ttc" id="astructDataStreamPayloadHeader_html_aea3724bf5786add9715363dbc67671a8"><div class="ttname"><a href="structDataStreamPayloadHeader.html#aea3724bf5786add9715363dbc67671a8">DataStreamPayloadHeader::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA checksum of the uncompressed payload.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00250">flux.h:250</a></div></div>
<div class="ttc" id="astructFluxCaptureKey_html"><div class="ttname"><a href="structFluxCaptureKey.html">FluxCaptureKey</a></div><div class="ttdoc">Key structure for flux capture lookup map.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00296">flux.h:297</a></div></div>
<div class="ttc" id="astructFluxCaptureKey_html_a1728ed3937674d667aec49213c454dc0"><div class="ttname"><a href="structFluxCaptureKey.html#a1728ed3937674d667aec49213c454dc0">FluxCaptureKey::track</a></div><div class="ttdeci">uint16_t track</div><div class="ttdoc">Track number identifying the capture location.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00299">flux.h:299</a></div></div>
<div class="ttc" id="astructFluxCaptureKey_html_a8a1ff1cb573f89f004babec6b42b2edf"><div class="ttname"><a href="structFluxCaptureKey.html#a8a1ff1cb573f89f004babec6b42b2edf">FluxCaptureKey::subtrack</a></div><div class="ttdeci">uint8_t subtrack</div><div class="ttdoc">Subtrack number identifying the capture location.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00300">flux.h:300</a></div></div>
<div class="ttc" id="astructFluxCaptureKey_html_ac8945dce9e2b566546610d67bd729e64"><div class="ttname"><a href="structFluxCaptureKey.html#ac8945dce9e2b566546610d67bd729e64">FluxCaptureKey::head</a></div><div class="ttdeci">uint32_t head</div><div class="ttdoc">Head number identifying the capture location.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00298">flux.h:298</a></div></div>
<div class="ttc" id="astructFluxCaptureKey_html_afa1b8117c16006ec9f4ea99a573c12c2"><div class="ttname"><a href="structFluxCaptureKey.html#afa1b8117c16006ec9f4ea99a573c12c2">FluxCaptureKey::captureIndex</a></div><div class="ttdeci">uint32_t captureIndex</div><div class="ttdoc">Capture index, allowing multiple captures for the same location.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00301">flux.h:301</a></div></div>
<div class="ttc" id="astructFluxCaptureMapEntry_html"><div class="ttname"><a href="structFluxCaptureMapEntry.html">FluxCaptureMapEntry</a></div><div class="ttdoc">Internal hash table entry for flux capture lookup.</div><div class="ttdef"><b>Definition</b> <a href="#l00033">flux.c:34</a></div></div>
<div class="ttc" id="astructFluxCaptureMapEntry_html_aaf424970094cf368e17a01ae1cbe9e24"><div class="ttname"><a href="structFluxCaptureMapEntry.html#aaf424970094cf368e17a01ae1cbe9e24">FluxCaptureMapEntry::key</a></div><div class="ttdeci">FluxCaptureKey key</div><div class="ttdef"><b>Definition</b> <a href="#l00035">flux.c:35</a></div></div>
<div class="ttc" id="astructFluxCaptureMapEntry_html_ae5c32160a1cbc308cec42816832f79c7"><div class="ttname"><a href="structFluxCaptureMapEntry.html#ae5c32160a1cbc308cec42816832f79c7">FluxCaptureMapEntry::hh</a></div><div class="ttdeci">UT_hash_handle hh</div><div class="ttdef"><b>Definition</b> <a href="#l00037">flux.c:37</a></div></div>
<div class="ttc" id="astructFluxCaptureMapEntry_html_ae94a107184c391a86fc74b3a3acb1f3a"><div class="ttname"><a href="structFluxCaptureMapEntry.html#ae94a107184c391a86fc74b3a3acb1f3a">FluxCaptureMapEntry::index</a></div><div class="ttdeci">uint32_t index</div><div class="ttdef"><b>Definition</b> <a href="#l00036">flux.c:36</a></div></div>
<div class="ttc" id="astructFluxCaptureMeta_html"><div class="ttname"><a href="structFluxCaptureMeta.html">FluxCaptureMeta</a></div><div class="ttdoc">Metadata structure returned by aaruf_get_flux_captures().</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00182">flux.h:183</a></div></div>
<div class="ttc" id="astructFluxCaptureMeta_html_a0b227d050c7e82a606376fd3f0c2db02"><div class="ttname"><a href="structFluxCaptureMeta.html#a0b227d050c7e82a606376fd3f0c2db02">FluxCaptureMeta::head</a></div><div class="ttdeci">uint32_t head</div><div class="ttdoc">Head number the flux capture corresponds to.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00184">flux.h:184</a></div></div>
<div class="ttc" id="astructFluxCaptureMeta_html_a3df2812cbb33d5774ae4485eee96c4c9"><div class="ttname"><a href="structFluxCaptureMeta.html#a3df2812cbb33d5774ae4485eee96c4c9">FluxCaptureMeta::indexResolution</a></div><div class="ttdeci">uint64_t indexResolution</div><div class="ttdoc">Resolution in picoseconds at which the index stream was sampled.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00188">flux.h:188</a></div></div>
<div class="ttc" id="astructFluxCaptureMeta_html_a6558bace422cf15c3f371ef437cc5610"><div class="ttname"><a href="structFluxCaptureMeta.html#a6558bace422cf15c3f371ef437cc5610">FluxCaptureMeta::captureIndex</a></div><div class="ttdeci">uint32_t captureIndex</div><div class="ttdoc">Capture index, allowing multiple captures for the same location.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00187">flux.h:187</a></div></div>
<div class="ttc" id="astructFluxCaptureMeta_html_a9e7ceeae4845e8dcd87bd76e32d065d6"><div class="ttname"><a href="structFluxCaptureMeta.html#a9e7ceeae4845e8dcd87bd76e32d065d6">FluxCaptureMeta::subtrack</a></div><div class="ttdeci">uint8_t subtrack</div><div class="ttdoc">Subtrack number the flux capture corresponds to.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00186">flux.h:186</a></div></div>
<div class="ttc" id="astructFluxCaptureMeta_html_ae9699355343e04f88bfe25093774dfde"><div class="ttname"><a href="structFluxCaptureMeta.html#ae9699355343e04f88bfe25093774dfde">FluxCaptureMeta::dataResolution</a></div><div class="ttdeci">uint64_t dataResolution</div><div class="ttdoc">Resolution in picoseconds at which the data stream was sampled.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00189">flux.h:189</a></div></div>
<div class="ttc" id="astructFluxCaptureMeta_html_aebee512e3f6ce8a4c1aa1b4cfbecdb33"><div class="ttname"><a href="structFluxCaptureMeta.html#aebee512e3f6ce8a4c1aa1b4cfbecdb33">FluxCaptureMeta::track</a></div><div class="ttdeci">uint16_t track</div><div class="ttdoc">Track number the flux capture corresponds to.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00185">flux.h:185</a></div></div>
<div class="ttc" id="astructFluxCaptureRecord_html"><div class="ttname"><a href="structFluxCaptureRecord.html">FluxCaptureRecord</a></div><div class="ttdoc">Internal structure for storing flux capture data during write mode.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00270">flux.h:271</a></div></div>
<div class="ttc" id="astructFluxCaptureRecord_html_a002dbda89d68adac0d0a8281d34fc76a"><div class="ttname"><a href="structFluxCaptureRecord.html#a002dbda89d68adac0d0a8281d34fc76a">FluxCaptureRecord::entry</a></div><div class="ttdeci">FluxEntry entry</div><div class="ttdoc">Flux entry metadata describing this capture.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00272">flux.h:272</a></div></div>
<div class="ttc" id="astructFluxCaptureRecord_html_a9563435372ecc4af506c4fae2ac2f617"><div class="ttname"><a href="structFluxCaptureRecord.html#a9563435372ecc4af506c4fae2ac2f617">FluxCaptureRecord::data_length</a></div><div class="ttdeci">uint32_t data_length</div><div class="ttdoc">Length of the data buffer in bytes.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00274">flux.h:274</a></div></div>
<div class="ttc" id="astructFluxCaptureRecord_html_adcf7766ac4311fe79a1324f2eec6868d"><div class="ttname"><a href="structFluxCaptureRecord.html#adcf7766ac4311fe79a1324f2eec6868d">FluxCaptureRecord::index_length</a></div><div class="ttdeci">uint32_t index_length</div><div class="ttdoc">Length of the index buffer in bytes.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00276">flux.h:276</a></div></div>
<div class="ttc" id="astructFluxCaptureRecord_html_af5bce1443f5112ce65f54c39ff873b57"><div class="ttname"><a href="structFluxCaptureRecord.html#af5bce1443f5112ce65f54c39ff873b57">FluxCaptureRecord::index_buffer</a></div><div class="ttdeci">uint8_t * index_buffer</div><div class="ttdoc">Pointer to the flux index buffer. Owned by the utarray, freed automatically.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00275">flux.h:275</a></div></div>
<div class="ttc" id="astructFluxCaptureRecord_html_afd9cf94122b9f59c548cda29599f8047"><div class="ttname"><a href="structFluxCaptureRecord.html#afd9cf94122b9f59c548cda29599f8047">FluxCaptureRecord::data_buffer</a></div><div class="ttdeci">uint8_t * data_buffer</div><div class="ttdoc">Pointer to the flux data buffer. Owned by the utarray, freed automatically.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00273">flux.h:273</a></div></div>
<div class="ttc" id="astructFluxEntry_html"><div class="ttname"><a href="structFluxEntry.html">FluxEntry</a></div><div class="ttdoc">Metadata entry describing a single flux capture in the FluxDataBlock.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00155">flux.h:156</a></div></div>
<div class="ttc" id="astructFluxEntry_html_a12f64e1c66187ebbbdcdf03916293c95"><div class="ttname"><a href="structFluxEntry.html#a12f64e1c66187ebbbdcdf03916293c95">FluxEntry::indexResolution</a></div><div class="ttdeci">uint64_t indexResolution</div><div class="ttdoc">Resolution in picoseconds at which the index stream was sampled.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00161">flux.h:161</a></div></div>
<div class="ttc" id="astructFluxEntry_html_a27c590b581f2ea33306f89e609c28c95"><div class="ttname"><a href="structFluxEntry.html#a27c590b581f2ea33306f89e609c28c95">FluxEntry::dataResolution</a></div><div class="ttdeci">uint64_t dataResolution</div><div class="ttdoc">Resolution in picoseconds at which the data stream was sampled.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00162">flux.h:162</a></div></div>
<div class="ttc" id="astructFluxEntry_html_a31cafff6f54acc9e019da447e94ace4a"><div class="ttname"><a href="structFluxEntry.html#a31cafff6f54acc9e019da447e94ace4a">FluxEntry::head</a></div><div class="ttdeci">uint32_t head</div><div class="ttdoc">Head number the flux capture corresponds to. Typically 0 or 1 for double-sided media.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00157">flux.h:157</a></div></div>
<div class="ttc" id="astructFluxEntry_html_a3f5949d0feb9bdcf62afeb1acb1fa009"><div class="ttname"><a href="structFluxEntry.html#a3f5949d0feb9bdcf62afeb1acb1fa009">FluxEntry::payloadOffset</a></div><div class="ttdeci">uint64_t payloadOffset</div><div class="ttdoc">Block-aligned file offset where the DataStreamPayloadBlock containing this capture&#39;s data is stored,...</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00164">flux.h:164</a></div></div>
<div class="ttc" id="astructFluxEntry_html_a46108bba60946e7b7d4f41160e3dfd86"><div class="ttname"><a href="structFluxEntry.html#a46108bba60946e7b7d4f41160e3dfd86">FluxEntry::track</a></div><div class="ttdeci">uint16_t track</div><div class="ttdoc">Track number the flux capture corresponds to. Track numbering is format-dependent.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00158">flux.h:158</a></div></div>
<div class="ttc" id="astructFluxEntry_html_aaaaaf686bec81c632f8de3131b540946"><div class="ttname"><a href="structFluxEntry.html#aaaaaf686bec81c632f8de3131b540946">FluxEntry::indexOffset</a></div><div class="ttdeci">uint64_t indexOffset</div><div class="ttdoc">Byte offset within the payload where the index buffer starts (equals data_length).</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00163">flux.h:163</a></div></div>
<div class="ttc" id="astructFluxEntry_html_abd12c00010d82cd83820dd3405b7b860"><div class="ttname"><a href="structFluxEntry.html#abd12c00010d82cd83820dd3405b7b860">FluxEntry::subtrack</a></div><div class="ttdeci">uint8_t subtrack</div><div class="ttdoc">Subtrack number, allowing sub-stepping within a track. Used for fine positioning.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00159">flux.h:159</a></div></div>
<div class="ttc" id="astructFluxEntry_html_ae5af51709faf749501d44b242a57481c"><div class="ttname"><a href="structFluxEntry.html#ae5af51709faf749501d44b242a57481c">FluxEntry::captureIndex</a></div><div class="ttdeci">uint32_t captureIndex</div><div class="ttdoc">Capture index, allowing multiple captures for the same location (e.g., multiple revolutions).</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00160">flux.h:160</a></div></div>
<div class="ttc" id="astructFluxHeader_html"><div class="ttname"><a href="structFluxHeader.html">FluxHeader</a></div><div class="ttdoc">Header structure for a FluxDataBlock containing flux capture metadata.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00116">flux.h:117</a></div></div>
<div class="ttc" id="astructFluxHeader_html_a17794a3f0cc5b11a5169580cc510a71c"><div class="ttname"><a href="structFluxHeader.html#a17794a3f0cc5b11a5169580cc510a71c">FluxHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::FluxDataBlock (0x58554C46, &quot;FLUX&quot;).</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00118">flux.h:118</a></div></div>
<div class="ttc" id="astructFluxHeader_html_a26f2a1be977dc973341e6952eba159dc"><div class="ttname"><a href="structFluxHeader.html#a26f2a1be977dc973341e6952eba159dc">FluxHeader::entries</a></div><div class="ttdeci">uint16_t entries</div><div class="ttdoc">Number of FluxEntry records following this header. Maximum value: 65535.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00119">flux.h:119</a></div></div>
<div class="ttc" id="astructFluxHeader_html_a3980b9bf3db82de544c991cae4e6126a"><div class="ttname"><a href="structFluxHeader.html#a3980b9bf3db82de544c991cae4e6126a">FluxHeader::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA checksum of the FluxEntry array (header excluded).</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00121">flux.h:121</a></div></div>
<div class="ttc" id="astructFluxHeader_html_a8e2f7fb0153155438629cda42cb6f329"><div class="ttname"><a href="structFluxHeader.html#a8e2f7fb0153155438629cda42cb6f329">FluxHeader::blockAlignmentShift</a></div><div class="ttdeci">uint8_t blockAlignmentShift</div><div class="ttdoc">Block alignment shift: 2^blockAlignmentShift = block alignment boundary in bytes.</div><div class="ttdef"><b>Definition</b> <a href="flux_8h_source.html#l00120">flux.h:120</a></div></div>
<div class="ttc" id="astructImageInfo_html_abca8e73a9655d810e6d30d36c3ab54d7"><div class="ttname"><a href="structImageInfo.html#abca8e73a9655d810e6d30d36c3ab54d7">ImageInfo::ImageSize</a></div><div class="ttdeci">uint64_t ImageSize</div><div class="ttdoc">Size of the image payload in bytes (excludes headers/metadata).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00935">aaru.h:935</a></div></div>
<div class="ttc" id="astructIndexEntry_html"><div class="ttname"><a href="structIndexEntry.html">IndexEntry</a></div><div class="ttdoc">Single index entry describing a block&#39;s type, (optional) data classification, and file offset.</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00108">index.h:109</a></div></div>
<div class="ttc" id="astructIndexEntry_html_a4b5c7115ac83019c3f77c6f047e5f75e"><div class="ttname"><a href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">IndexEntry::blockType</a></div><div class="ttdeci">uint32_t blockType</div><div class="ttdoc">Block identifier of the referenced block (value from BlockType).</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00110">index.h:110</a></div></div>
<div class="ttc" id="astructIndexEntry_html_a854951a64192d7e4cdcfa6dd6fd2b3ea"><div class="ttname"><a href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">IndexEntry::offset</a></div><div class="ttdeci">uint64_t offset</div><div class="ttdoc">Absolute byte offset in the image where the referenced block header begins.</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00112">index.h:112</a></div></div>
<div class="ttc" id="astructaaruformat__context_html"><div class="ttname"><a href="structaaruformat__context.html">aaruformat_context</a></div><div class="ttdoc">Master context representing an open or increation Aaru image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00174">context.h:175</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1b150de162e5fb75d368dd6a52f6d5d7"><div class="ttname"><a href="structaaruformat__context.html#a1b150de162e5fb75d368dd6a52f6d5d7">aaruformat_context::flux_data_header</a></div><div class="ttdeci">FluxHeader flux_data_header</div><div class="ttdoc">Flux data header (if present).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00311">context.h:311</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1e11606681ce5da5947a2345efebf46e"><div class="ttname"><a href="structaaruformat__context.html#a1e11606681ce5da5947a2345efebf46e">aaruformat_context::flux_captures</a></div><div class="ttdeci">UT_array * flux_captures</div><div class="ttdoc">Pending flux capture payloads (write path).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00313">context.h:313</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a468632adcfc1f6b884b8906835c3228b"><div class="ttname"><a href="structaaruformat__context.html#a468632adcfc1f6b884b8906835c3228b">aaruformat_context::flux_map</a></div><div class="ttdeci">FluxCaptureMapEntry * flux_map</div><div class="ttdoc">Hash map for flux capture lookup by head/track/subtrack/capture index.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00314">context.h:314</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a69e227faa1e5168628bb32d4acbe9f29"><div class="ttname"><a href="structaaruformat__context.html#a69e227faa1e5168628bb32d4acbe9f29">aaruformat_context::flux_entries</a></div><div class="ttdeci">FluxEntry * flux_entries</div><div class="ttdoc">Array of flux entries (flux_data_header.entries elements).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00312">context.h:312</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a6f61f9ea20f4e3b791a0d6388dd43651"><div class="ttname"><a href="structaaruformat__context.html#a6f61f9ea20f4e3b791a0d6388dd43651">aaruformat_context::is_writing</a></div><div class="ttdeci">bool is_writing</div><div class="ttdoc">True if context opened/created for writing.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00295">context.h:295</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a7dc0a0fe0bf6223ff4587fd01c360b76"><div class="ttname"><a href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">aaruformat_context::magic</a></div><div class="ttdeci">uint64_t magic</div><div class="ttdoc">File magic (AARU_MAGIC) post-open.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00177">context.h:177</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ab516fae594bde4f76b75488d0a3ca3a8"><div class="ttname"><a href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">aaruformat_context::imageStream</a></div><div class="ttdeci">FILE * imageStream</div><div class="ttdoc">Underlying FILE* stream (binary mode).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00179">context.h:179</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ab97a719a5b4186695b67143db7376152"><div class="ttname"><a href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">aaruformat_context::index_entries</a></div><div class="ttdeci">UT_array * index_entries</div><div class="ttdoc">Flattened index entries (UT_array of IndexEntry).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00255">context.h:255</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ac970291b3449c04221827b9c2c18ac70"><div class="ttname"><a href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">aaruformat_context::image_info</a></div><div class="ttdeci">ImageInfo image_info</div><div class="ttdoc">Exposed high-level image info summary.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00263">context.h:263</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_acbb9df628de2c980cd3d7c22e5515f62"><div class="ttname"><a href="structaaruformat__context.html#acbb9df628de2c980cd3d7c22e5515f62">aaruformat_context::dirty_flux_block</a></div><div class="ttdeci">bool dirty_flux_block</div><div class="ttdoc">True if flux block should be written during close.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00339">context.h:339</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a href="dir_b2e0cd1ddd0a904cb261e9b68779deb4.html">blocks</a></li><li class="navelem"><a href="flux_8c.html">flux.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.15.0 </li>
</ul>
</div>
</body>
</html>