Files
libaaruformat/docs/html/close_8c_source.html

3124 lines
751 KiB
HTML
Raw 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.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libaaruformat: src/close.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.14.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('close_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">close.c</div></div>
</div><!--header-->
<div class="contents">
<a href="close_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="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#include &lt;errno.h&gt;</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#ifdef __linux__</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor">#include &lt;sys/mman.h&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#include &lt;<a class="code" href="aaruformat_8h.html">aaruformat.h</a>&gt;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="preprocessor">#include &quot;<a class="code" href="internal_8h.html">internal.h</a>&quot;</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#include &quot;<a class="code" href="log_8h.html">log.h</a>&quot;</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span></div>
<div class="foldopen" id="foldopen00077" data-start="{" data-end="}">
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="close_8c.html#af0f89d22c6e2bdca261223bbdda7654c"> 77</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="close_8c.html#af0f89d22c6e2bdca261223bbdda7654c">write_cached_secondary_ddt</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>{</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// Write cached secondary table to file end and update primary table entry with its position</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Check if we have a cached table that needs to be written (either it has an offset or exists in memory)</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">bool</span> has_cached_secondary_ddt =</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a> &gt; 0 &amp;&amp; (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4bbf867b2c93fdbf959ce6e1a5f0d0a4">cached_ddt_offset</a> != 0 || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">cached_secondary_ddt2</a> != NULL);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordflow">if</span>(!has_cached_secondary_ddt) <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="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing cached secondary DDT table to file&quot;</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> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">long</span> end_of_file = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// Align the position according to block alignment shift</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">if</span>(end_of_file &amp; alignment_mask)</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> <span class="comment">// Calculate the next aligned position</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> uint64_t aligned_position = end_of_file + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// Seek to the aligned position and pad with zeros if necessary</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> end_of_file = aligned_position;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Aligned DDT write position from %ld to %&quot;</span> PRIu64 <span class="stringliteral">&quot; (alignment shift: %d)&quot;</span>,</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) - (aligned_position - end_of_file), aligned_position,</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>);</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// Prepare DDT header for the cached table</span></div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a> ddt_header = {0};</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a80a88ec68cd0332a57886ac363bfa4d1">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a76b6a78e4e765794c4cca2dde5bfc3fb">DeDuplicationTableSecondary</a>;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a14f9ccf36df63e036d69291182cf7bbb">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a>;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a68f4825db4e22906af0e55a359360656">levels</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a68f4825db4e22906af0e55a359360656">levels</a>;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ac8ec7921a5651b5107eda4e99b488798">tableLevel</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac8ec7921a5651b5107eda4e99b488798">tableLevel</a> + 1;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#af71423c2a8c7fa89dfd2313b456c57a2">previousLevelOffset</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a88effb2eb082320b5b31d729981cf2d4">primary_ddt_offset</a>;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad9a2beb3a79bc6c239ba04fe341e0cde">dataShift</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad9a2beb3a79bc6c239ba04fe341e0cde">dataShift</a>;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a> = 0; <span class="comment">// Secondary tables are single level</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> uint64_t items_per_ddt_entry = 1 &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a>;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">blocks</a> = items_per_ddt_entry;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> = items_per_ddt_entry;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a238a2ca31ce0f60af3e59a1cb3e2e73c">start</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae32b62ecd08a309c5848a5503b020689">cached_ddt_position</a> * items_per_ddt_entry;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// Calculate data size</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> = items_per_ddt_entry * <span class="keyword">sizeof</span>(uint64_t);</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> <span class="comment">// Calculate CRC64 of the data</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_struct" href="structcrc64__ctx.html">crc64_ctx</a> *crc64_context = <a class="code hl_function" href="decls_8h.html#a66567ca64e31a687d4982cb254b45196">aaruf_crc64_init</a>();</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordflow">if</span>(crc64_context != NULL)</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <a class="code hl_function" href="decls_8h.html#a1fb4423a841ccd728e3ad0d028cbc9b4">aaruf_crc64_update</a>(crc64_context, (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">cached_secondary_ddt2</a>, (uint32_t)ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>);</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> uint64_t crc64;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <a class="code hl_function" href="decls_8h.html#ae48cfb59c6585e9ffd4cd1a97044891f">aaruf_crc64_final</a>(crc64_context, &amp;crc64);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a> = crc64;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">if</span>(ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> {</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">cached_secondary_ddt2</a>;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> }</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> buffer = malloc((<span class="keywordtype">size_t</span>)ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> {</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for secondary DDT v2 compression&quot;</span>);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</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="l00155" name="l00155"></a><span class="lineno"> 155</span> }</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordtype">size_t</span> dst_size = (size_t)ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2 * 2;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size,</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">cached_secondary_ddt2</a>, ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>, lzma_properties, &amp;props_size,</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keywordflow">if</span>(ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> &gt;= ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>)</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> {</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> free(buffer);</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">cached_secondary_ddt2</a>;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> }</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> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">if</span>(ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>;</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="keywordflow">else</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</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>(ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</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> <span class="comment">// Write header</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">if</span>(fwrite(&amp;ddt_header, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> {</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">if</span>(ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</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> <span class="comment">// Write data</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keywordflow">if</span>(fwrite(buffer, ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> {</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// Update primary table entry to point to new location</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keyword">const</span> uint64_t new_secondary_table_block_offset =</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> end_of_file &gt;&gt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>;</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>[ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae32b62ecd08a309c5848a5503b020689">cached_ddt_position</a>] = (uint64_t)new_secondary_table_block_offset;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// Update index: remove old entry for cached DDT and add new one</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Updating index for cached secondary DDT&quot;</span>);</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="comment">// Remove old index entry for the cached DDT</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4bbf867b2c93fdbf959ce6e1a5f0d0a4">cached_ddt_offset</a> != 0)</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> {</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Removing old index entry for DDT at offset %&quot;</span> PRIu64, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4bbf867b2c93fdbf959ce6e1a5f0d0a4">cached_ddt_offset</a>);</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">const</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> *entry = NULL;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="comment">// Find and remove the old index entry</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k = 0; k &lt; utarray_len(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>); k++)</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> {</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</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>, k);</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keywordflow">if</span>(entry &amp;&amp; entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> == ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4bbf867b2c93fdbf959ce6e1a5f0d0a4">cached_ddt_offset</a> &amp;&amp;</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> == <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a76b6a78e4e765794c4cca2dde5bfc3fb">DeDuplicationTableSecondary</a>)</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> {</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Found old DDT index entry at position %u, removing&quot;</span>, k);</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> utarray_erase(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, k, 1);</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> }</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> }</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> }</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="comment">// Add new index entry for the newly written secondary DDT</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> new_ddt_entry;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> new_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a76b6a78e4e765794c4cca2dde5bfc3fb">DeDuplicationTableSecondary</a>;</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> new_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a>;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> new_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = end_of_file;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;new_ddt_entry);</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added new DDT index entry at offset %&quot;</span> PRIu64, end_of_file);</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> </div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// Write the updated primary table back to its original position in the file</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordtype">long</span> saved_pos = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a88effb2eb082320b5b31d729981cf2d4">primary_ddt_offset</a> + <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a>), SEEK_SET);</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordtype">size_t</span> primary_table_size = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> * <span class="keyword">sizeof</span>(uint64_t);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordtype">size_t</span> primary_written_bytes = 0;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> primary_written_bytes = fwrite(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>, primary_table_size, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keywordflow">if</span>(primary_written_bytes != 1)</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> {</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Could not flush primary DDT table to file.&quot;</span>);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a>;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> }</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, saved_pos, SEEK_SET);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> }</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write cached secondary DDT data&quot;</span>);</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> }</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write cached secondary DDT header&quot;</span>);</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="comment">// Free the cached table</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">cached_secondary_ddt2</a>);</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">cached_secondary_ddt2</a> = NULL;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4bbf867b2c93fdbf959ce6e1a5f0d0a4">cached_ddt_offset</a> = 0;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="comment">// Set position</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordflow">if</span>(ddt_header.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</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="l00264" name="l00264"></a><span class="lineno"> 264</span>}</div>
</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span></div>
<div class="foldopen" id="foldopen00283" data-start="{" data-end="}">
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"><a class="line" href="close_8c.html#a1bb181171eb9d0b0016cf4091ed831d7"> 283</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="close_8c.html#a1bb181171eb9d0b0016cf4091ed831d7">write_primary_ddt</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span>{</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="comment">// Write the cached primary DDT table back to its position in the file</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a> &lt;= 0 || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a> == NULL) <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="l00287" name="l00287"></a><span class="lineno"> 287</span> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing cached primary DDT table back to file&quot;</span>);</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="comment">// Calculate CRC64 of the primary DDT table data first</span></div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <a class="code hl_struct" href="structcrc64__ctx.html">crc64_ctx</a> *crc64_context = <a class="code hl_function" href="decls_8h.html#a66567ca64e31a687d4982cb254b45196">aaruf_crc64_init</a>();</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keywordflow">if</span>(crc64_context != NULL)</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> {</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="keywordtype">size_t</span> primary_table_size = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> * <span class="keyword">sizeof</span>(uint64_t);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <a class="code hl_function" href="decls_8h.html#a1fb4423a841ccd728e3ad0d028cbc9b4">aaruf_crc64_update</a>(crc64_context, (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>, primary_table_size);</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> uint64_t crc64;</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <a class="code hl_function" href="decls_8h.html#ae48cfb59c6585e9ffd4cd1a97044891f">aaruf_crc64_final</a>(crc64_context, &amp;crc64);</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> </div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="comment">// Properly populate all header fields for multi-level DDT primary table</span></div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a80a88ec68cd0332a57886ac363bfa4d1">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a14f9ccf36df63e036d69291182cf7bbb">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a>;</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="comment">// levels, tableLevel, previousLevelOffset, negative, overflow, blockAlignmentShift,</span></div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <span class="comment">// dataShift, tableShift, sizeType, entries, blocks, start are already set during creation</span></div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a> = crc64;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = crc64;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> = primary_table_size;</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = primary_table_size;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> </div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Calculated CRC64 for primary DDT: 0x%16lX&quot;</span>, crc64);</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> }</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> </div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="comment">// First write the DDT header</span></div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a88effb2eb082320b5b31d729981cf2d4">primary_ddt_offset</a>, SEEK_SET);</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> </div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordtype">size_t</span> headerWritten = fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> <span class="keywordflow">if</span>(headerWritten != 1)</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> {</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write primary DDT header to file&quot;</span>);</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a>;</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> }</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> <span class="comment">// Then write the table data (position is already after the header)</span></div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keywordtype">size_t</span> primary_table_size = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> * <span class="keyword">sizeof</span>(uint64_t);</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> <span class="comment">// Write the primary table data</span></div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="keywordtype">size_t</span> written_bytes = 0;</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> written_bytes = fwrite(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>, primary_table_size, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</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> <span class="keywordflow">if</span>(written_bytes == 1)</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> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote primary DDT header and table to file (%&quot;</span> PRIu64 <span class="stringliteral">&quot; entries, %zu bytes)&quot;</span>,</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a>, primary_table_size);</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> </div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="comment">// Add primary DDT to index</span></div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding primary DDT to index&quot;</span>);</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> primary_ddt_entry;</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> primary_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> primary_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a>;</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> primary_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a88effb2eb082320b5b31d729981cf2d4">primary_ddt_offset</a>;</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> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;primary_ddt_entry);</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added primary DDT index entry at offset %&quot;</span> PRIu64, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a88effb2eb082320b5b31d729981cf2d4">primary_ddt_offset</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">else</span></div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write primary DDT table to file&quot;</span>);</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> </div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</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="l00351" name="l00351"></a><span class="lineno"> 351</span>}</div>
</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span></div>
<div class="foldopen" id="foldopen00369" data-start="{" data-end="}">
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"><a class="line" href="close_8c.html#a7314de0d71768709fa4ba2db7f89cdb9"> 369</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="close_8c.html#a7314de0d71768709fa4ba2db7f89cdb9">write_single_level_ddt</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</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> <span class="comment">// Write the single level DDT table block aligned just after the header</span></div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a> != 0 || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a> == NULL) <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="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing single-level DDT table to file&quot;</span>);</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> <span class="comment">// Calculate CRC64 of the primary DDT table data</span></div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> primary_table_size = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> * <span class="keyword">sizeof</span>(uint64_t);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> </div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="comment">// Properly populate all header fields</span></div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a80a88ec68cd0332a57886ac363bfa4d1">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a14f9ccf36df63e036d69291182cf7bbb">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a>;</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a68f4825db4e22906af0e55a359360656">levels</a> = 1; <span class="comment">// Single level</span></div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac8ec7921a5651b5107eda4e99b488798">tableLevel</a> = 0; <span class="comment">// Top level</span></div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#af71423c2a8c7fa89dfd2313b456c57a2">previousLevelOffset</a> = 0; <span class="comment">// No previous level for single-level DDT</span></div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> <span class="comment">// negative and overflow are already set during creation</span></div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <span class="comment">// blockAlignmentShift, dataShift, tableShift, sizeType, entries, blocks, start are already set</span></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#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> = primary_table_size;</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = primary_table_size;</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> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>, primary_table_size);</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Calculated CRC64 for single-level DDT: 0x%16lX&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> uint8_t *cmp_buffer = NULL;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> </div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</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> </div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> cmp_buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>;</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>;</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> }</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> {</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> cmp_buffer = malloc((<span class="keywordtype">size_t</span>)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="keywordflow">if</span>(cmp_buffer == NULL)</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> {</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for secondary DDT v2 compression&quot;</span>);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</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="l00411" name="l00411"></a><span class="lineno"> 411</span> }</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> </div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="keywordtype">size_t</span> dst_size = (size_t)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2 * 2;</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(cmp_buffer, &amp;dst_size, (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>,</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>, lzma_properties, &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>,</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> </div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> &gt;= ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>)</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> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> free(cmp_buffer);</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> cmp_buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</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> </div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</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> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</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">else</span></div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> =</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(cmp_buffer, (uint32_t)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>);</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> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> </div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="comment">// Write the DDT header first</span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordtype">long</span> ddt_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keywordflow">if</span>(ddt_position &amp; alignment_mask)</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="keyword">const</span> uint64_t aligned_position = ddt_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> ddt_position = aligned_position;</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> }</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> <span class="keyword">const</span> <span class="keywordtype">size_t</span> header_written = fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keywordflow">if</span>(header_written != 1)</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> {</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write single-level DDT header to file&quot;</span>);</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a>;</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> }</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> </div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// Write the primary table data</span></div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="keywordtype">size_t</span> written_bytes = 0;</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>)</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> </div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> written_bytes = fwrite(cmp_buffer, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> </div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> {</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote single-level DDT header and table to file (%&quot;</span> PRIu64</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> <span class="stringliteral">&quot; entries, %zu bytes, %zu compressed bytes)&quot;</span>,</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>);</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> </div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="comment">// Add single-level DDT to index</span></div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding single-level DDT to index&quot;</span>);</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> single_ddt_entry;</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> single_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> single_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a>;</div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> single_ddt_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = ddt_position;</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> </div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;single_ddt_entry);</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added single-level DDT index entry at offset %&quot;</span> PRIu64, ddt_position);</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> }</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write single-level DDT table data to file&quot;</span>);</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> </div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</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="l00487" name="l00487"></a><span class="lineno"> 487</span>}</div>
</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span></div>
<div class="foldopen" id="foldopen00596" data-start="{" data-end="}">
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"><a class="line" href="close_8c.html#aed9f90614002b887ae9f3ef2333de16a"> 596</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="close_8c.html#aed9f90614002b887ae9f3ef2333de16a">write_tape_ddt</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span>{</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4d514102386b48bd51ac82c27bf9920a">is_tape</a>) <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="enums_8h.html#af887903d155851fe30d08053c4b2c1b8a2ee503de2bb99eb6a677fd9871a9c44d">AARUF_STATUS_INVALID_CONTEXT</a>;</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> </div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <span class="comment">// Traverse the tape DDT uthash and find the biggest key</span></div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> uint64_t max_key = 0;</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <a class="code hl_struct" href="structTapeDdtHashEntry.html">TapeDdtHashEntry</a> *entry, *tmp;</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a705ef2714c4773514c23a56371f42a0f">tape_ddt</a>, entry, tmp)</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> <span class="keywordflow">if</span>(entry-&gt;<a class="code hl_variable" href="structTapeDdtHashEntry.html#acd6c80964b9f8f53a955ff3ebd0e9103">key</a> &gt; max_key) max_key = entry-&gt;<a class="code hl_variable" href="structTapeDdtHashEntry.html#acd6c80964b9f8f53a955ff3ebd0e9103">key</a>;</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <span class="comment">// Initialize context user data DDT header</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a80a88ec68cd0332a57886ac363bfa4d1">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a14f9ccf36df63e036d69291182cf7bbb">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a>;</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a68f4825db4e22906af0e55a359360656">levels</a> = 1; <span class="comment">// Single level</span></div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac8ec7921a5651b5107eda4e99b488798">tableLevel</a> = 0; <span class="comment">// Top level</span></div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#af71423c2a8c7fa89dfd2313b456c57a2">previousLevelOffset</a> = 0; <span class="comment">// No previous level for single-level DDT</span></div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> = 0;</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a> = 0;</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a> = 0; <span class="comment">// Single level</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> = max_key + 1;</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">blocks</a> = max_key + 1;</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a238a2ca31ce0f60af3e59a1cb3e2e73c">start</a> = 0;</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> * <span class="keyword">sizeof</span>(uint64_t);</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>;</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> <span class="comment">// Initialize memory for user data DDT</span></div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a> = calloc(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a>, <span class="keyword">sizeof</span>(uint64_t));</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a> == NULL)</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> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for tape DDT table&quot;</span>);</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</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="l00628" name="l00628"></a><span class="lineno"> 628</span> }</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> </div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <span class="comment">// Populate user data DDT from tape DDT uthash</span></div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a705ef2714c4773514c23a56371f42a0f">tape_ddt</a>, entry, tmp)</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> <span class="keywordflow">if</span>(entry-&gt;<a class="code hl_variable" href="structTapeDdtHashEntry.html#acd6c80964b9f8f53a955ff3ebd0e9103">key</a> &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">blocks</a>) ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">user_data_ddt2</a>[entry-&gt;<a class="code hl_variable" href="structTapeDdtHashEntry.html#acd6c80964b9f8f53a955ff3ebd0e9103">key</a>] = entry-&gt;<a class="code hl_variable" href="structTapeDdtHashEntry.html#af8bd3cf85fa9e9b26c768323b0e0ebaa">value</a>;</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="comment">// Do not repeat code</span></div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> <span class="keywordflow">return</span> <a class="code hl_function" href="close_8c.html#a7314de0d71768709fa4ba2db7f89cdb9">write_single_level_ddt</a>(ctx);</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span>}</div>
</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span></div>
<div class="foldopen" id="foldopen00654" data-start="{" data-end="}">
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"><a class="line" href="close_8c.html#a84f08d3fe750b46dad183b12bb3927c5"> 654</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a84f08d3fe750b46dad183b12bb3927c5">write_checksum_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span>{</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> uint64_t alignment_mask;</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> uint64_t aligned_position;</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> </div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="comment">// Finalize pending checksums</span></div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a95770f959cae3b6b34e2b1ae592a7136">calculating_md5</a>)</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> {</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#acd52d3e5df013ac7e30354d93d41ef72">hasMd5</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <a class="code hl_function" href="decls_8h.html#a6b98055d07ba51f0daef5b03ce2fe725">aaruf_md5_final</a>(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3c44b0cbcfb4586ce666dcd97a3dd85a">md5_context</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a9a47b66429ab4db300fdb7fcb931a867">md5</a>);</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> }</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4e4c12388d90a11cf14266d1215ce13e">calculating_sha1</a>)</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> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#ac19eb1258cf0bf1c1998dfef7ae52550">hasSha1</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> <a class="code hl_function" href="decls_8h.html#a0396232d1020b16b2cb4bf0b1aa2b021">aaruf_sha1_final</a>(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad1e28bac5a6c9bfdb8d18793686fc755">sha1_context</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a59a7f4fc7db0867035acf60477afd4a6">sha1</a>);</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> }</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a2e2c23ecc1d15087ef46e2591c47194a">calculating_sha256</a>)</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> {</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a4f404ac9841b3f06f8130722ec613ceb">hasSha256</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> <a class="code hl_function" href="decls_8h.html#a6456150dad701ca7f071940ef169c4cf">aaruf_sha256_final</a>(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a21dffad51cfb58f5f71f7babee2aaceb">sha256_context</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a9808d260d9b2ad0c172db164126266a3">sha256</a>);</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> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a865120510888fac8bb3597b57d515ba7">calculating_spamsum</a>)</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> {</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#abe4e66c6bb57259dd1312f5cfb7730a5">hasSpamSum</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a1748cd355e21a7b0f4f730dd16bd9752">spamsum</a> = calloc(1, <a class="code hl_define" href="spamsum_8h.html#a2309f23e98c4c0370f32e3e3cb09afa5">FUZZY_MAX_RESULT</a>);</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <a class="code hl_function" href="decls_8h.html#ab1f4894af1962e933767248c4fb0e2e8">aaruf_spamsum_final</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a729b87257c0b5d1e9abf1af133a4b0f3">spamsum_context</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a1748cd355e21a7b0f4f730dd16bd9752">spamsum</a>);</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> <a class="code hl_function" href="decls_8h.html#a6fe74704e44be7adfaa2ce676f3c3de4">aaruf_spamsum_free</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a729b87257c0b5d1e9abf1af133a4b0f3">spamsum_context</a>);</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> }</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8be6dd9da00d771d24c7a6295f1c1d02">calculating_blake3</a>)</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> {</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#aee0cf46a7cf9f514e2b609542820370d">hasBlake3</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> blake3_hasher_finalize(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b89a7e0e6369dad38e23dabaf4b49a4">blake3_context</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#aca24093de3cb292573b7c3ebe777f5e8">blake3</a>, BLAKE3_OUT_LEN);</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b89a7e0e6369dad38e23dabaf4b49a4">blake3_context</a>);</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="comment">// Write the checksums block</span></div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> <span class="keywordtype">bool</span> has_checksums = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#acd52d3e5df013ac7e30354d93d41ef72">hasMd5</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#ac19eb1258cf0bf1c1998dfef7ae52550">hasSha1</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a4f404ac9841b3f06f8130722ec613ceb">hasSha256</a> ||</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#abe4e66c6bb57259dd1312f5cfb7730a5">hasSpamSum</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#aee0cf46a7cf9f514e2b609542820370d">hasBlake3</a>;</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> </div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <span class="keywordflow">if</span>(!has_checksums) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> </div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <a class="code hl_struct" href="structChecksumHeader.html">ChecksumHeader</a> checksum_header = {0};</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#a2cb8589c2733e9a1cc0c8387da8ae3e3">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a3e451c2577a6c790f33f99c2da189d46">ChecksumBlock</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> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> <span class="keywordtype">long</span> checksum_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> <span class="keywordflow">if</span>(checksum_position &amp; alignment_mask)</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> {</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> aligned_position = checksum_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> checksum_position = aligned_position;</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> }</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> </div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> <span class="comment">// Skip checksum_header</span></div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, <span class="keyword">sizeof</span>(checksum_header), SEEK_CUR);</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> </div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#acd52d3e5df013ac7e30354d93d41ef72">hasMd5</a>)</div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> {</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing MD5 checksum entry&quot;</span>);</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> <a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a> md5_entry = {0};</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> md5_entry.<a class="code hl_variable" href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">length</a> = <a class="code hl_define" href="context_8h.html#a09a4f4b2f28cbe522d9b80153666029c">MD5_DIGEST_LENGTH</a>;</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> md5_entry.<a class="code hl_variable" href="structChecksumEntry.html#aae2307548d69d23749ffdfd9d4acd627">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ea6b71eaa2d57de3fc320990a29ce48d36">Md5</a>;</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> fwrite(&amp;md5_entry, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a9a47b66429ab4db300fdb7fcb931a867">md5</a>, <a class="code hl_define" href="context_8h.html#a09a4f4b2f28cbe522d9b80153666029c">MD5_DIGEST_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#a56f776d418d05f7284ce811aa3ff1e06">length</a> += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>) + <a class="code hl_define" href="context_8h.html#a09a4f4b2f28cbe522d9b80153666029c">MD5_DIGEST_LENGTH</a>;</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#aa82464bce9c97dda1066930b9250cfbe">entries</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> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#ac19eb1258cf0bf1c1998dfef7ae52550">hasSha1</a>)</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> {</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing SHA1 checksum entry&quot;</span>);</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> <a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a> sha1_entry = {0};</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> sha1_entry.<a class="code hl_variable" href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">length</a> = <a class="code hl_define" href="sha1_8h.html#a341f900ed2019f4da21d6970417f9efc">SHA1_DIGEST_LENGTH</a>;</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> sha1_entry.<a class="code hl_variable" href="structChecksumEntry.html#aae2307548d69d23749ffdfd9d4acd627">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ea57867fd2e139c87d4ae5faef0078a903">Sha1</a>;</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> fwrite(&amp;sha1_entry, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a59a7f4fc7db0867035acf60477afd4a6">sha1</a>, <a class="code hl_define" href="sha1_8h.html#a341f900ed2019f4da21d6970417f9efc">SHA1_DIGEST_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#a56f776d418d05f7284ce811aa3ff1e06">length</a> += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>) + <a class="code hl_define" href="sha1_8h.html#a341f900ed2019f4da21d6970417f9efc">SHA1_DIGEST_LENGTH</a>;</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#aa82464bce9c97dda1066930b9250cfbe">entries</a>++;</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> }</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> </div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a4f404ac9841b3f06f8130722ec613ceb">hasSha256</a>)</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span> {</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing SHA256 checksum entry&quot;</span>);</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> <a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a> sha256_entry = {0};</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> sha256_entry.<a class="code hl_variable" href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">length</a> = <a class="code hl_define" href="sha256_8h.html#aa9cf0abf87b30c4c63e9c7e89c590579">SHA256_DIGEST_LENGTH</a>;</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> sha256_entry.<a class="code hl_variable" href="structChecksumEntry.html#aae2307548d69d23749ffdfd9d4acd627">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0eacce7cd78517eecf9be314e0d47e2788c">Sha256</a>;</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> fwrite(&amp;sha256_entry, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a9808d260d9b2ad0c172db164126266a3">sha256</a>, <a class="code hl_define" href="sha256_8h.html#aa9cf0abf87b30c4c63e9c7e89c590579">SHA256_DIGEST_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#a56f776d418d05f7284ce811aa3ff1e06">length</a> += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>) + <a class="code hl_define" href="sha256_8h.html#aa9cf0abf87b30c4c63e9c7e89c590579">SHA256_DIGEST_LENGTH</a>;</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#aa82464bce9c97dda1066930b9250cfbe">entries</a>++;</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> </div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#abe4e66c6bb57259dd1312f5cfb7730a5">hasSpamSum</a>)</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> {</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing SpamSum checksum entry&quot;</span>);</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> <a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a> spamsum_entry = {0};</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> spamsum_entry.<a class="code hl_variable" href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">length</a> = strlen((<span class="keyword">const</span> <span class="keywordtype">char</span> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a1748cd355e21a7b0f4f730dd16bd9752">spamsum</a>);</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> spamsum_entry.<a class="code hl_variable" href="structChecksumEntry.html#aae2307548d69d23749ffdfd9d4acd627">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ead603a5fa54bfacf5bf36eca36c6b54cb">SpamSum</a>;</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> fwrite(&amp;spamsum_entry, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> fwrite(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a1748cd355e21a7b0f4f730dd16bd9752">spamsum</a>, spamsum_entry.<a class="code hl_variable" href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">length</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#a56f776d418d05f7284ce811aa3ff1e06">length</a> += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>) + spamsum_entry.<a class="code hl_variable" href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">length</a>;</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#aa82464bce9c97dda1066930b9250cfbe">entries</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> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#aee0cf46a7cf9f514e2b609542820370d">hasBlake3</a>)</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> {</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing BLAKE3 checksum entry&quot;</span>);</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a> blake3_entry = {0};</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> blake3_entry.<a class="code hl_variable" href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">length</a> = BLAKE3_OUT_LEN;</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> blake3_entry.<a class="code hl_variable" href="structChecksumEntry.html#aae2307548d69d23749ffdfd9d4acd627">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ea38ec9844caac88b80addcad50704f0fd">Blake3</a>;</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> fwrite(&amp;blake3_entry, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#aca24093de3cb292573b7c3ebe777f5e8">blake3</a>, BLAKE3_OUT_LEN, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#a56f776d418d05f7284ce811aa3ff1e06">length</a> += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumEntry.html">ChecksumEntry</a>) + BLAKE3_OUT_LEN;</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> checksum_header.<a class="code hl_variable" href="structChecksumHeader.html#aa82464bce9c97dda1066930b9250cfbe">entries</a>++;</div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a4c3f5ccfe34123e402d1b7641d0d6c03">featureCompatible</a> |= <a class="code hl_enumvalue" href="enums_8h.html#af104aa102cdba100b9f245bef4abd42da8cc0519eeba84d57f99c239f687616b4">AARU_FEATURE_RW_BLAKE3</a>;</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> }</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> </div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, checksum_position, SEEK_SET);</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing checksum header&quot;</span>);</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> fwrite(&amp;checksum_header, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structChecksumHeader.html">ChecksumHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> </div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> <span class="comment">// Add checksum block to index</span></div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding checksum block to index&quot;</span>);</div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> checksum_index_entry;</div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> checksum_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a3e451c2577a6c790f33f99c2da189d46">ChecksumBlock</a>;</div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"> 781</span> checksum_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> checksum_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = checksum_position;</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> </div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;checksum_index_entry);</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added checksum block index entry at offset %&quot;</span> PRIu64, checksum_position);</div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span>}</div>
</div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span></div>
<div class="foldopen" id="foldopen00798" data-start="{" data-end="}">
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"><a class="line" href="close_8c.html#aa2451e6c0fc8d4db3bfb9874f2ca990c"> 798</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#aa2451e6c0fc8d4db3bfb9874f2ca990c">write_tracks_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</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> <span class="comment">// Write tracks block</span></div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">tracks_header</a>.<a class="code hl_variable" href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">entries</a> &lt;= 0 || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> </div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> <span class="keywordtype">long</span> tracks_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> <span class="keywordflow">if</span>(tracks_position &amp; alignment_mask)</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> {</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> uint64_t aligned_position = tracks_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> tracks_position = aligned_position;</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_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing tracks block at position %ld&quot;</span>, tracks_position);</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> <span class="keywordflow">if</span>(fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">tracks_header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTracksHeader.html">TracksHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> {</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> <span class="comment">// Write entries</span></div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> <span class="keywordtype">size_t</span> written_entries =</div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> fwrite(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTrackEntry.html">TrackEntry</a>), ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">tracks_header</a>.<a class="code hl_variable" href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">entries</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> </div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> <span class="keywordflow">if</span>(written_entries == ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">tracks_header</a>.<a class="code hl_variable" href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">entries</a>)</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span> {</div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote tracks block with %u entries&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">tracks_header</a>.<a class="code hl_variable" href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">entries</a>);</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> <span class="comment">// Add tracks block to index</span></div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding tracks block to index&quot;</span>);</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> </div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> tracks_index_entry;</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> tracks_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ae550bdf57660fcbf3500155c29d4637e">TracksBlock</a>;</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> tracks_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> tracks_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = tracks_position;</div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;tracks_index_entry);</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added tracks block index entry at offset %&quot;</span> PRIu64, tracks_position);</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> }</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span>}</div>
</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span></div>
<div class="foldopen" id="foldopen00850" data-start="{" data-end="}">
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"><a class="line" href="close_8c.html#ade7f81cbae198dbbea937551bf670a4f"> 850</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#ade7f81cbae198dbbea937551bf670a4f">write_mode2_subheaders_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</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> <span class="comment">// Write MODE 2 subheader data block</span></div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> </div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> <span class="keywordtype">long</span> mode2_subheaders_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> <span class="keywordflow">if</span>(mode2_subheaders_position &amp; alignment_mask)</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> {</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"> 861</span> uint64_t aligned_position = mode2_subheaders_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> mode2_subheaders_position = aligned_position;</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"> 864</span> }</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span> </div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing MODE 2 subheaders block at position %ld&quot;</span>, mode2_subheaders_position);</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> subheaders_block = {0};</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6af6d3ec9140499909db18dae9cfbfd056">CompactDiscMode2Subheader</a>;</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> =</div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span> (uint32_t)(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>) *</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> 8;</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="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a>, subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</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> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> </div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> <span class="keywordflow">if</span>(subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</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> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a>;</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</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> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> {</div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> buffer = malloc((<span class="keywordtype">size_t</span>)subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> <span class="keywordflow">if</span>(buffer == NULL)</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> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for MODE 2 subheaders compression&quot;</span>);</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> }</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> </div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> <span class="keywordtype">size_t</span> dst_size = (size_t)subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a>, subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties,</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> </div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> </div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <span class="keywordflow">if</span>(subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> {</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> free(buffer);</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a>;</div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> }</div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> }</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> </div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> <span class="keywordflow">if</span>(subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> {</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> }</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> </div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> <span class="keywordflow">if</span>(subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> </div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span> <span class="keywordflow">if</span>(fwrite(&amp;subheaders_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> {</div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> <span class="keywordflow">if</span>(subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> </div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> {</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote MODE 2 subheaders block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> <span class="comment">// Add MODE 2 subheaders block to index</span></div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding MODE 2 subheaders block to index&quot;</span>);</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> mode2_subheaders_index_entry;</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> mode2_subheaders_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> mode2_subheaders_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6af6d3ec9140499909db18dae9cfbfd056">CompactDiscMode2Subheader</a>;</div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> mode2_subheaders_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = mode2_subheaders_position;</div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;mode2_subheaders_index_entry);</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added MODE 2 subheaders block index entry at offset %&quot;</span> PRIu64, mode2_subheaders_position);</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> }</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> }</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> <span class="keywordflow">if</span>(subheaders_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span>}</div>
</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span></div>
<div class="foldopen" id="foldopen00966" data-start="{" data-end="}">
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"><a class="line" href="close_8c.html#af383051987456d1295862e395027ffa8"> 966</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#af383051987456d1295862e395027ffa8">write_sector_prefix</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span>{</div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> </div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> <span class="keywordtype">long</span> prefix_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> <span class="keywordflow">if</span>(prefix_position &amp; alignment_mask)</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> uint64_t aligned_position = prefix_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> prefix_position = aligned_position;</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> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing sector prefix block at position %ld&quot;</span>, prefix_position);</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> prefix_block = {0};</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4cc94cd48947bd2bb9ab37d56b8eab98">CdSectorPrefix</a>;</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a74672215c728bb14ad860c96969a56dc">sector_prefix_offset</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> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a>, prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> </div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> </div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> <span class="keywordflow">if</span>(prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> {</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a>;</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</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">else</span></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> buffer = malloc((<span class="keywordtype">size_t</span>)prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> <span class="keywordflow">if</span>(buffer == NULL)</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> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for CD sector prefix compression&quot;</span>);</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> }</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> <span class="keywordtype">size_t</span> dst_size = (size_t)prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a>, prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties,</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> </div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</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="keywordflow">if</span>(prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> {</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> free(buffer);</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a>;</div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> }</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> }</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> </div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> <span class="keywordflow">if</span>(prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> {</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> }</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> </div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> <span class="keywordflow">if</span>(prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</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="comment">// Write header</span></div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> <span class="keywordflow">if</span>(fwrite(&amp;prefix_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> {</div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> <span class="keywordflow">if</span>(prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> </div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> {</div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote CD sector prefix block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, prefix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> <span class="comment">// Add prefix block to index</span></div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding CD sector prefix block to index&quot;</span>);</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> prefix_index_entry;</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> prefix_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> prefix_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4cc94cd48947bd2bb9ab37d56b8eab98">CdSectorPrefix</a>;</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> prefix_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = prefix_position;</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;prefix_index_entry);</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added CD sector prefix block index entry at offset %&quot;</span> PRIu64, prefix_position);</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> }</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> }</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>(prefix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span>}</div>
</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</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="close_8c.html#a8ea54bc4597be4246f2be361a5854251"> 1088</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a8ea54bc4597be4246f2be361a5854251">write_sector_suffix</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span>{</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> == NULL) <span class="keywordflow">return</span>;</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> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> <span class="keywordtype">long</span> suffix_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> <span class="keywordflow">if</span>(suffix_position &amp; alignment_mask)</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> <span class="keyword">const</span> uint64_t aligned_position = suffix_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> suffix_position = aligned_position;</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> </div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing sector suffix block at position %ld&quot;</span>, suffix_position);</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> suffix_block = {0};</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aee38da0d8fd8047e5468514ff9be0f75">CdSectorSuffix</a>;</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9bb3ead5fcb320a1a1b883a9eb1217d8">sector_suffix_offset</a>;</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> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a>, suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</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> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</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> <span class="keywordflow">if</span>(suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> {</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a>;</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</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> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> {</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span> buffer = malloc((<span class="keywordtype">size_t</span>)suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> {</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for CD sector suffix compression&quot;</span>);</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> }</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> </div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> <span class="keywordtype">size_t</span> dst_size = (size_t)suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a>, suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties,</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> </div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> </div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> <span class="keywordflow">if</span>(suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> {</div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> free(buffer);</div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a>;</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span> }</div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> }</div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span> </div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span> <span class="keywordflow">if</span>(suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> {</div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> }</div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> </div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> <span class="keywordflow">if</span>(suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> </div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span> <span class="keywordflow">if</span>(fwrite(&amp;suffix_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> {</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span> <span class="keywordflow">if</span>(suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span> </div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> {</div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote CD sector suffix block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, suffix_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> <span class="comment">// Add suffix block to index</span></div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding CD sector suffix block to index&quot;</span>);</div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> suffix_index_entry;</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> suffix_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span> suffix_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aee38da0d8fd8047e5468514ff9be0f75">CdSectorSuffix</a>;</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> suffix_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = suffix_position;</div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;suffix_index_entry);</div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added CD sector suffix block index entry at offset %&quot;</span> PRIu64, suffix_position);</div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span> }</div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> }</div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> </div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span> <span class="keywordflow">if</span>(suffix_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span>}</div>
</div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span></div>
<div class="foldopen" id="foldopen01206" data-start="{" data-end="}">
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"><a class="line" href="close_8c.html#ae5ee36ba745233583773cd7a644c8aa7"> 1206</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#ae5ee36ba745233583773cd7a644c8aa7">write_sector_prefix_ddt</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</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>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a> == NULL) <span class="keywordflow">return</span>;</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> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> <span class="keywordtype">long</span> prefix_ddt_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span> <span class="keywordflow">if</span>(prefix_ddt_position &amp; alignment_mask)</div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span> {</div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span> <span class="keyword">const</span> uint64_t aligned_position = prefix_ddt_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span> prefix_ddt_position = aligned_position;</div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span> }</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span> </div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing sector prefix DDT v2 at position %ld&quot;</span>, prefix_ddt_position);</div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> <a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a> ddt_header2 = {0};</div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a80a88ec68cd0332a57886ac363bfa4d1">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a14f9ccf36df63e036d69291182cf7bbb">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4cc94cd48947bd2bb9ab37d56b8eab98">CdSectorPrefix</a>;</div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a68f4825db4e22906af0e55a359360656">levels</a> = 1;</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ac8ec7921a5651b5107eda4e99b488798">tableLevel</a> = 0;</div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a>;</div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>;</div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>;</div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad9a2beb3a79bc6c239ba04fe341e0cde">dataShift</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad9a2beb3a79bc6c239ba04fe341e0cde">dataShift</a>;</div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a> = 0; <span class="comment">// Single-level DDT</span></div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> =</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>;</div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">blocks</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">blocks</a>;</div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a238a2ca31ce0f60af3e59a1cb3e2e73c">start</a> = 0;</div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> * <span class="keyword">sizeof</span>(uint64_t);</div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a>, (uint32_t)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>);</div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> </div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</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> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> {</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a>;</div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>;</div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span> }</div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> <span class="keywordflow">else</span></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> buffer = malloc((<span class="keywordtype">size_t</span>)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span> {</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for sector prefix DDT v2 compression&quot;</span>);</div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"> 1256</span> }</div>
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span> </div>
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span> <span class="keywordtype">size_t</span> dst_size = (size_t)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2 * 2;</div>
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a>, ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>,</div>
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span> lzma_properties, &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span> </div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span> </div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"> 1265</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> &gt;= ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</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> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> free(buffer);</div>
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span> buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a>;</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> }</div>
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span> </div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</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> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>;</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>;</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> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, (uint32_t)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>);</div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span> </div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span> </div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span> <span class="keywordflow">if</span>(fwrite(&amp;ddt_header2, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span> {</div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span> </div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span> {</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote sector prefix DDT v2 (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>);</div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span> <span class="comment">// Add prefix block to index</span></div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding sector prefix DDT v2 to index&quot;</span>);</div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> prefix_ddt_index_entry;</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> prefix_ddt_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span> prefix_ddt_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4cc94cd48947bd2bb9ab37d56b8eab98">CdSectorPrefix</a>;</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span> prefix_ddt_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = prefix_ddt_position;</div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;prefix_ddt_index_entry);</div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added sector prefix DDT v2 index entry at offset %&quot;</span> PRIu64, prefix_ddt_position);</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> }</div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span> </div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span>}</div>
</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span></div>
<div class="foldopen" id="foldopen01350" data-start="{" data-end="}">
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"><a class="line" href="close_8c.html#a9d0eb026d1fa544b554493e780b7fbc1"> 1350</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a9d0eb026d1fa544b554493e780b7fbc1">write_sector_suffix_ddt</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span>{</div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span> </div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l01355" name="l01355"></a><span class="lineno"> 1355</span> <span class="keywordtype">long</span> suffix_ddt_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01356" name="l01356"></a><span class="lineno"> 1356</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"> 1357</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span> <span class="keywordflow">if</span>(suffix_ddt_position &amp; alignment_mask)</div>
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"> 1359</span> {</div>
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span> <span class="keyword">const</span> uint64_t aligned_position = suffix_ddt_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l01361" name="l01361"></a><span class="lineno"> 1361</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l01362" name="l01362"></a><span class="lineno"> 1362</span> suffix_ddt_position = aligned_position;</div>
<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"> 1363</span> }</div>
<div class="line"><a id="l01364" name="l01364"></a><span class="lineno"> 1364</span> </div>
<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"> 1365</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing sector suffix DDT v2 at position %ld&quot;</span>, suffix_ddt_position);</div>
<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"> 1366</span> <a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a> ddt_header2 = {0};</div>
<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"> 1367</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a80a88ec68cd0332a57886ac363bfa4d1">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"> 1368</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a14f9ccf36df63e036d69291182cf7bbb">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aee38da0d8fd8047e5468514ff9be0f75">CdSectorSuffix</a>;</div>
<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"> 1369</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a68f4825db4e22906af0e55a359360656">levels</a> = 1;</div>
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ac8ec7921a5651b5107eda4e99b488798">tableLevel</a> = 0;</div>
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a>;</div>
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>;</div>
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>;</div>
<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad9a2beb3a79bc6c239ba04fe341e0cde">dataShift</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ad9a2beb3a79bc6c239ba04fe341e0cde">dataShift</a>;</div>
<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">tableShift</a> = 0; <span class="comment">// Single-level DDT</span></div>
<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> =</div>
<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"> 1378</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>;</div>
<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">blocks</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">blocks</a>;</div>
<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"> 1380</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a238a2ca31ce0f60af3e59a1cb3e2e73c">start</a> = 0;</div>
<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"> 1381</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">entries</a> * <span class="keyword">sizeof</span>(uint64_t);</div>
<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"> 1383</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a>, (uint32_t)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>);</div>
<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"> 1384</span> </div>
<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"> 1385</span> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"> 1386</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"> 1387</span> </div>
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span> {</div>
<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"> 1390</span> buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a>;</div>
<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>;</div>
<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span> }</div>
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"> 1393</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span> {</div>
<div class="line"><a id="l01395" name="l01395"></a><span class="lineno"> 1395</span> buffer = malloc((<span class="keywordtype">size_t</span>)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l01396" name="l01396"></a><span class="lineno"> 1396</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l01397" name="l01397"></a><span class="lineno"> 1397</span> {</div>
<div class="line"><a id="l01398" name="l01398"></a><span class="lineno"> 1398</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for sector suffix DDT v2 compression&quot;</span>);</div>
<div class="line"><a id="l01399" name="l01399"></a><span class="lineno"> 1399</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01400" name="l01400"></a><span class="lineno"> 1400</span> }</div>
<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"> 1401</span> </div>
<div class="line"><a id="l01402" name="l01402"></a><span class="lineno"> 1402</span> <span class="keywordtype">size_t</span> dst_size = (size_t)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a> * 2 * 2;</div>
<div class="line"><a id="l01403" name="l01403"></a><span class="lineno"> 1403</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01404" name="l01404"></a><span class="lineno"> 1404</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a>, ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>,</div>
<div class="line"><a id="l01405" name="l01405"></a><span class="lineno"> 1405</span> lzma_properties, &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01406" name="l01406"></a><span class="lineno"> 1406</span> </div>
<div class="line"><a id="l01407" name="l01407"></a><span class="lineno"> 1407</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l01408" name="l01408"></a><span class="lineno"> 1408</span> </div>
<div class="line"><a id="l01409" name="l01409"></a><span class="lineno"> 1409</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> &gt;= ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>)</div>
<div class="line"><a id="l01410" name="l01410"></a><span class="lineno"> 1410</span> {</div>
<div class="line"><a id="l01411" name="l01411"></a><span class="lineno"> 1411</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"> 1412</span> free(buffer);</div>
<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span> buffer = (uint8_t *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a>;</div>
<div class="line"><a id="l01414" name="l01414"></a><span class="lineno"> 1414</span> }</div>
<div class="line"><a id="l01415" name="l01415"></a><span class="lineno"> 1415</span> }</div>
<div class="line"><a id="l01416" name="l01416"></a><span class="lineno"> 1416</span> </div>
<div class="line"><a id="l01417" name="l01417"></a><span class="lineno"> 1417</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span> {</div>
<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">length</a>;</div>
<div class="line"><a id="l01420" name="l01420"></a><span class="lineno"> 1420</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">crc64</a>;</div>
<div class="line"><a id="l01421" name="l01421"></a><span class="lineno"> 1421</span> }</div>
<div class="line"><a id="l01422" name="l01422"></a><span class="lineno"> 1422</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01423" name="l01423"></a><span class="lineno"> 1423</span> ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, (uint32_t)ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>);</div>
<div class="line"><a id="l01424" name="l01424"></a><span class="lineno"> 1424</span> </div>
<div class="line"><a id="l01425" name="l01425"></a><span class="lineno"> 1425</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01426" name="l01426"></a><span class="lineno"> 1426</span> </div>
<div class="line"><a id="l01427" name="l01427"></a><span class="lineno"> 1427</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l01428" name="l01428"></a><span class="lineno"> 1428</span> <span class="keywordflow">if</span>(fwrite(&amp;ddt_header2, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDdtHeader2.html">DdtHeader2</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l01429" name="l01429"></a><span class="lineno"> 1429</span> {</div>
<div class="line"><a id="l01430" name="l01430"></a><span class="lineno"> 1430</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01431" name="l01431"></a><span class="lineno"> 1431</span> </div>
<div class="line"><a id="l01432" name="l01432"></a><span class="lineno"> 1432</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"> 1433</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"> 1434</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span> {</div>
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote sector suffix DDT v2 (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">cmpLength</a>);</div>
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span> <span class="comment">// Add suffix block to index</span></div>
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding sector suffix DDT v2 to index&quot;</span>);</div>
<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> suffix_ddt_index_entry;</div>
<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span> suffix_ddt_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a>;</div>
<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"> 1441</span> suffix_ddt_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aee38da0d8fd8047e5468514ff9be0f75">CdSectorSuffix</a>;</div>
<div class="line"><a id="l01442" name="l01442"></a><span class="lineno"> 1442</span> suffix_ddt_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = suffix_ddt_position;</div>
<div class="line"><a id="l01443" name="l01443"></a><span class="lineno"> 1443</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;suffix_ddt_index_entry);</div>
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added sector suffix DDT v2 index entry at offset %&quot;</span> PRIu64, suffix_ddt_position);</div>
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"> 1445</span> }</div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span> }</div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span> </div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span> <span class="keywordflow">if</span>(ddt_header2.<a class="code hl_variable" href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span>}</div>
</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span></div>
<div class="foldopen" id="foldopen01508" data-start="{" data-end="}">
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"><a class="line" href="close_8c.html#ae0a4b670cbb5359edd44751e1b76ca9c"> 1508</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#ae0a4b670cbb5359edd44751e1b76ca9c">write_sector_subchannel</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"> 1509</span>{</div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span> </div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l01515" name="l01515"></a><span class="lineno"> 1515</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l01516" name="l01516"></a><span class="lineno"> 1516</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l01517" name="l01517"></a><span class="lineno"> 1517</span> {</div>
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"> 1519</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"> 1520</span> block_position = aligned_position;</div>
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span> }</div>
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"> 1522</span> </div>
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"> 1523</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing sector subchannel block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"> 1524</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> subchannel_block = {0};</div>
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"> 1525</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span> </div>
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span> uint8_t *buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a>;</div>
<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span> <span class="keywordtype">bool</span> owns_buffer = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l01531" name="l01531"></a><span class="lineno"> 1531</span> </div>
<div class="line"><a id="l01532" name="l01532"></a><span class="lineno"> 1532</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01533" name="l01533"></a><span class="lineno"> 1533</span> </div>
<div class="line"><a id="l01534" name="l01534"></a><span class="lineno"> 1534</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> == <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l01535" name="l01535"></a><span class="lineno"> 1535</span> {</div>
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0e53a44004fde98a09614db19b16638e">CdSectorSubchannel</a>;</div>
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"> 1537</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> +</div>
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"> 1538</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>) *</div>
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span> 96;</div>
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"> 1540</span> </div>
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a>)</div>
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"> 1542</span> {</div>
<div class="line"><a id="l01543" name="l01543"></a><span class="lineno"> 1543</span> uint8_t *cst_buffer = malloc(subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l01544" name="l01544"></a><span class="lineno"> 1544</span> </div>
<div class="line"><a id="l01545" name="l01545"></a><span class="lineno"> 1545</span> <span class="keywordflow">if</span>(cst_buffer == NULL)</div>
<div class="line"><a id="l01546" name="l01546"></a><span class="lineno"> 1546</span> {</div>
<div class="line"><a id="l01547" name="l01547"></a><span class="lineno"> 1547</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for Claunia Subchannel Transform output&quot;</span>);</div>
<div class="line"><a id="l01548" name="l01548"></a><span class="lineno"> 1548</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01549" name="l01549"></a><span class="lineno"> 1549</span> }</div>
<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"> 1550</span> </div>
<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"> 1551</span> uint8_t *dst_buffer = malloc(subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l01552" name="l01552"></a><span class="lineno"> 1552</span> </div>
<div class="line"><a id="l01553" name="l01553"></a><span class="lineno"> 1553</span> <span class="keywordflow">if</span>(dst_buffer == NULL)</div>
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"> 1554</span> {</div>
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for LZMA output&quot;</span>);</div>
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"> 1556</span> free(cst_buffer);</div>
<div class="line"><a id="l01557" name="l01557"></a><span class="lineno"> 1557</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01558" name="l01558"></a><span class="lineno"> 1558</span> }</div>
<div class="line"><a id="l01559" name="l01559"></a><span class="lineno"> 1559</span> </div>
<div class="line"><a id="l01560" name="l01560"></a><span class="lineno"> 1560</span> <a class="code hl_function" href="decls_8h.html#a0b29337ce6fedc79bf7d1a84d92173d6">aaruf_cst_transform</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a>, cst_buffer, subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l01561" name="l01561"></a><span class="lineno"> 1561</span> <span class="keywordtype">size_t</span> dst_size = subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01562" name="l01562"></a><span class="lineno"> 1562</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01563" name="l01563"></a><span class="lineno"> 1563</span> </div>
<div class="line"><a id="l01564" name="l01564"></a><span class="lineno"> 1564</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(dst_buffer, &amp;dst_size, cst_buffer, subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties,</div>
<div class="line"><a id="l01565" name="l01565"></a><span class="lineno"> 1565</span> &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01566" name="l01566"></a><span class="lineno"> 1566</span> </div>
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"> 1567</span> free(cst_buffer);</div>
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"> 1568</span> </div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span> <span class="keywordflow">if</span>(dst_size &lt; subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span> {</div>
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ab6147cfb5a7f96c11a4e4aafd9cc8ce0">LzmaClauniaSubchannelTransform</a>;</div>
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l01573" name="l01573"></a><span class="lineno"> 1573</span> buffer = dst_buffer;</div>
<div class="line"><a id="l01574" name="l01574"></a><span class="lineno"> 1574</span> owns_buffer = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01575" name="l01575"></a><span class="lineno"> 1575</span> }</div>
<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"> 1576</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"> 1577</span> {</div>
<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"> 1578</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01579" name="l01579"></a><span class="lineno"> 1579</span> free(dst_buffer);</div>
<div class="line"><a id="l01580" name="l01580"></a><span class="lineno"> 1580</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01581" name="l01581"></a><span class="lineno"> 1581</span> }</div>
<div class="line"><a id="l01582" name="l01582"></a><span class="lineno"> 1582</span> }</div>
<div class="line"><a id="l01583" name="l01583"></a><span class="lineno"> 1583</span> }</div>
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"> 1584</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> == <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd">BlockMedia</a>)</div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span> {</div>
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"> 1586</span> <span class="keywordflow">switch</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a>)</div>
<div class="line"><a id="l01587" name="l01587"></a><span class="lineno"> 1587</span> {</div>
<div class="line"><a id="l01588" name="l01588"></a><span class="lineno"> 1588</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0a8ba83da933d4ad284631784a991f19">AppleProfile</a>:</div>
<div class="line"><a id="l01589" name="l01589"></a><span class="lineno"> 1589</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac08b59f9e8ecf5e380092edddb0340ec">AppleFileWare</a>:</div>
<div class="line"><a id="l01590" name="l01590"></a><span class="lineno"> 1590</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a17075a1bffaf0da39e0baacabc84a0fe">AppleProfileTag</a>;</div>
<div class="line"><a id="l01591" name="l01591"></a><span class="lineno"> 1591</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>) * 20;</div>
<div class="line"><a id="l01592" name="l01592"></a><span class="lineno"> 1592</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01593" name="l01593"></a><span class="lineno"> 1593</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aae809315e2cd79c3fd74d1604c38f3ae6">AppleSonyDS</a>:</div>
<div class="line"><a id="l01594" name="l01594"></a><span class="lineno"> 1594</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa3d003ea60d3ecb7018a671e1302938a0">AppleSonySS</a>:</div>
<div class="line"><a id="l01595" name="l01595"></a><span class="lineno"> 1595</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a459369a1461803ec0cc998b606d53b07">AppleSonyTag</a>;</div>
<div class="line"><a id="l01596" name="l01596"></a><span class="lineno"> 1596</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>) * 12;</div>
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"> 1597</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"> 1598</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aab933939a09397f9311004f3dd137226d">PriamDataTower</a>:</div>
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"> 1599</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a6ed24283290264c28e919adf5a273f99">PriamDataTowerTag</a>;</div>
<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"> 1600</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>) * 24;</div>
<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"> 1601</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"> 1602</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01603" name="l01603"></a><span class="lineno"> 1603</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Incorrect media type, not writing sector subchannel block&quot;</span>);</div>
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"> 1604</span> <span class="keywordflow">return</span>; <span class="comment">// Incorrect media type</span></div>
<div class="line"><a id="l01605" name="l01605"></a><span class="lineno"> 1605</span> }</div>
<div class="line"><a id="l01606" name="l01606"></a><span class="lineno"> 1606</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>;</div>
<div class="line"><a id="l01607" name="l01607"></a><span class="lineno"> 1607</span> </div>
<div class="line"><a id="l01608" name="l01608"></a><span class="lineno"> 1608</span> uint8_t *dst_buffer = malloc(subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l01609" name="l01609"></a><span class="lineno"> 1609</span> </div>
<div class="line"><a id="l01610" name="l01610"></a><span class="lineno"> 1610</span> <span class="keywordflow">if</span>(dst_buffer == NULL)</div>
<div class="line"><a id="l01611" name="l01611"></a><span class="lineno"> 1611</span> {</div>
<div class="line"><a id="l01612" name="l01612"></a><span class="lineno"> 1612</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for LZMA output&quot;</span>);</div>
<div class="line"><a id="l01613" name="l01613"></a><span class="lineno"> 1613</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01614" name="l01614"></a><span class="lineno"> 1614</span> }</div>
<div class="line"><a id="l01615" name="l01615"></a><span class="lineno"> 1615</span> </div>
<div class="line"><a id="l01616" name="l01616"></a><span class="lineno"> 1616</span> <span class="keywordtype">size_t</span> dst_size = subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01617" name="l01617"></a><span class="lineno"> 1617</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01618" name="l01618"></a><span class="lineno"> 1618</span> </div>
<div class="line"><a id="l01619" name="l01619"></a><span class="lineno"> 1619</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(dst_buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a>, subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>,</div>
<div class="line"><a id="l01620" name="l01620"></a><span class="lineno"> 1620</span> lzma_properties, &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01621" name="l01621"></a><span class="lineno"> 1621</span> </div>
<div class="line"><a id="l01622" name="l01622"></a><span class="lineno"> 1622</span> <span class="keywordflow">if</span>(dst_size &lt; subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l01623" name="l01623"></a><span class="lineno"> 1623</span> {</div>
<div class="line"><a id="l01624" name="l01624"></a><span class="lineno"> 1624</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l01625" name="l01625"></a><span class="lineno"> 1625</span> buffer = dst_buffer;</div>
<div class="line"><a id="l01626" name="l01626"></a><span class="lineno"> 1626</span> owns_buffer = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01627" name="l01627"></a><span class="lineno"> 1627</span> }</div>
<div class="line"><a id="l01628" name="l01628"></a><span class="lineno"> 1628</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01629" name="l01629"></a><span class="lineno"> 1629</span> {</div>
<div class="line"><a id="l01630" name="l01630"></a><span class="lineno"> 1630</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01631" name="l01631"></a><span class="lineno"> 1631</span> free(dst_buffer);</div>
<div class="line"><a id="l01632" name="l01632"></a><span class="lineno"> 1632</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01633" name="l01633"></a><span class="lineno"> 1633</span> }</div>
<div class="line"><a id="l01634" name="l01634"></a><span class="lineno"> 1634</span> }</div>
<div class="line"><a id="l01635" name="l01635"></a><span class="lineno"> 1635</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01636" name="l01636"></a><span class="lineno"> 1636</span> {</div>
<div class="line"><a id="l01637" name="l01637"></a><span class="lineno"> 1637</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Incorrect media type, not writing sector subchannel block&quot;</span>);</div>
<div class="line"><a id="l01638" name="l01638"></a><span class="lineno"> 1638</span> <span class="keywordflow">return</span>; <span class="comment">// Incorrect media type</span></div>
<div class="line"><a id="l01639" name="l01639"></a><span class="lineno"> 1639</span> }</div>
<div class="line"><a id="l01640" name="l01640"></a><span class="lineno"> 1640</span> </div>
<div class="line"><a id="l01641" name="l01641"></a><span class="lineno"> 1641</span> <span class="comment">// Calculate CRC64 for raw subchannel data and compressed payload when present</span></div>
<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"> 1642</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a>, subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"> 1643</span> <span class="keywordflow">if</span>(subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01644" name="l01644"></a><span class="lineno"> 1644</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l01645" name="l01645"></a><span class="lineno"> 1645</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01646" name="l01646"></a><span class="lineno"> 1646</span> subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01647" name="l01647"></a><span class="lineno"> 1647</span> </div>
<div class="line"><a id="l01648" name="l01648"></a><span class="lineno"> 1648</span> <span class="keywordflow">if</span>(subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> != <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>) subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01649" name="l01649"></a><span class="lineno"> 1649</span> </div>
<div class="line"><a id="l01650" name="l01650"></a><span class="lineno"> 1650</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l01651" name="l01651"></a><span class="lineno"> 1651</span> <span class="keywordflow">if</span>(fwrite(&amp;subchannel_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l01652" name="l01652"></a><span class="lineno"> 1652</span> {</div>
<div class="line"><a id="l01653" name="l01653"></a><span class="lineno"> 1653</span> <span class="keywordflow">if</span>(subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> != <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01654" name="l01654"></a><span class="lineno"> 1654</span> </div>
<div class="line"><a id="l01655" name="l01655"></a><span class="lineno"> 1655</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l01656" name="l01656"></a><span class="lineno"> 1656</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01657" name="l01657"></a><span class="lineno"> 1657</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l01658" name="l01658"></a><span class="lineno"> 1658</span> {</div>
<div class="line"><a id="l01659" name="l01659"></a><span class="lineno"> 1659</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote sector subchannel block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01660" name="l01660"></a><span class="lineno"> 1660</span> <span class="comment">// Add subchannel block to index</span></div>
<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"> 1661</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding sector subchannel block to index&quot;</span>);</div>
<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"> 1662</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> subchannel_index_entry;</div>
<div class="line"><a id="l01663" name="l01663"></a><span class="lineno"> 1663</span> subchannel_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"> 1664</span> subchannel_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = subchannel_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a>;</div>
<div class="line"><a id="l01665" name="l01665"></a><span class="lineno"> 1665</span> subchannel_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l01666" name="l01666"></a><span class="lineno"> 1666</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;subchannel_index_entry);</div>
<div class="line"><a id="l01667" name="l01667"></a><span class="lineno"> 1667</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added sector subchannel block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l01668" name="l01668"></a><span class="lineno"> 1668</span> }</div>
<div class="line"><a id="l01669" name="l01669"></a><span class="lineno"> 1669</span> }</div>
<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"> 1670</span> </div>
<div class="line"><a id="l01671" name="l01671"></a><span class="lineno"> 1671</span> <span class="keywordflow">if</span>(owns_buffer) free(buffer);</div>
<div class="line"><a id="l01672" name="l01672"></a><span class="lineno"> 1672</span>}</div>
</div>
<div class="line"><a id="l01673" name="l01673"></a><span class="lineno"> 1673</span></div>
<div class="foldopen" id="foldopen01810" data-start="{" data-end="}">
<div class="line"><a id="l01810" name="l01810"></a><span class="lineno"><a class="line" href="close_8c.html#a13f6c475294969c1eb8c59ff53c91af9"> 1810</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a13f6c475294969c1eb8c59ff53c91af9">write_dvd_long_sector_blocks</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l01811" name="l01811"></a><span class="lineno"> 1811</span>{</div>
<div class="line"><a id="l01812" name="l01812"></a><span class="lineno"> 1812</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> == NULL)</div>
<div class="line"><a id="l01813" name="l01813"></a><span class="lineno"> 1813</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01814" name="l01814"></a><span class="lineno"> 1814</span> </div>
<div class="line"><a id="l01815" name="l01815"></a><span class="lineno"> 1815</span> uint64_t total_sectors =</div>
<div class="line"><a id="l01816" name="l01816"></a><span class="lineno"> 1816</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>;</div>
<div class="line"><a id="l01817" name="l01817"></a><span class="lineno"> 1817</span> </div>
<div class="line"><a id="l01818" name="l01818"></a><span class="lineno"> 1818</span> <span class="comment">// Write DVD sector ID block</span></div>
<div class="line"><a id="l01819" name="l01819"></a><span class="lineno"> 1819</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l01820" name="l01820"></a><span class="lineno"> 1820</span> <span class="keywordtype">long</span> id_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01821" name="l01821"></a><span class="lineno"> 1821</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l01822" name="l01822"></a><span class="lineno"> 1822</span> <span class="keywordflow">if</span>(id_position &amp; alignment_mask)</div>
<div class="line"><a id="l01823" name="l01823"></a><span class="lineno"> 1823</span> {</div>
<div class="line"><a id="l01824" name="l01824"></a><span class="lineno"> 1824</span> <span class="keyword">const</span> uint64_t aligned_position = id_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l01825" name="l01825"></a><span class="lineno"> 1825</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l01826" name="l01826"></a><span class="lineno"> 1826</span> id_position = aligned_position;</div>
<div class="line"><a id="l01827" name="l01827"></a><span class="lineno"> 1827</span> }</div>
<div class="line"><a id="l01828" name="l01828"></a><span class="lineno"> 1828</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing DVD sector ID block at position %ld&quot;</span>, id_position);</div>
<div class="line"><a id="l01829" name="l01829"></a><span class="lineno"> 1829</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> id_block = {0};</div>
<div class="line"><a id="l01830" name="l01830"></a><span class="lineno"> 1830</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01831" name="l01831"></a><span class="lineno"> 1831</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ac1c178060cb3287b7283b83000f28dab">DvdSectorId</a>;</div>
<div class="line"><a id="l01832" name="l01832"></a><span class="lineno"> 1832</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01833" name="l01833"></a><span class="lineno"> 1833</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)total_sectors * 4;</div>
<div class="line"><a id="l01834" name="l01834"></a><span class="lineno"> 1834</span> </div>
<div class="line"><a id="l01835" name="l01835"></a><span class="lineno"> 1835</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l01836" name="l01836"></a><span class="lineno"> 1836</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a>, id_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l01837" name="l01837"></a><span class="lineno"> 1837</span> </div>
<div class="line"><a id="l01838" name="l01838"></a><span class="lineno"> 1838</span> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l01839" name="l01839"></a><span class="lineno"> 1839</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l01840" name="l01840"></a><span class="lineno"> 1840</span> </div>
<div class="line"><a id="l01841" name="l01841"></a><span class="lineno"> 1841</span> <span class="keywordflow">if</span>(id_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01842" name="l01842"></a><span class="lineno"> 1842</span> {</div>
<div class="line"><a id="l01843" name="l01843"></a><span class="lineno"> 1843</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a>;</div>
<div class="line"><a id="l01844" name="l01844"></a><span class="lineno"> 1844</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = id_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l01845" name="l01845"></a><span class="lineno"> 1845</span> }</div>
<div class="line"><a id="l01846" name="l01846"></a><span class="lineno"> 1846</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01847" name="l01847"></a><span class="lineno"> 1847</span> {</div>
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"> 1848</span> buffer = malloc((<span class="keywordtype">size_t</span>)id_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span> {</div>
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for DVD sector ID compression&quot;</span>);</div>
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"> 1852</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01853" name="l01853"></a><span class="lineno"> 1853</span> }</div>
<div class="line"><a id="l01854" name="l01854"></a><span class="lineno"> 1854</span> </div>
<div class="line"><a id="l01855" name="l01855"></a><span class="lineno"> 1855</span> <span class="keywordtype">size_t</span> dst_size = (size_t)id_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l01856" name="l01856"></a><span class="lineno"> 1856</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01857" name="l01857"></a><span class="lineno"> 1857</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a>, id_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties, &amp;props_size, 9,</div>
<div class="line"><a id="l01858" name="l01858"></a><span class="lineno"> 1858</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01859" name="l01859"></a><span class="lineno"> 1859</span> </div>
<div class="line"><a id="l01860" name="l01860"></a><span class="lineno"> 1860</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l01861" name="l01861"></a><span class="lineno"> 1861</span> </div>
<div class="line"><a id="l01862" name="l01862"></a><span class="lineno"> 1862</span> <span class="keywordflow">if</span>(id_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= id_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"> 1863</span> {</div>
<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"> 1864</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"> 1865</span> free(buffer);</div>
<div class="line"><a id="l01866" name="l01866"></a><span class="lineno"> 1866</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a>;</div>
<div class="line"><a id="l01867" name="l01867"></a><span class="lineno"> 1867</span> }</div>
<div class="line"><a id="l01868" name="l01868"></a><span class="lineno"> 1868</span> }</div>
<div class="line"><a id="l01869" name="l01869"></a><span class="lineno"> 1869</span> </div>
<div class="line"><a id="l01870" name="l01870"></a><span class="lineno"> 1870</span> <span class="keywordflow">if</span>(id_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01871" name="l01871"></a><span class="lineno"> 1871</span> {</div>
<div class="line"><a id="l01872" name="l01872"></a><span class="lineno"> 1872</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = id_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01873" name="l01873"></a><span class="lineno"> 1873</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = id_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l01874" name="l01874"></a><span class="lineno"> 1874</span> }</div>
<div class="line"><a id="l01875" name="l01875"></a><span class="lineno"> 1875</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01876" name="l01876"></a><span class="lineno"> 1876</span> id_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, id_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01877" name="l01877"></a><span class="lineno"> 1877</span> </div>
<div class="line"><a id="l01878" name="l01878"></a><span class="lineno"> 1878</span> <span class="keywordflow">if</span>(id_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) id_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01879" name="l01879"></a><span class="lineno"> 1879</span> </div>
<div class="line"><a id="l01880" name="l01880"></a><span class="lineno"> 1880</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l01881" name="l01881"></a><span class="lineno"> 1881</span> <span class="keywordflow">if</span>(fwrite(&amp;id_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l01882" name="l01882"></a><span class="lineno"> 1882</span> {</div>
<div class="line"><a id="l01883" name="l01883"></a><span class="lineno"> 1883</span> <span class="keywordflow">if</span>(id_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01884" name="l01884"></a><span class="lineno"> 1884</span> </div>
<div class="line"><a id="l01885" name="l01885"></a><span class="lineno"> 1885</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l01886" name="l01886"></a><span class="lineno"> 1886</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, id_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01887" name="l01887"></a><span class="lineno"> 1887</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l01888" name="l01888"></a><span class="lineno"> 1888</span> {</div>
<div class="line"><a id="l01889" name="l01889"></a><span class="lineno"> 1889</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote DVD sector ID block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, id_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01890" name="l01890"></a><span class="lineno"> 1890</span> <span class="comment">// Add ID block to index</span></div>
<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"> 1891</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding DVD sector ID block to index&quot;</span>);</div>
<div class="line"><a id="l01892" name="l01892"></a><span class="lineno"> 1892</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> id_index_entry;</div>
<div class="line"><a id="l01893" name="l01893"></a><span class="lineno"> 1893</span> id_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01894" name="l01894"></a><span class="lineno"> 1894</span> id_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ac1c178060cb3287b7283b83000f28dab">DvdSectorId</a>;</div>
<div class="line"><a id="l01895" name="l01895"></a><span class="lineno"> 1895</span> id_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = id_position;</div>
<div class="line"><a id="l01896" name="l01896"></a><span class="lineno"> 1896</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;id_index_entry);</div>
<div class="line"><a id="l01897" name="l01897"></a><span class="lineno"> 1897</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added DVD sector ID block index entry at offset %&quot;</span> PRIu64, id_position);</div>
<div class="line"><a id="l01898" name="l01898"></a><span class="lineno"> 1898</span> }</div>
<div class="line"><a id="l01899" name="l01899"></a><span class="lineno"> 1899</span> }</div>
<div class="line"><a id="l01900" name="l01900"></a><span class="lineno"> 1900</span> </div>
<div class="line"><a id="l01901" name="l01901"></a><span class="lineno"> 1901</span> <span class="keywordflow">if</span>(id_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l01902" name="l01902"></a><span class="lineno"> 1902</span> </div>
<div class="line"><a id="l01903" name="l01903"></a><span class="lineno"> 1903</span> <span class="comment">// Write DVD sector IED block</span></div>
<div class="line"><a id="l01904" name="l01904"></a><span class="lineno"> 1904</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l01905" name="l01905"></a><span class="lineno"> 1905</span> <span class="keywordtype">long</span> ied_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01906" name="l01906"></a><span class="lineno"> 1906</span> <span class="keywordflow">if</span>(ied_position &amp; alignment_mask)</div>
<div class="line"><a id="l01907" name="l01907"></a><span class="lineno"> 1907</span> {</div>
<div class="line"><a id="l01908" name="l01908"></a><span class="lineno"> 1908</span> <span class="keyword">const</span> uint64_t aligned_position = ied_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l01909" name="l01909"></a><span class="lineno"> 1909</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l01910" name="l01910"></a><span class="lineno"> 1910</span> ied_position = aligned_position;</div>
<div class="line"><a id="l01911" name="l01911"></a><span class="lineno"> 1911</span> }</div>
<div class="line"><a id="l01912" name="l01912"></a><span class="lineno"> 1912</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing DVD sector IED block at position %ld&quot;</span>, ied_position);</div>
<div class="line"><a id="l01913" name="l01913"></a><span class="lineno"> 1913</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> ied_block = {0};</div>
<div class="line"><a id="l01914" name="l01914"></a><span class="lineno"> 1914</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01915" name="l01915"></a><span class="lineno"> 1915</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a3340d65528decaa438460aaf53f2febe">DvdSectorIed</a>;</div>
<div class="line"><a id="l01916" name="l01916"></a><span class="lineno"> 1916</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01917" name="l01917"></a><span class="lineno"> 1917</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)total_sectors * 2;</div>
<div class="line"><a id="l01918" name="l01918"></a><span class="lineno"> 1918</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l01919" name="l01919"></a><span class="lineno"> 1919</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a>, ied_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l01920" name="l01920"></a><span class="lineno"> 1920</span> </div>
<div class="line"><a id="l01921" name="l01921"></a><span class="lineno"> 1921</span> buffer = NULL;</div>
<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"> 1922</span> </div>
<div class="line"><a id="l01923" name="l01923"></a><span class="lineno"> 1923</span> <span class="keywordflow">if</span>(ied_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01924" name="l01924"></a><span class="lineno"> 1924</span> {</div>
<div class="line"><a id="l01925" name="l01925"></a><span class="lineno"> 1925</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a>;</div>
<div class="line"><a id="l01926" name="l01926"></a><span class="lineno"> 1926</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = ied_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l01927" name="l01927"></a><span class="lineno"> 1927</span> }</div>
<div class="line"><a id="l01928" name="l01928"></a><span class="lineno"> 1928</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01929" name="l01929"></a><span class="lineno"> 1929</span> {</div>
<div class="line"><a id="l01930" name="l01930"></a><span class="lineno"> 1930</span> buffer = malloc((<span class="keywordtype">size_t</span>)ied_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l01931" name="l01931"></a><span class="lineno"> 1931</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l01932" name="l01932"></a><span class="lineno"> 1932</span> {</div>
<div class="line"><a id="l01933" name="l01933"></a><span class="lineno"> 1933</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for DVD sector IED compression&quot;</span>);</div>
<div class="line"><a id="l01934" name="l01934"></a><span class="lineno"> 1934</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01935" name="l01935"></a><span class="lineno"> 1935</span> }</div>
<div class="line"><a id="l01936" name="l01936"></a><span class="lineno"> 1936</span> </div>
<div class="line"><a id="l01937" name="l01937"></a><span class="lineno"> 1937</span> <span class="keywordtype">size_t</span> dst_size = (size_t)ied_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l01938" name="l01938"></a><span class="lineno"> 1938</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01939" name="l01939"></a><span class="lineno"> 1939</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a>, ied_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties, &amp;props_size, 9,</div>
<div class="line"><a id="l01940" name="l01940"></a><span class="lineno"> 1940</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l01941" name="l01941"></a><span class="lineno"> 1941</span> </div>
<div class="line"><a id="l01942" name="l01942"></a><span class="lineno"> 1942</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l01943" name="l01943"></a><span class="lineno"> 1943</span> </div>
<div class="line"><a id="l01944" name="l01944"></a><span class="lineno"> 1944</span> <span class="keywordflow">if</span>(ied_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= ied_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l01945" name="l01945"></a><span class="lineno"> 1945</span> {</div>
<div class="line"><a id="l01946" name="l01946"></a><span class="lineno"> 1946</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01947" name="l01947"></a><span class="lineno"> 1947</span> free(buffer);</div>
<div class="line"><a id="l01948" name="l01948"></a><span class="lineno"> 1948</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a>;</div>
<div class="line"><a id="l01949" name="l01949"></a><span class="lineno"> 1949</span> }</div>
<div class="line"><a id="l01950" name="l01950"></a><span class="lineno"> 1950</span> }</div>
<div class="line"><a id="l01951" name="l01951"></a><span class="lineno"> 1951</span> </div>
<div class="line"><a id="l01952" name="l01952"></a><span class="lineno"> 1952</span> <span class="keywordflow">if</span>(ied_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l01953" name="l01953"></a><span class="lineno"> 1953</span> {</div>
<div class="line"><a id="l01954" name="l01954"></a><span class="lineno"> 1954</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = ied_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l01955" name="l01955"></a><span class="lineno"> 1955</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = ied_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l01956" name="l01956"></a><span class="lineno"> 1956</span> }</div>
<div class="line"><a id="l01957" name="l01957"></a><span class="lineno"> 1957</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span> ied_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, ied_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"> 1959</span> </div>
<div class="line"><a id="l01960" name="l01960"></a><span class="lineno"> 1960</span> <span class="keywordflow">if</span>(ied_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) ied_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l01961" name="l01961"></a><span class="lineno"> 1961</span> </div>
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"> 1962</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"> 1963</span> <span class="keywordflow">if</span>(fwrite(&amp;ied_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span> {</div>
<div class="line"><a id="l01965" name="l01965"></a><span class="lineno"> 1965</span> <span class="keywordflow">if</span>(ied_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01966" name="l01966"></a><span class="lineno"> 1966</span> </div>
<div class="line"><a id="l01967" name="l01967"></a><span class="lineno"> 1967</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l01968" name="l01968"></a><span class="lineno"> 1968</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, ied_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01969" name="l01969"></a><span class="lineno"> 1969</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l01970" name="l01970"></a><span class="lineno"> 1970</span> {</div>
<div class="line"><a id="l01971" name="l01971"></a><span class="lineno"> 1971</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote DVD sector IED block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, ied_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01972" name="l01972"></a><span class="lineno"> 1972</span> <span class="comment">// Add IED block to index</span></div>
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"> 1973</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding DVD sector IED block to index&quot;</span>);</div>
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"> 1974</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> ied_index_entry;</div>
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span> ied_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"> 1976</span> ied_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a3340d65528decaa438460aaf53f2febe">DvdSectorIed</a>;</div>
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"> 1977</span> ied_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = ied_position;</div>
<div class="line"><a id="l01978" name="l01978"></a><span class="lineno"> 1978</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;ied_index_entry);</div>
<div class="line"><a id="l01979" name="l01979"></a><span class="lineno"> 1979</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added DVD sector IED block index entry at offset %&quot;</span> PRIu64, ied_position);</div>
<div class="line"><a id="l01980" name="l01980"></a><span class="lineno"> 1980</span> }</div>
<div class="line"><a id="l01981" name="l01981"></a><span class="lineno"> 1981</span> }</div>
<div class="line"><a id="l01982" name="l01982"></a><span class="lineno"> 1982</span> </div>
<div class="line"><a id="l01983" name="l01983"></a><span class="lineno"> 1983</span> <span class="keywordflow">if</span>(ied_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l01984" name="l01984"></a><span class="lineno"> 1984</span> </div>
<div class="line"><a id="l01985" name="l01985"></a><span class="lineno"> 1985</span> <span class="comment">// Write DVD sector CPR/MAI block</span></div>
<div class="line"><a id="l01986" name="l01986"></a><span class="lineno"> 1986</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l01987" name="l01987"></a><span class="lineno"> 1987</span> <span class="keywordtype">long</span> cpr_mai_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span> <span class="keywordflow">if</span>(cpr_mai_position &amp; alignment_mask)</div>
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"> 1989</span> {</div>
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span> <span class="keyword">const</span> uint64_t aligned_position = cpr_mai_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"> 1991</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l01992" name="l01992"></a><span class="lineno"> 1992</span> cpr_mai_position = aligned_position;</div>
<div class="line"><a id="l01993" name="l01993"></a><span class="lineno"> 1993</span> }</div>
<div class="line"><a id="l01994" name="l01994"></a><span class="lineno"> 1994</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing DVD sector CPR/MAI block at position %ld&quot;</span>, cpr_mai_position);</div>
<div class="line"><a id="l01995" name="l01995"></a><span class="lineno"> 1995</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> cpr_mai_block = {0};</div>
<div class="line"><a id="l01996" name="l01996"></a><span class="lineno"> 1996</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l01997" name="l01997"></a><span class="lineno"> 1997</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a39dc93795ee5d8befec5ee5607cb1a9b">DvdSectorCprMai</a>;</div>
<div class="line"><a id="l01998" name="l01998"></a><span class="lineno"> 1998</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"> 1999</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)total_sectors * 6;</div>
<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"> 2000</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a>, cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l02002" name="l02002"></a><span class="lineno"> 2002</span> </div>
<div class="line"><a id="l02003" name="l02003"></a><span class="lineno"> 2003</span> buffer = NULL;</div>
<div class="line"><a id="l02004" name="l02004"></a><span class="lineno"> 2004</span> </div>
<div class="line"><a id="l02005" name="l02005"></a><span class="lineno"> 2005</span> <span class="keywordflow">if</span>(cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"> 2006</span> {</div>
<div class="line"><a id="l02007" name="l02007"></a><span class="lineno"> 2007</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a>;</div>
<div class="line"><a id="l02008" name="l02008"></a><span class="lineno"> 2008</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02009" name="l02009"></a><span class="lineno"> 2009</span> }</div>
<div class="line"><a id="l02010" name="l02010"></a><span class="lineno"> 2010</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02011" name="l02011"></a><span class="lineno"> 2011</span> {</div>
<div class="line"><a id="l02012" name="l02012"></a><span class="lineno"> 2012</span> buffer = malloc((<span class="keywordtype">size_t</span>)cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l02013" name="l02013"></a><span class="lineno"> 2013</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l02014" name="l02014"></a><span class="lineno"> 2014</span> {</div>
<div class="line"><a id="l02015" name="l02015"></a><span class="lineno"> 2015</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for DVD sector CPR/MAI compression&quot;</span>);</div>
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"> 2017</span> }</div>
<div class="line"><a id="l02018" name="l02018"></a><span class="lineno"> 2018</span> </div>
<div class="line"><a id="l02019" name="l02019"></a><span class="lineno"> 2019</span> <span class="keywordtype">size_t</span> dst_size = (size_t)cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l02020" name="l02020"></a><span class="lineno"> 2020</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02021" name="l02021"></a><span class="lineno"> 2021</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a>, cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties,</div>
<div class="line"><a id="l02022" name="l02022"></a><span class="lineno"> 2022</span> &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l02023" name="l02023"></a><span class="lineno"> 2023</span> </div>
<div class="line"><a id="l02024" name="l02024"></a><span class="lineno"> 2024</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l02025" name="l02025"></a><span class="lineno"> 2025</span> </div>
<div class="line"><a id="l02026" name="l02026"></a><span class="lineno"> 2026</span> <span class="keywordflow">if</span>(cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l02027" name="l02027"></a><span class="lineno"> 2027</span> {</div>
<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"> 2028</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l02029" name="l02029"></a><span class="lineno"> 2029</span> free(buffer);</div>
<div class="line"><a id="l02030" name="l02030"></a><span class="lineno"> 2030</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a>;</div>
<div class="line"><a id="l02031" name="l02031"></a><span class="lineno"> 2031</span> }</div>
<div class="line"><a id="l02032" name="l02032"></a><span class="lineno"> 2032</span> }</div>
<div class="line"><a id="l02033" name="l02033"></a><span class="lineno"> 2033</span> </div>
<div class="line"><a id="l02034" name="l02034"></a><span class="lineno"> 2034</span> <span class="keywordflow">if</span>(cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02035" name="l02035"></a><span class="lineno"> 2035</span> {</div>
<div class="line"><a id="l02036" name="l02036"></a><span class="lineno"> 2036</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l02037" name="l02037"></a><span class="lineno"> 2037</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02038" name="l02038"></a><span class="lineno"> 2038</span> }</div>
<div class="line"><a id="l02039" name="l02039"></a><span class="lineno"> 2039</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02040" name="l02040"></a><span class="lineno"> 2040</span> cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02041" name="l02041"></a><span class="lineno"> 2041</span> </div>
<div class="line"><a id="l02042" name="l02042"></a><span class="lineno"> 2042</span> <span class="keywordflow">if</span>(cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02043" name="l02043"></a><span class="lineno"> 2043</span> </div>
<div class="line"><a id="l02044" name="l02044"></a><span class="lineno"> 2044</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l02045" name="l02045"></a><span class="lineno"> 2045</span> <span class="keywordflow">if</span>(fwrite(&amp;cpr_mai_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l02046" name="l02046"></a><span class="lineno"> 2046</span> {</div>
<div class="line"><a id="l02047" name="l02047"></a><span class="lineno"> 2047</span> <span class="keywordflow">if</span>(cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02048" name="l02048"></a><span class="lineno"> 2048</span> </div>
<div class="line"><a id="l02049" name="l02049"></a><span class="lineno"> 2049</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l02050" name="l02050"></a><span class="lineno"> 2050</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02051" name="l02051"></a><span class="lineno"> 2051</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"> 2052</span> {</div>
<div class="line"><a id="l02053" name="l02053"></a><span class="lineno"> 2053</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote DVD sector CPR/MAI block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02054" name="l02054"></a><span class="lineno"> 2054</span> <span class="comment">// Add CPR/MAI block to index</span></div>
<div class="line"><a id="l02055" name="l02055"></a><span class="lineno"> 2055</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding DVD sector CPR/MAI block to index&quot;</span>);</div>
<div class="line"><a id="l02056" name="l02056"></a><span class="lineno"> 2056</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> cpr_mai_index_entry;</div>
<div class="line"><a id="l02057" name="l02057"></a><span class="lineno"> 2057</span> cpr_mai_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l02058" name="l02058"></a><span class="lineno"> 2058</span> cpr_mai_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a39dc93795ee5d8befec5ee5607cb1a9b">DvdSectorCprMai</a>;</div>
<div class="line"><a id="l02059" name="l02059"></a><span class="lineno"> 2059</span> cpr_mai_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = cpr_mai_position;</div>
<div class="line"><a id="l02060" name="l02060"></a><span class="lineno"> 2060</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;cpr_mai_index_entry);</div>
<div class="line"><a id="l02061" name="l02061"></a><span class="lineno"> 2061</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added DVD sector CPR/MAI block index entry at offset %&quot;</span> PRIu64, cpr_mai_position);</div>
<div class="line"><a id="l02062" name="l02062"></a><span class="lineno"> 2062</span> }</div>
<div class="line"><a id="l02063" name="l02063"></a><span class="lineno"> 2063</span> }</div>
<div class="line"><a id="l02064" name="l02064"></a><span class="lineno"> 2064</span> </div>
<div class="line"><a id="l02065" name="l02065"></a><span class="lineno"> 2065</span> <span class="keywordflow">if</span>(cpr_mai_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l02066" name="l02066"></a><span class="lineno"> 2066</span> </div>
<div class="line"><a id="l02067" name="l02067"></a><span class="lineno"> 2067</span> <span class="comment">// Write DVD sector EDC block</span></div>
<div class="line"><a id="l02068" name="l02068"></a><span class="lineno"> 2068</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l02069" name="l02069"></a><span class="lineno"> 2069</span> <span class="keywordtype">long</span> edc_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02070" name="l02070"></a><span class="lineno"> 2070</span> <span class="keywordflow">if</span>(edc_position &amp; alignment_mask)</div>
<div class="line"><a id="l02071" name="l02071"></a><span class="lineno"> 2071</span> {</div>
<div class="line"><a id="l02072" name="l02072"></a><span class="lineno"> 2072</span> <span class="keyword">const</span> uint64_t aligned_position = edc_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l02073" name="l02073"></a><span class="lineno"> 2073</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l02074" name="l02074"></a><span class="lineno"> 2074</span> edc_position = aligned_position;</div>
<div class="line"><a id="l02075" name="l02075"></a><span class="lineno"> 2075</span> }</div>
<div class="line"><a id="l02076" name="l02076"></a><span class="lineno"> 2076</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing DVD sector EDC block at position %ld&quot;</span>, edc_position);</div>
<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"> 2077</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> edc_block = {0};</div>
<div class="line"><a id="l02078" name="l02078"></a><span class="lineno"> 2078</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l02079" name="l02079"></a><span class="lineno"> 2079</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9761d07be6a71826f3f0146d091f2176">DvdSectorEdc</a>;</div>
<div class="line"><a id="l02080" name="l02080"></a><span class="lineno"> 2080</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l02081" name="l02081"></a><span class="lineno"> 2081</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = (uint32_t)total_sectors * 4;</div>
<div class="line"><a id="l02082" name="l02082"></a><span class="lineno"> 2082</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l02083" name="l02083"></a><span class="lineno"> 2083</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a>, edc_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l02084" name="l02084"></a><span class="lineno"> 2084</span> </div>
<div class="line"><a id="l02085" name="l02085"></a><span class="lineno"> 2085</span> buffer = NULL;</div>
<div class="line"><a id="l02086" name="l02086"></a><span class="lineno"> 2086</span> </div>
<div class="line"><a id="l02087" name="l02087"></a><span class="lineno"> 2087</span> <span class="keywordflow">if</span>(edc_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02088" name="l02088"></a><span class="lineno"> 2088</span> {</div>
<div class="line"><a id="l02089" name="l02089"></a><span class="lineno"> 2089</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a>;</div>
<div class="line"><a id="l02090" name="l02090"></a><span class="lineno"> 2090</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = edc_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02091" name="l02091"></a><span class="lineno"> 2091</span> }</div>
<div class="line"><a id="l02092" name="l02092"></a><span class="lineno"> 2092</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02093" name="l02093"></a><span class="lineno"> 2093</span> {</div>
<div class="line"><a id="l02094" name="l02094"></a><span class="lineno"> 2094</span> buffer = malloc((<span class="keywordtype">size_t</span>)edc_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l02095" name="l02095"></a><span class="lineno"> 2095</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l02096" name="l02096"></a><span class="lineno"> 2096</span> {</div>
<div class="line"><a id="l02097" name="l02097"></a><span class="lineno"> 2097</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for DVD sector EDC compression&quot;</span>);</div>
<div class="line"><a id="l02098" name="l02098"></a><span class="lineno"> 2098</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02099" name="l02099"></a><span class="lineno"> 2099</span> }</div>
<div class="line"><a id="l02100" name="l02100"></a><span class="lineno"> 2100</span> </div>
<div class="line"><a id="l02101" name="l02101"></a><span class="lineno"> 2101</span> <span class="keywordtype">size_t</span> dst_size = (size_t)edc_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l02102" name="l02102"></a><span class="lineno"> 2102</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02103" name="l02103"></a><span class="lineno"> 2103</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a>, edc_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties, &amp;props_size, 9,</div>
<div class="line"><a id="l02104" name="l02104"></a><span class="lineno"> 2104</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"> 2105</span> </div>
<div class="line"><a id="l02106" name="l02106"></a><span class="lineno"> 2106</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"> 2107</span> </div>
<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span> <span class="keywordflow">if</span>(edc_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= edc_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span> {</div>
<div class="line"><a id="l02110" name="l02110"></a><span class="lineno"> 2110</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l02111" name="l02111"></a><span class="lineno"> 2111</span> free(buffer);</div>
<div class="line"><a id="l02112" name="l02112"></a><span class="lineno"> 2112</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a>;</div>
<div class="line"><a id="l02113" name="l02113"></a><span class="lineno"> 2113</span> }</div>
<div class="line"><a id="l02114" name="l02114"></a><span class="lineno"> 2114</span> }</div>
<div class="line"><a id="l02115" name="l02115"></a><span class="lineno"> 2115</span> </div>
<div class="line"><a id="l02116" name="l02116"></a><span class="lineno"> 2116</span> <span class="keywordflow">if</span>(edc_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02117" name="l02117"></a><span class="lineno"> 2117</span> {</div>
<div class="line"><a id="l02118" name="l02118"></a><span class="lineno"> 2118</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = edc_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l02119" name="l02119"></a><span class="lineno"> 2119</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = edc_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02120" name="l02120"></a><span class="lineno"> 2120</span> }</div>
<div class="line"><a id="l02121" name="l02121"></a><span class="lineno"> 2121</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02122" name="l02122"></a><span class="lineno"> 2122</span> edc_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, edc_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02123" name="l02123"></a><span class="lineno"> 2123</span> </div>
<div class="line"><a id="l02124" name="l02124"></a><span class="lineno"> 2124</span> <span class="keywordflow">if</span>(edc_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) edc_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02125" name="l02125"></a><span class="lineno"> 2125</span> </div>
<div class="line"><a id="l02126" name="l02126"></a><span class="lineno"> 2126</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l02127" name="l02127"></a><span class="lineno"> 2127</span> <span class="keywordflow">if</span>(fwrite(&amp;edc_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l02128" name="l02128"></a><span class="lineno"> 2128</span> {</div>
<div class="line"><a id="l02129" name="l02129"></a><span class="lineno"> 2129</span> <span class="keywordflow">if</span>(edc_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02130" name="l02130"></a><span class="lineno"> 2130</span> </div>
<div class="line"><a id="l02131" name="l02131"></a><span class="lineno"> 2131</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l02132" name="l02132"></a><span class="lineno"> 2132</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, edc_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02133" name="l02133"></a><span class="lineno"> 2133</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l02134" name="l02134"></a><span class="lineno"> 2134</span> {</div>
<div class="line"><a id="l02135" name="l02135"></a><span class="lineno"> 2135</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote DVD sector EDC block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, edc_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02136" name="l02136"></a><span class="lineno"> 2136</span> <span class="comment">// Add EDC block to index</span></div>
<div class="line"><a id="l02137" name="l02137"></a><span class="lineno"> 2137</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding DVD sector EDC block to index&quot;</span>);</div>
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> edc_index_entry;</div>
<div class="line"><a id="l02139" name="l02139"></a><span class="lineno"> 2139</span> edc_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l02140" name="l02140"></a><span class="lineno"> 2140</span> edc_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9761d07be6a71826f3f0146d091f2176">DvdSectorEdc</a>;</div>
<div class="line"><a id="l02141" name="l02141"></a><span class="lineno"> 2141</span> edc_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = edc_position;</div>
<div class="line"><a id="l02142" name="l02142"></a><span class="lineno"> 2142</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;edc_index_entry);</div>
<div class="line"><a id="l02143" name="l02143"></a><span class="lineno"> 2143</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added DVD sector EDC block index entry at offset %&quot;</span> PRIu64, edc_position);</div>
<div class="line"><a id="l02144" name="l02144"></a><span class="lineno"> 2144</span> }</div>
<div class="line"><a id="l02145" name="l02145"></a><span class="lineno"> 2145</span> }</div>
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"> 2146</span> </div>
<div class="line"><a id="l02147" name="l02147"></a><span class="lineno"> 2147</span> <span class="keywordflow">if</span>(edc_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l02148" name="l02148"></a><span class="lineno"> 2148</span>}</div>
</div>
<div class="line"><a id="l02149" name="l02149"></a><span class="lineno"> 2149</span></div>
<div class="foldopen" id="foldopen02247" data-start="{" data-end="}">
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"><a class="line" href="close_8c.html#af9269816dfd495bc6927e9463422df91"> 2247</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#af9269816dfd495bc6927e9463422df91">write_dvd_title_key_decrypted_block</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l02248" name="l02248"></a><span class="lineno"> 2248</span>{</div>
<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"> 2249</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">sector_decrypted_title_key</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span> </div>
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"> 2252</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02253" name="l02253"></a><span class="lineno"> 2253</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l02254" name="l02254"></a><span class="lineno"> 2254</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l02255" name="l02255"></a><span class="lineno"> 2255</span> {</div>
<div class="line"><a id="l02256" name="l02256"></a><span class="lineno"> 2256</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l02257" name="l02257"></a><span class="lineno"> 2257</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l02258" name="l02258"></a><span class="lineno"> 2258</span> block_position = aligned_position;</div>
<div class="line"><a id="l02259" name="l02259"></a><span class="lineno"> 2259</span> }</div>
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"> 2260</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing DVD decrypted title key block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> decrypted_title_key_block = {0};</div>
<div class="line"><a id="l02262" name="l02262"></a><span class="lineno"> 2262</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l02263" name="l02263"></a><span class="lineno"> 2263</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ab5223833b1f998e3475f800f6509c2f9">DvdSectorTitleKeyDecrypted</a>;</div>
<div class="line"><a id="l02264" name="l02264"></a><span class="lineno"> 2264</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l02265" name="l02265"></a><span class="lineno"> 2265</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> =</div>
<div class="line"><a id="l02266" name="l02266"></a><span class="lineno"> 2266</span> (uint32_t)(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">negative</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">overflow</a>) *</div>
<div class="line"><a id="l02267" name="l02267"></a><span class="lineno"> 2267</span> 5;</div>
<div class="line"><a id="l02268" name="l02268"></a><span class="lineno"> 2268</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l02269" name="l02269"></a><span class="lineno"> 2269</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> =</div>
<div class="line"><a id="l02270" name="l02270"></a><span class="lineno"> 2270</span> <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">sector_decrypted_title_key</a>, decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l02271" name="l02271"></a><span class="lineno"> 2271</span> </div>
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"> 2272</span> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l02273" name="l02273"></a><span class="lineno"> 2273</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l02274" name="l02274"></a><span class="lineno"> 2274</span> </div>
<div class="line"><a id="l02275" name="l02275"></a><span class="lineno"> 2275</span> <span class="keywordflow">if</span>(decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02276" name="l02276"></a><span class="lineno"> 2276</span> {</div>
<div class="line"><a id="l02277" name="l02277"></a><span class="lineno"> 2277</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">sector_decrypted_title_key</a>;</div>
<div class="line"><a id="l02278" name="l02278"></a><span class="lineno"> 2278</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02279" name="l02279"></a><span class="lineno"> 2279</span> }</div>
<div class="line"><a id="l02280" name="l02280"></a><span class="lineno"> 2280</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02281" name="l02281"></a><span class="lineno"> 2281</span> {</div>
<div class="line"><a id="l02282" name="l02282"></a><span class="lineno"> 2282</span> buffer = malloc((<span class="keywordtype">size_t</span>)decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l02283" name="l02283"></a><span class="lineno"> 2283</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l02284" name="l02284"></a><span class="lineno"> 2284</span> {</div>
<div class="line"><a id="l02285" name="l02285"></a><span class="lineno"> 2285</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for DVD decrypted title key compression&quot;</span>);</div>
<div class="line"><a id="l02286" name="l02286"></a><span class="lineno"> 2286</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02287" name="l02287"></a><span class="lineno"> 2287</span> }</div>
<div class="line"><a id="l02288" name="l02288"></a><span class="lineno"> 2288</span> </div>
<div class="line"><a id="l02289" name="l02289"></a><span class="lineno"> 2289</span> <span class="keywordtype">size_t</span> dst_size = (size_t)decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l02290" name="l02290"></a><span class="lineno"> 2290</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02291" name="l02291"></a><span class="lineno"> 2291</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">sector_decrypted_title_key</a>, decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>,</div>
<div class="line"><a id="l02292" name="l02292"></a><span class="lineno"> 2292</span> lzma_properties, &amp;props_size, 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l02293" name="l02293"></a><span class="lineno"> 2293</span> </div>
<div class="line"><a id="l02294" name="l02294"></a><span class="lineno"> 2294</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l02295" name="l02295"></a><span class="lineno"> 2295</span> </div>
<div class="line"><a id="l02296" name="l02296"></a><span class="lineno"> 2296</span> <span class="keywordflow">if</span>(decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l02297" name="l02297"></a><span class="lineno"> 2297</span> {</div>
<div class="line"><a id="l02298" name="l02298"></a><span class="lineno"> 2298</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l02299" name="l02299"></a><span class="lineno"> 2299</span> free(buffer);</div>
<div class="line"><a id="l02300" name="l02300"></a><span class="lineno"> 2300</span> buffer = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">sector_decrypted_title_key</a>;</div>
<div class="line"><a id="l02301" name="l02301"></a><span class="lineno"> 2301</span> }</div>
<div class="line"><a id="l02302" name="l02302"></a><span class="lineno"> 2302</span> }</div>
<div class="line"><a id="l02303" name="l02303"></a><span class="lineno"> 2303</span> </div>
<div class="line"><a id="l02304" name="l02304"></a><span class="lineno"> 2304</span> <span class="keywordflow">if</span>(decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02305" name="l02305"></a><span class="lineno"> 2305</span> {</div>
<div class="line"><a id="l02306" name="l02306"></a><span class="lineno"> 2306</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l02307" name="l02307"></a><span class="lineno"> 2307</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02308" name="l02308"></a><span class="lineno"> 2308</span> }</div>
<div class="line"><a id="l02309" name="l02309"></a><span class="lineno"> 2309</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02310" name="l02310"></a><span class="lineno"> 2310</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02311" name="l02311"></a><span class="lineno"> 2311</span> </div>
<div class="line"><a id="l02312" name="l02312"></a><span class="lineno"> 2312</span> <span class="keywordflow">if</span>(decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02313" name="l02313"></a><span class="lineno"> 2313</span> </div>
<div class="line"><a id="l02314" name="l02314"></a><span class="lineno"> 2314</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l02315" name="l02315"></a><span class="lineno"> 2315</span> <span class="keywordflow">if</span>(fwrite(&amp;decrypted_title_key_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l02316" name="l02316"></a><span class="lineno"> 2316</span> {</div>
<div class="line"><a id="l02317" name="l02317"></a><span class="lineno"> 2317</span> <span class="keywordflow">if</span>(decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>)</div>
<div class="line"><a id="l02318" name="l02318"></a><span class="lineno"> 2318</span> fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02319" name="l02319"></a><span class="lineno"> 2319</span> </div>
<div class="line"><a id="l02320" name="l02320"></a><span class="lineno"> 2320</span> <span class="comment">// Write data</span></div>
<div class="line"><a id="l02321" name="l02321"></a><span class="lineno"> 2321</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02322" name="l02322"></a><span class="lineno"> 2322</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l02323" name="l02323"></a><span class="lineno"> 2323</span> {</div>
<div class="line"><a id="l02324" name="l02324"></a><span class="lineno"> 2324</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote DVD decrypted title key block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>,</div>
<div class="line"><a id="l02325" name="l02325"></a><span class="lineno"> 2325</span> decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02326" name="l02326"></a><span class="lineno"> 2326</span> <span class="comment">// Add decrypted title key block to index</span></div>
<div class="line"><a id="l02327" name="l02327"></a><span class="lineno"> 2327</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding DVD decrypted title key block to index&quot;</span>);</div>
<div class="line"><a id="l02328" name="l02328"></a><span class="lineno"> 2328</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> decrypted_title_key_index_entry;</div>
<div class="line"><a id="l02329" name="l02329"></a><span class="lineno"> 2329</span> decrypted_title_key_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l02330" name="l02330"></a><span class="lineno"> 2330</span> decrypted_title_key_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = <a class="code hl_enumvalue" href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ab5223833b1f998e3475f800f6509c2f9">DvdSectorTitleKeyDecrypted</a>;</div>
<div class="line"><a id="l02331" name="l02331"></a><span class="lineno"> 2331</span> decrypted_title_key_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l02332" name="l02332"></a><span class="lineno"> 2332</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;decrypted_title_key_index_entry);</div>
<div class="line"><a id="l02333" name="l02333"></a><span class="lineno"> 2333</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added DVD decrypted title key block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l02334" name="l02334"></a><span class="lineno"> 2334</span> }</div>
<div class="line"><a id="l02335" name="l02335"></a><span class="lineno"> 2335</span> }</div>
<div class="line"><a id="l02336" name="l02336"></a><span class="lineno"> 2336</span> </div>
<div class="line"><a id="l02337" name="l02337"></a><span class="lineno"> 2337</span> <span class="keywordflow">if</span>(decrypted_title_key_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l02338" name="l02338"></a><span class="lineno"> 2338</span>}</div>
</div>
<div class="line"><a id="l02339" name="l02339"></a><span class="lineno"> 2339</span></div>
<div class="foldopen" id="foldopen02411" data-start="{" data-end="}">
<div class="line"><a id="l02411" name="l02411"></a><span class="lineno"><a class="line" href="close_8c.html#a458e1630d31726b91a54b514f34a9b37"> 2411</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a458e1630d31726b91a54b514f34a9b37">write_media_tags</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l02412" name="l02412"></a><span class="lineno"> 2412</span>{</div>
<div class="line"><a id="l02413" name="l02413"></a><span class="lineno"> 2413</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">mediaTags</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02414" name="l02414"></a><span class="lineno"> 2414</span> </div>
<div class="line"><a id="l02415" name="l02415"></a><span class="lineno"> 2415</span> <a class="code hl_struct" href="structmediaTagEntry.html">mediaTagEntry</a> *media_tag = NULL;</div>
<div class="line"><a id="l02416" name="l02416"></a><span class="lineno"> 2416</span> <a class="code hl_struct" href="structmediaTagEntry.html">mediaTagEntry</a> *tmp_media_tag = NULL;</div>
<div class="line"><a id="l02417" name="l02417"></a><span class="lineno"> 2417</span> </div>
<div class="line"><a id="l02418" name="l02418"></a><span class="lineno"> 2418</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">mediaTags</a>, media_tag, tmp_media_tag)</div>
<div class="line"><a id="l02419" name="l02419"></a><span class="lineno"> 2419</span> {</div>
<div class="line"><a id="l02420" name="l02420"></a><span class="lineno"> 2420</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l02421" name="l02421"></a><span class="lineno"> 2421</span> <span class="keywordtype">long</span> tag_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02422" name="l02422"></a><span class="lineno"> 2422</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l02423" name="l02423"></a><span class="lineno"> 2423</span> <span class="keywordflow">if</span>(tag_position &amp; alignment_mask)</div>
<div class="line"><a id="l02424" name="l02424"></a><span class="lineno"> 2424</span> {</div>
<div class="line"><a id="l02425" name="l02425"></a><span class="lineno"> 2425</span> <span class="keyword">const</span> uint64_t aligned_position = tag_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l02426" name="l02426"></a><span class="lineno"> 2426</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l02427" name="l02427"></a><span class="lineno"> 2427</span> tag_position = aligned_position;</div>
<div class="line"><a id="l02428" name="l02428"></a><span class="lineno"> 2428</span> }</div>
<div class="line"><a id="l02429" name="l02429"></a><span class="lineno"> 2429</span> </div>
<div class="line"><a id="l02430" name="l02430"></a><span class="lineno"> 2430</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing media tag block type %d at position %ld&quot;</span>, <a class="code hl_function" href="decls_8h.html#a8d042b26980b56b5dd872f21fa33de70">aaruf_get_datatype_for_media_tag_type</a>(media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a95bf0de1de367f90491367921069c9e2">type</a>),</div>
<div class="line"><a id="l02431" name="l02431"></a><span class="lineno"> 2431</span> tag_position);</div>
<div class="line"><a id="l02432" name="l02432"></a><span class="lineno"> 2432</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> tag_block = {0};</div>
<div class="line"><a id="l02433" name="l02433"></a><span class="lineno"> 2433</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l02434" name="l02434"></a><span class="lineno"> 2434</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a> = (uint16_t)<a class="code hl_function" href="decls_8h.html#a8d042b26980b56b5dd872f21fa33de70">aaruf_get_datatype_for_media_tag_type</a>(media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a95bf0de1de367f90491367921069c9e2">type</a>);</div>
<div class="line"><a id="l02435" name="l02435"></a><span class="lineno"> 2435</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">compression_enabled</a> ? <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a> : <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l02436" name="l02436"></a><span class="lineno"> 2436</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> = media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#aa96c6684fd98145d0089d72957d2afa7">length</a>;</div>
<div class="line"><a id="l02437" name="l02437"></a><span class="lineno"> 2437</span> </div>
<div class="line"><a id="l02438" name="l02438"></a><span class="lineno"> 2438</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l02439" name="l02439"></a><span class="lineno"> 2439</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">data</a>, tag_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l02440" name="l02440"></a><span class="lineno"> 2440</span> </div>
<div class="line"><a id="l02441" name="l02441"></a><span class="lineno"> 2441</span> uint8_t *buffer = NULL;</div>
<div class="line"><a id="l02442" name="l02442"></a><span class="lineno"> 2442</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>] = {0};</div>
<div class="line"><a id="l02443" name="l02443"></a><span class="lineno"> 2443</span> </div>
<div class="line"><a id="l02444" name="l02444"></a><span class="lineno"> 2444</span> <span class="keywordflow">if</span>(tag_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02445" name="l02445"></a><span class="lineno"> 2445</span> {</div>
<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"> 2446</span> buffer = media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">data</a>;</div>
<div class="line"><a id="l02447" name="l02447"></a><span class="lineno"> 2447</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = tag_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02448" name="l02448"></a><span class="lineno"> 2448</span> }</div>
<div class="line"><a id="l02449" name="l02449"></a><span class="lineno"> 2449</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02450" name="l02450"></a><span class="lineno"> 2450</span> {</div>
<div class="line"><a id="l02451" name="l02451"></a><span class="lineno"> 2451</span> buffer = malloc((<span class="keywordtype">size_t</span>)tag_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2); <span class="comment">// Allocate double size for compression</span></div>
<div class="line"><a id="l02452" name="l02452"></a><span class="lineno"> 2452</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l02453" name="l02453"></a><span class="lineno"> 2453</span> {</div>
<div class="line"><a id="l02454" name="l02454"></a><span class="lineno"> 2454</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for media tag compression&quot;</span>);</div>
<div class="line"><a id="l02455" name="l02455"></a><span class="lineno"> 2455</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02456" name="l02456"></a><span class="lineno"> 2456</span> }</div>
<div class="line"><a id="l02457" name="l02457"></a><span class="lineno"> 2457</span> </div>
<div class="line"><a id="l02458" name="l02458"></a><span class="lineno"> 2458</span> <span class="keywordtype">size_t</span> dst_size = (size_t)tag_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> * 2 * 2;</div>
<div class="line"><a id="l02459" name="l02459"></a><span class="lineno"> 2459</span> <span class="keywordtype">size_t</span> props_size = <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02460" name="l02460"></a><span class="lineno"> 2460</span> <a class="code hl_function" href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a>(buffer, &amp;dst_size, media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">data</a>, tag_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, lzma_properties, &amp;props_size,</div>
<div class="line"><a id="l02461" name="l02461"></a><span class="lineno"> 2461</span> 9, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">lzma_dict_size</a>, 4, 0, 2, 273, 8);</div>
<div class="line"><a id="l02462" name="l02462"></a><span class="lineno"> 2462</span> </div>
<div class="line"><a id="l02463" name="l02463"></a><span class="lineno"> 2463</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = (uint32_t)dst_size;</div>
<div class="line"><a id="l02464" name="l02464"></a><span class="lineno"> 2464</span> </div>
<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"> 2465</span> <span class="keywordflow">if</span>(tag_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &gt;= tag_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l02466" name="l02466"></a><span class="lineno"> 2466</span> {</div>
<div class="line"><a id="l02467" name="l02467"></a><span class="lineno"> 2467</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> = <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>;</div>
<div class="line"><a id="l02468" name="l02468"></a><span class="lineno"> 2468</span> free(buffer);</div>
<div class="line"><a id="l02469" name="l02469"></a><span class="lineno"> 2469</span> buffer = media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">data</a>;</div>
<div class="line"><a id="l02470" name="l02470"></a><span class="lineno"> 2470</span> }</div>
<div class="line"><a id="l02471" name="l02471"></a><span class="lineno"> 2471</span> }</div>
<div class="line"><a id="l02472" name="l02472"></a><span class="lineno"> 2472</span> </div>
<div class="line"><a id="l02473" name="l02473"></a><span class="lineno"> 2473</span> <span class="keywordflow">if</span>(tag_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ac9d3e887722f2bc482bcca9d41c512af">None</a>)</div>
<div class="line"><a id="l02474" name="l02474"></a><span class="lineno"> 2474</span> {</div>
<div class="line"><a id="l02475" name="l02475"></a><span class="lineno"> 2475</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> = tag_block.<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l02476" name="l02476"></a><span class="lineno"> 2476</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = tag_block.<a class="code hl_variable" href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">crc64</a>;</div>
<div class="line"><a id="l02477" name="l02477"></a><span class="lineno"> 2477</span> }</div>
<div class="line"><a id="l02478" name="l02478"></a><span class="lineno"> 2478</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02479" name="l02479"></a><span class="lineno"> 2479</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">cmpCrc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer, tag_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02480" name="l02480"></a><span class="lineno"> 2480</span> </div>
<div class="line"><a id="l02481" name="l02481"></a><span class="lineno"> 2481</span> <span class="keywordflow">if</span>(tag_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) tag_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> += <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l02482" name="l02482"></a><span class="lineno"> 2482</span> </div>
<div class="line"><a id="l02483" name="l02483"></a><span class="lineno"> 2483</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l02484" name="l02484"></a><span class="lineno"> 2484</span> <span class="keywordflow">if</span>(fwrite(&amp;tag_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l02485" name="l02485"></a><span class="lineno"> 2485</span> {</div>
<div class="line"><a id="l02486" name="l02486"></a><span class="lineno"> 2486</span> <span class="keywordflow">if</span>(tag_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>)</div>
<div class="line"><a id="l02487" name="l02487"></a><span class="lineno"> 2487</span> fwrite(lzma_properties, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>); <span class="comment">// Write data</span></div>
<div class="line"><a id="l02488" name="l02488"></a><span class="lineno"> 2488</span> </div>
<div class="line"><a id="l02489" name="l02489"></a><span class="lineno"> 2489</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, tag_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02490" name="l02490"></a><span class="lineno"> 2490</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l02491" name="l02491"></a><span class="lineno"> 2491</span> {</div>
<div class="line"><a id="l02492" name="l02492"></a><span class="lineno"> 2492</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote media tag block type %d (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, tag_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a>,</div>
<div class="line"><a id="l02493" name="l02493"></a><span class="lineno"> 2493</span> tag_block.<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l02494" name="l02494"></a><span class="lineno"> 2494</span> <span class="comment">// Add media tag block to index</span></div>
<div class="line"><a id="l02495" name="l02495"></a><span class="lineno"> 2495</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding media tag type %d block to index&quot;</span>, tag_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a>);</div>
<div class="line"><a id="l02496" name="l02496"></a><span class="lineno"> 2496</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> tag_index_entry;</div>
<div class="line"><a id="l02497" name="l02497"></a><span class="lineno"> 2497</span> tag_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a>;</div>
<div class="line"><a id="l02498" name="l02498"></a><span class="lineno"> 2498</span> tag_index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = tag_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a>;</div>
<div class="line"><a id="l02499" name="l02499"></a><span class="lineno"> 2499</span> tag_index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = tag_position;</div>
<div class="line"><a id="l02500" name="l02500"></a><span class="lineno"> 2500</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;tag_index_entry);</div>
<div class="line"><a id="l02501" name="l02501"></a><span class="lineno"> 2501</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added media tag block type %d index entry at offset %&quot;</span> PRIu64, tag_block.<a class="code hl_variable" href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">type</a>, tag_position);</div>
<div class="line"><a id="l02502" name="l02502"></a><span class="lineno"> 2502</span> }</div>
<div class="line"><a id="l02503" name="l02503"></a><span class="lineno"> 2503</span> }</div>
<div class="line"><a id="l02504" name="l02504"></a><span class="lineno"> 2504</span> </div>
<div class="line"><a id="l02505" name="l02505"></a><span class="lineno"> 2505</span> <span class="keywordflow">if</span>(tag_block.<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a> == <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a002db7938c70152bf9af1797cb87c32f">Lzma</a>) free(buffer);</div>
<div class="line"><a id="l02506" name="l02506"></a><span class="lineno"> 2506</span> }</div>
<div class="line"><a id="l02507" name="l02507"></a><span class="lineno"> 2507</span>}</div>
</div>
<div class="line"><a id="l02508" name="l02508"></a><span class="lineno"> 2508</span></div>
<div class="foldopen" id="foldopen02671" data-start="{" data-end="}">
<div class="line"><a id="l02671" name="l02671"></a><span class="lineno"><a class="line" href="close_8c.html#afffa52af1d2da0e17edf3add326e36d9"> 2671</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#afffa52af1d2da0e17edf3add326e36d9">write_tape_file_block</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l02672" name="l02672"></a><span class="lineno"> 2672</span>{</div>
<div class="line"><a id="l02673" name="l02673"></a><span class="lineno"> 2673</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4783c528aec3e854986885077c5d5854">tape_files</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02674" name="l02674"></a><span class="lineno"> 2674</span> </div>
<div class="line"><a id="l02675" name="l02675"></a><span class="lineno"> 2675</span> <span class="comment">// Iterate the uthash and count how many entries do we have</span></div>
<div class="line"><a id="l02676" name="l02676"></a><span class="lineno"> 2676</span> <span class="keyword">const</span> <a class="code hl_typedef" href="context_8h.html#a5ba965cb003bc2d68a9f9e1c11225494">tapeFileHashEntry</a> *tape_file = NULL;</div>
<div class="line"><a id="l02677" name="l02677"></a><span class="lineno"> 2677</span> <span class="keyword">const</span> <a class="code hl_typedef" href="context_8h.html#a5ba965cb003bc2d68a9f9e1c11225494">tapeFileHashEntry</a> *tmp_tape_file = NULL;</div>
<div class="line"><a id="l02678" name="l02678"></a><span class="lineno"> 2678</span> <span class="keywordtype">size_t</span> tape_file_count = 0;</div>
<div class="line"><a id="l02679" name="l02679"></a><span class="lineno"> 2679</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4783c528aec3e854986885077c5d5854">tape_files</a>, tape_file, tmp_tape_file) tape_file_count++;</div>
<div class="line"><a id="l02680" name="l02680"></a><span class="lineno"> 2680</span> </div>
<div class="line"><a id="l02681" name="l02681"></a><span class="lineno"> 2681</span> <span class="comment">// Create a memory buffer to copy all the file entries</span></div>
<div class="line"><a id="l02682" name="l02682"></a><span class="lineno"> 2682</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> buffer_size = tape_file_count * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTapeFileEntry.html">TapeFileEntry</a>);</div>
<div class="line"><a id="l02683" name="l02683"></a><span class="lineno"> 2683</span> <a class="code hl_struct" href="structTapeFileEntry.html">TapeFileEntry</a> *buffer = malloc(buffer_size);</div>
<div class="line"><a id="l02684" name="l02684"></a><span class="lineno"> 2684</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l02685" name="l02685"></a><span class="lineno"> 2685</span> {</div>
<div class="line"><a id="l02686" name="l02686"></a><span class="lineno"> 2686</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for tape file entries&quot;</span>);</div>
<div class="line"><a id="l02687" name="l02687"></a><span class="lineno"> 2687</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02688" name="l02688"></a><span class="lineno"> 2688</span> }</div>
<div class="line"><a id="l02689" name="l02689"></a><span class="lineno"> 2689</span> memset(buffer, 0, buffer_size);</div>
<div class="line"><a id="l02690" name="l02690"></a><span class="lineno"> 2690</span> <span class="keywordtype">size_t</span> index = 0;</div>
<div class="line"><a id="l02691" name="l02691"></a><span class="lineno"> 2691</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4783c528aec3e854986885077c5d5854">tape_files</a>, tape_file, tmp_tape_file)</div>
<div class="line"><a id="l02692" name="l02692"></a><span class="lineno"> 2692</span> {</div>
<div class="line"><a id="l02693" name="l02693"></a><span class="lineno"> 2693</span> <span class="keywordflow">if</span>(index &gt;= tape_file_count) <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02694" name="l02694"></a><span class="lineno"> 2694</span> memcpy(&amp;buffer[index], &amp;tape_file-&gt;<a class="code hl_variable" href="structTapeFileHashEntry.html#aff0f81d26d4ee00ad33331aacc2834e1">fileEntry</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTapeFileEntry.html">TapeFileEntry</a>));</div>
<div class="line"><a id="l02695" name="l02695"></a><span class="lineno"> 2695</span> index++;</div>
<div class="line"><a id="l02696" name="l02696"></a><span class="lineno"> 2696</span> }</div>
<div class="line"><a id="l02697" name="l02697"></a><span class="lineno"> 2697</span> </div>
<div class="line"><a id="l02698" name="l02698"></a><span class="lineno"> 2698</span> <span class="comment">// Create the tape file block in memory</span></div>
<div class="line"><a id="l02699" name="l02699"></a><span class="lineno"> 2699</span> <a class="code hl_struct" href="structTapeFileHeader.html">TapeFileHeader</a> tape_file_block = {0};</div>
<div class="line"><a id="l02700" name="l02700"></a><span class="lineno"> 2700</span> tape_file_block.<a class="code hl_variable" href="structTapeFileHeader.html#a36fe923f8d67004e0b0ae8eaf6535e1d">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ac3a117f2498bf736a76d5d3a3830540a">TapeFileBlock</a>;</div>
<div class="line"><a id="l02701" name="l02701"></a><span class="lineno"> 2701</span> tape_file_block.<a class="code hl_variable" href="structTapeFileHeader.html#a74b5289640a6c45eece7bd58550e59c0">length</a> = (uint32_t)buffer_size;</div>
<div class="line"><a id="l02702" name="l02702"></a><span class="lineno"> 2702</span> tape_file_block.<a class="code hl_variable" href="structTapeFileHeader.html#a5172ee4bf0b5820a66d04aff1e3809db">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((uint8_t *)buffer, (uint32_t)tape_file_block.<a class="code hl_variable" href="structTapeFileHeader.html#a74b5289640a6c45eece7bd58550e59c0">length</a>);</div>
<div class="line"><a id="l02703" name="l02703"></a><span class="lineno"> 2703</span> </div>
<div class="line"><a id="l02704" name="l02704"></a><span class="lineno"> 2704</span> <span class="comment">// Write tape file block to file, block aligned</span></div>
<div class="line"><a id="l02705" name="l02705"></a><span class="lineno"> 2705</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l02706" name="l02706"></a><span class="lineno"> 2706</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02707" name="l02707"></a><span class="lineno"> 2707</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l02708" name="l02708"></a><span class="lineno"> 2708</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l02709" name="l02709"></a><span class="lineno"> 2709</span> {</div>
<div class="line"><a id="l02710" name="l02710"></a><span class="lineno"> 2710</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l02711" name="l02711"></a><span class="lineno"> 2711</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l02712" name="l02712"></a><span class="lineno"> 2712</span> block_position = aligned_position;</div>
<div class="line"><a id="l02713" name="l02713"></a><span class="lineno"> 2713</span> }</div>
<div class="line"><a id="l02714" name="l02714"></a><span class="lineno"> 2714</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing tape file block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l02715" name="l02715"></a><span class="lineno"> 2715</span> <span class="keywordflow">if</span>(fwrite(&amp;tape_file_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTapeFileHeader.html">TapeFileHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l02716" name="l02716"></a><span class="lineno"> 2716</span> {</div>
<div class="line"><a id="l02717" name="l02717"></a><span class="lineno"> 2717</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, tape_file_block.<a class="code hl_variable" href="structTapeFileHeader.html#a74b5289640a6c45eece7bd58550e59c0">length</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02718" name="l02718"></a><span class="lineno"> 2718</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l02719" name="l02719"></a><span class="lineno"> 2719</span> {</div>
<div class="line"><a id="l02720" name="l02720"></a><span class="lineno"> 2720</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote tape file block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, tape_file_block.<a class="code hl_variable" href="structTapeFileHeader.html#a74b5289640a6c45eece7bd58550e59c0">length</a>);</div>
<div class="line"><a id="l02721" name="l02721"></a><span class="lineno"> 2721</span> <span class="comment">// Add tape file block to index</span></div>
<div class="line"><a id="l02722" name="l02722"></a><span class="lineno"> 2722</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding tape file block to index&quot;</span>);</div>
<div class="line"><a id="l02723" name="l02723"></a><span class="lineno"> 2723</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> index_entry;</div>
<div class="line"><a id="l02724" name="l02724"></a><span class="lineno"> 2724</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ac3a117f2498bf736a76d5d3a3830540a">TapeFileBlock</a>;</div>
<div class="line"><a id="l02725" name="l02725"></a><span class="lineno"> 2725</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l02726" name="l02726"></a><span class="lineno"> 2726</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l02727" name="l02727"></a><span class="lineno"> 2727</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;index_entry);</div>
<div class="line"><a id="l02728" name="l02728"></a><span class="lineno"> 2728</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added tape file block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l02729" name="l02729"></a><span class="lineno"> 2729</span> }</div>
<div class="line"><a id="l02730" name="l02730"></a><span class="lineno"> 2730</span> }</div>
<div class="line"><a id="l02731" name="l02731"></a><span class="lineno"> 2731</span> </div>
<div class="line"><a id="l02732" name="l02732"></a><span class="lineno"> 2732</span> free(buffer);</div>
<div class="line"><a id="l02733" name="l02733"></a><span class="lineno"> 2733</span>}</div>
</div>
<div class="line"><a id="l02734" name="l02734"></a><span class="lineno"> 2734</span></div>
<div class="foldopen" id="foldopen02903" data-start="{" data-end="}">
<div class="line"><a id="l02903" name="l02903"></a><span class="lineno"><a class="line" href="close_8c.html#a82707f569a505107ab77c9c86502cf79"> 2903</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a82707f569a505107ab77c9c86502cf79">write_tape_partition_block</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l02904" name="l02904"></a><span class="lineno"> 2904</span>{</div>
<div class="line"><a id="l02905" name="l02905"></a><span class="lineno"> 2905</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad7ca524fb6cece835566c268258b9a54">tape_partitions</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02906" name="l02906"></a><span class="lineno"> 2906</span> </div>
<div class="line"><a id="l02907" name="l02907"></a><span class="lineno"> 2907</span> <span class="comment">// Iterate the uthash and count how many entries do we have</span></div>
<div class="line"><a id="l02908" name="l02908"></a><span class="lineno"> 2908</span> <span class="keyword">const</span> <a class="code hl_struct" href="structTapePartitionHashEntry.html">TapePartitionHashEntry</a> *tape_partition = NULL;</div>
<div class="line"><a id="l02909" name="l02909"></a><span class="lineno"> 2909</span> <span class="keyword">const</span> <a class="code hl_struct" href="structTapePartitionHashEntry.html">TapePartitionHashEntry</a> *tmp_tape_partition = NULL;</div>
<div class="line"><a id="l02910" name="l02910"></a><span class="lineno"> 2910</span> <span class="keywordtype">size_t</span> tape_partition_count = 0;</div>
<div class="line"><a id="l02911" name="l02911"></a><span class="lineno"> 2911</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad7ca524fb6cece835566c268258b9a54">tape_partitions</a>, tape_partition, tmp_tape_partition) tape_partition_count++;</div>
<div class="line"><a id="l02912" name="l02912"></a><span class="lineno"> 2912</span> </div>
<div class="line"><a id="l02913" name="l02913"></a><span class="lineno"> 2913</span> <span class="comment">// Create a memory buffer to copy all the partition entries</span></div>
<div class="line"><a id="l02914" name="l02914"></a><span class="lineno"> 2914</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> buffer_size = tape_partition_count * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTapePartitionEntry.html">TapePartitionEntry</a>);</div>
<div class="line"><a id="l02915" name="l02915"></a><span class="lineno"> 2915</span> <a class="code hl_struct" href="structTapePartitionEntry.html">TapePartitionEntry</a> *buffer = malloc(buffer_size);</div>
<div class="line"><a id="l02916" name="l02916"></a><span class="lineno"> 2916</span> <span class="keywordflow">if</span>(buffer == NULL)</div>
<div class="line"><a id="l02917" name="l02917"></a><span class="lineno"> 2917</span> {</div>
<div class="line"><a id="l02918" name="l02918"></a><span class="lineno"> 2918</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to allocate memory for tape partition entries&quot;</span>);</div>
<div class="line"><a id="l02919" name="l02919"></a><span class="lineno"> 2919</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02920" name="l02920"></a><span class="lineno"> 2920</span> }</div>
<div class="line"><a id="l02921" name="l02921"></a><span class="lineno"> 2921</span> memset(buffer, 0, buffer_size);</div>
<div class="line"><a id="l02922" name="l02922"></a><span class="lineno"> 2922</span> <span class="keywordtype">size_t</span> index = 0;</div>
<div class="line"><a id="l02923" name="l02923"></a><span class="lineno"> 2923</span> HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad7ca524fb6cece835566c268258b9a54">tape_partitions</a>, tape_partition, tmp_tape_partition)</div>
<div class="line"><a id="l02924" name="l02924"></a><span class="lineno"> 2924</span> {</div>
<div class="line"><a id="l02925" name="l02925"></a><span class="lineno"> 2925</span> <span class="keywordflow">if</span>(index &gt;= tape_partition_count) <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02926" name="l02926"></a><span class="lineno"> 2926</span> memcpy(&amp;buffer[index], &amp;tape_partition-&gt;<a class="code hl_variable" href="structTapePartitionHashEntry.html#af7c9f8904da9a0a21171ff3c04ec4379">partitionEntry</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTapePartitionEntry.html">TapePartitionEntry</a>));</div>
<div class="line"><a id="l02927" name="l02927"></a><span class="lineno"> 2927</span> index++;</div>
<div class="line"><a id="l02928" name="l02928"></a><span class="lineno"> 2928</span> }</div>
<div class="line"><a id="l02929" name="l02929"></a><span class="lineno"> 2929</span> </div>
<div class="line"><a id="l02930" name="l02930"></a><span class="lineno"> 2930</span> <span class="comment">// Create the tape partition block in memory</span></div>
<div class="line"><a id="l02931" name="l02931"></a><span class="lineno"> 2931</span> <a class="code hl_struct" href="structTapePartitionHeader.html">TapePartitionHeader</a> tape_partition_block = {0};</div>
<div class="line"><a id="l02932" name="l02932"></a><span class="lineno"> 2932</span> tape_partition_block.<a class="code hl_variable" href="structTapePartitionHeader.html#ace597fc284e2191b65e69eb0be9f99f6">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a60609bbcd07339a8bf589e66ef4a3041">TapePartitionBlock</a>;</div>
<div class="line"><a id="l02933" name="l02933"></a><span class="lineno"> 2933</span> tape_partition_block.<a class="code hl_variable" href="structTapePartitionHeader.html#a698bbe76b7612e2461f97f819e3830b7">length</a> = (uint32_t)buffer_size;</div>
<div class="line"><a id="l02934" name="l02934"></a><span class="lineno"> 2934</span> tape_partition_block.<a class="code hl_variable" href="structTapePartitionHeader.html#a172a09251507f59bf607e4e2680f1bfc">crc64</a> = <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>((uint8_t *)buffer, (uint32_t)tape_partition_block.<a class="code hl_variable" href="structTapePartitionHeader.html#a698bbe76b7612e2461f97f819e3830b7">length</a>);</div>
<div class="line"><a id="l02935" name="l02935"></a><span class="lineno"> 2935</span> </div>
<div class="line"><a id="l02936" name="l02936"></a><span class="lineno"> 2936</span> <span class="comment">// Write tape partition block to partition, block aligned</span></div>
<div class="line"><a id="l02937" name="l02937"></a><span class="lineno"> 2937</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l02938" name="l02938"></a><span class="lineno"> 2938</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02939" name="l02939"></a><span class="lineno"> 2939</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l02940" name="l02940"></a><span class="lineno"> 2940</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l02941" name="l02941"></a><span class="lineno"> 2941</span> {</div>
<div class="line"><a id="l02942" name="l02942"></a><span class="lineno"> 2942</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l02943" name="l02943"></a><span class="lineno"> 2943</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l02944" name="l02944"></a><span class="lineno"> 2944</span> block_position = aligned_position;</div>
<div class="line"><a id="l02945" name="l02945"></a><span class="lineno"> 2945</span> }</div>
<div class="line"><a id="l02946" name="l02946"></a><span class="lineno"> 2946</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing tape partition block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l02947" name="l02947"></a><span class="lineno"> 2947</span> <span class="keywordflow">if</span>(fwrite(&amp;tape_partition_block, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structTapePartitionHeader.html">TapePartitionHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l02948" name="l02948"></a><span class="lineno"> 2948</span> {</div>
<div class="line"><a id="l02949" name="l02949"></a><span class="lineno"> 2949</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> written_bytes = fwrite(buffer, tape_partition_block.<a class="code hl_variable" href="structTapePartitionHeader.html#a698bbe76b7612e2461f97f819e3830b7">length</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l02950" name="l02950"></a><span class="lineno"> 2950</span> <span class="keywordflow">if</span>(written_bytes == 1)</div>
<div class="line"><a id="l02951" name="l02951"></a><span class="lineno"> 2951</span> {</div>
<div class="line"><a id="l02952" name="l02952"></a><span class="lineno"> 2952</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote tape partition block (%&quot;</span> PRIu64 <span class="stringliteral">&quot; bytes)&quot;</span>, tape_partition_block.<a class="code hl_variable" href="structTapePartitionHeader.html#a698bbe76b7612e2461f97f819e3830b7">length</a>);</div>
<div class="line"><a id="l02953" name="l02953"></a><span class="lineno"> 2953</span> <span class="comment">// Add tape partition block to index</span></div>
<div class="line"><a id="l02954" name="l02954"></a><span class="lineno"> 2954</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding tape partition block to index&quot;</span>);</div>
<div class="line"><a id="l02955" name="l02955"></a><span class="lineno"> 2955</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> index_entry;</div>
<div class="line"><a id="l02956" name="l02956"></a><span class="lineno"> 2956</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a60609bbcd07339a8bf589e66ef4a3041">TapePartitionBlock</a>;</div>
<div class="line"><a id="l02957" name="l02957"></a><span class="lineno"> 2957</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l02958" name="l02958"></a><span class="lineno"> 2958</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l02959" name="l02959"></a><span class="lineno"> 2959</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;index_entry);</div>
<div class="line"><a id="l02960" name="l02960"></a><span class="lineno"> 2960</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added tape partition block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l02961" name="l02961"></a><span class="lineno"> 2961</span> }</div>
<div class="line"><a id="l02962" name="l02962"></a><span class="lineno"> 2962</span> }</div>
<div class="line"><a id="l02963" name="l02963"></a><span class="lineno"> 2963</span> </div>
<div class="line"><a id="l02964" name="l02964"></a><span class="lineno"> 2964</span> free(buffer);</div>
<div class="line"><a id="l02965" name="l02965"></a><span class="lineno"> 2965</span>}</div>
</div>
<div class="line"><a id="l02966" name="l02966"></a><span class="lineno"> 2966</span></div>
<div class="foldopen" id="foldopen03028" data-start="{" data-end="}">
<div class="line"><a id="l03028" name="l03028"></a><span class="lineno"><a class="line" href="close_8c.html#a5e24a87e4dd5eb0cb9225be3e25c7ef3"> 3028</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a5e24a87e4dd5eb0cb9225be3e25c7ef3">write_geometry_block</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l03029" name="l03029"></a><span class="lineno"> 3029</span>{</div>
<div class="line"><a id="l03030" name="l03030"></a><span class="lineno"> 3030</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9ac9d12e8fde7a69c01cdf2dc32f33bd">geometry_block</a>.<a class="code hl_variable" href="structGeometryBlockHeader.html#a233b19be8361b1c3c1963d8521924138">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a76691ea3f772bf28e7446d171e205db2">GeometryBlock</a>) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03031" name="l03031"></a><span class="lineno"> 3031</span> </div>
<div class="line"><a id="l03032" name="l03032"></a><span class="lineno"> 3032</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l03033" name="l03033"></a><span class="lineno"> 3033</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l03034" name="l03034"></a><span class="lineno"> 3034</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l03035" name="l03035"></a><span class="lineno"> 3035</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l03036" name="l03036"></a><span class="lineno"> 3036</span> {</div>
<div class="line"><a id="l03037" name="l03037"></a><span class="lineno"> 3037</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l03038" name="l03038"></a><span class="lineno"> 3038</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l03039" name="l03039"></a><span class="lineno"> 3039</span> block_position = aligned_position;</div>
<div class="line"><a id="l03040" name="l03040"></a><span class="lineno"> 3040</span> }</div>
<div class="line"><a id="l03041" name="l03041"></a><span class="lineno"> 3041</span> </div>
<div class="line"><a id="l03042" name="l03042"></a><span class="lineno"> 3042</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing geometry block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l03043" name="l03043"></a><span class="lineno"> 3043</span> </div>
<div class="line"><a id="l03044" name="l03044"></a><span class="lineno"> 3044</span> <span class="comment">// Write header</span></div>
<div class="line"><a id="l03045" name="l03045"></a><span class="lineno"> 3045</span> <span class="keywordflow">if</span>(fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9ac9d12e8fde7a69c01cdf2dc32f33bd">geometry_block</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structGeometryBlockHeader.html">GeometryBlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03046" name="l03046"></a><span class="lineno"> 3046</span> {</div>
<div class="line"><a id="l03047" name="l03047"></a><span class="lineno"> 3047</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote geometry block&quot;</span>);</div>
<div class="line"><a id="l03048" name="l03048"></a><span class="lineno"> 3048</span> </div>
<div class="line"><a id="l03049" name="l03049"></a><span class="lineno"> 3049</span> <span class="comment">// Add geometry block to index</span></div>
<div class="line"><a id="l03050" name="l03050"></a><span class="lineno"> 3050</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding geometry block to index&quot;</span>);</div>
<div class="line"><a id="l03051" name="l03051"></a><span class="lineno"> 3051</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> index_entry;</div>
<div class="line"><a id="l03052" name="l03052"></a><span class="lineno"> 3052</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a76691ea3f772bf28e7446d171e205db2">GeometryBlock</a>;</div>
<div class="line"><a id="l03053" name="l03053"></a><span class="lineno"> 3053</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l03054" name="l03054"></a><span class="lineno"> 3054</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l03055" name="l03055"></a><span class="lineno"> 3055</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;index_entry);</div>
<div class="line"><a id="l03056" name="l03056"></a><span class="lineno"> 3056</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added geometry block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l03057" name="l03057"></a><span class="lineno"> 3057</span> }</div>
<div class="line"><a id="l03058" name="l03058"></a><span class="lineno"> 3058</span>}</div>
</div>
<div class="line"><a id="l03059" name="l03059"></a><span class="lineno"> 3059</span></div>
<div class="foldopen" id="foldopen03164" data-start="{" data-end="}">
<div class="line"><a id="l03164" name="l03164"></a><span class="lineno"><a class="line" href="close_8c.html#af36ba67be5e488713558202feef0eeef"> 3164</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#af36ba67be5e488713558202feef0eeef">write_metadata_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l03165" name="l03165"></a><span class="lineno"> 3165</span>{</div>
<div class="line"><a id="l03166" name="l03166"></a><span class="lineno"> 3166</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a16f0be711a2a0ddb48a0f092716e93dc">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ad5a8c9e1ce6a2acd795dc1e7561addf8">MetadataBlock</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a1359ce7deda764ea267459f3f5906473">mediaSequence</a> == 0 &amp;&amp;</div>
<div class="line"><a id="l03167" name="l03167"></a><span class="lineno"> 3167</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aacd243f7f5a78c6087b797328197f522">lastMediaSequence</a> == 0 &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a0c15ef634690890bf80719046faa0230">creator</a> == NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab08395cd8ed98def2b5886c35fbad605">comments</a> == NULL &amp;&amp;</div>
<div class="line"><a id="l03168" name="l03168"></a><span class="lineno"> 3168</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aeb5bda76e0ea176598a04be97b7d5683">media_title</a> == NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#afd13345e6ab5072d97d9b3bbe238ecea">media_manufacturer</a> == NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4ecbf4064d4ab0440e922e1c096b38dc">media_model</a> == NULL &amp;&amp;</div>
<div class="line"><a id="l03169" name="l03169"></a><span class="lineno"> 3169</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a33b54e4325c94ad69d97f9cf5bdae68f">media_serial_number</a> == NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04aa232b37b939d9e815c4addc68a7a3">media_barcode</a> == NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa3d0670124a4fbe88c485c2b67d1ddbc">media_part_number</a> == NULL &amp;&amp;</div>
<div class="line"><a id="l03170" name="l03170"></a><span class="lineno"> 3170</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a614d6f01d563ea57650ce0bbfecfa08d">drive_manufacturer</a> == NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a77d9c8c852de1d955bceb4cfc50557ce">drive_model</a> == NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a505f32de424a033246348d9fa35f9b19">drive_serial_number</a> == NULL &amp;&amp;</div>
<div class="line"><a id="l03171" name="l03171"></a><span class="lineno"> 3171</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a329dda508cb897dc7871d2d1c0434792">drive_firmware_revision</a> == NULL)</div>
<div class="line"><a id="l03172" name="l03172"></a><span class="lineno"> 3172</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03173" name="l03173"></a><span class="lineno"> 3173</span> </div>
<div class="line"><a id="l03174" name="l03174"></a><span class="lineno"> 3174</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a3d1affce1a6ce2bda81aeaf85435b885">blockSize</a> =</div>
<div class="line"><a id="l03175" name="l03175"></a><span class="lineno"> 3175</span> <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structMetadataBlockHeader.html">MetadataBlockHeader</a>) + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#af620858c254ea17f2d75b065134239c8">creatorLength</a> +</div>
<div class="line"><a id="l03176" name="l03176"></a><span class="lineno"> 3176</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a0bbbf0b6d7b48ebdc07d4a5e1138044f">commentsLength</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a68deb35b7b070dcc18c790289192741c">mediaTitleLength</a> +</div>
<div class="line"><a id="l03177" name="l03177"></a><span class="lineno"> 3177</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a7f2956f787d72b6981a22c050c0889cf">mediaManufacturerLength</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a9438f57b0304b42912b8c66e5a0f1051">mediaModelLength</a> +</div>
<div class="line"><a id="l03178" name="l03178"></a><span class="lineno"> 3178</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aeae9bce28abec33ffa90005f2a247e34">mediaSerialNumberLength</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef456689422a0514489b1c900ee2c741">mediaBarcodeLength</a> +</div>
<div class="line"><a id="l03179" name="l03179"></a><span class="lineno"> 3179</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef055916275048b6496f1f74eef2f1ac">mediaPartNumberLength</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a380656568f47a838a8a3833844789064">driveManufacturerLength</a> +</div>
<div class="line"><a id="l03180" name="l03180"></a><span class="lineno"> 3180</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a3757158a1386964537beb387b5bc03d2">driveModelLength</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a78213f42c28f31038e6a9f130c660ad8">driveSerialNumberLength</a> +</div>
<div class="line"><a id="l03181" name="l03181"></a><span class="lineno"> 3181</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#afbf024f5492e45a3643ea7a1652b6420">driveFirmwareRevisionLength</a>;</div>
<div class="line"><a id="l03182" name="l03182"></a><span class="lineno"> 3182</span> </div>
<div class="line"><a id="l03183" name="l03183"></a><span class="lineno"> 3183</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a16f0be711a2a0ddb48a0f092716e93dc">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ad5a8c9e1ce6a2acd795dc1e7561addf8">MetadataBlock</a>;</div>
<div class="line"><a id="l03184" name="l03184"></a><span class="lineno"> 3184</span> </div>
<div class="line"><a id="l03185" name="l03185"></a><span class="lineno"> 3185</span> <span class="keywordtype">int</span> pos = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structMetadataBlockHeader.html">MetadataBlockHeader</a>);</div>
<div class="line"><a id="l03186" name="l03186"></a><span class="lineno"> 3186</span> </div>
<div class="line"><a id="l03187" name="l03187"></a><span class="lineno"> 3187</span> uint8_t *buffer = calloc(1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a3d1affce1a6ce2bda81aeaf85435b885">blockSize</a>);</div>
<div class="line"><a id="l03188" name="l03188"></a><span class="lineno"> 3188</span> <span class="keywordflow">if</span>(buffer == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03189" name="l03189"></a><span class="lineno"> 3189</span> </div>
<div class="line"><a id="l03190" name="l03190"></a><span class="lineno"> 3190</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a0c15ef634690890bf80719046faa0230">creator</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#af620858c254ea17f2d75b065134239c8">creatorLength</a> &gt; 0)</div>
<div class="line"><a id="l03191" name="l03191"></a><span class="lineno"> 3191</span> {</div>
<div class="line"><a id="l03192" name="l03192"></a><span class="lineno"> 3192</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a0c15ef634690890bf80719046faa0230">creator</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#af620858c254ea17f2d75b065134239c8">creatorLength</a>);</div>
<div class="line"><a id="l03193" name="l03193"></a><span class="lineno"> 3193</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a5ee9864c423b8acf6d15b3947587ed4c">creatorOffset</a> = pos;</div>
<div class="line"><a id="l03194" name="l03194"></a><span class="lineno"> 3194</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#af620858c254ea17f2d75b065134239c8">creatorLength</a>;</div>
<div class="line"><a id="l03195" name="l03195"></a><span class="lineno"> 3195</span> }</div>
<div class="line"><a id="l03196" name="l03196"></a><span class="lineno"> 3196</span> </div>
<div class="line"><a id="l03197" name="l03197"></a><span class="lineno"> 3197</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab08395cd8ed98def2b5886c35fbad605">comments</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a0bbbf0b6d7b48ebdc07d4a5e1138044f">commentsLength</a> &gt; 0)</div>
<div class="line"><a id="l03198" name="l03198"></a><span class="lineno"> 3198</span> {</div>
<div class="line"><a id="l03199" name="l03199"></a><span class="lineno"> 3199</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab08395cd8ed98def2b5886c35fbad605">comments</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a0bbbf0b6d7b48ebdc07d4a5e1138044f">commentsLength</a>);</div>
<div class="line"><a id="l03200" name="l03200"></a><span class="lineno"> 3200</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#abd56f9918aab6b6ee628abf6ca04c6d9">commentsOffset</a> = pos;</div>
<div class="line"><a id="l03201" name="l03201"></a><span class="lineno"> 3201</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a0bbbf0b6d7b48ebdc07d4a5e1138044f">commentsLength</a>;</div>
<div class="line"><a id="l03202" name="l03202"></a><span class="lineno"> 3202</span> }</div>
<div class="line"><a id="l03203" name="l03203"></a><span class="lineno"> 3203</span> </div>
<div class="line"><a id="l03204" name="l03204"></a><span class="lineno"> 3204</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aeb5bda76e0ea176598a04be97b7d5683">media_title</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a68deb35b7b070dcc18c790289192741c">mediaTitleLength</a> &gt; 0)</div>
<div class="line"><a id="l03205" name="l03205"></a><span class="lineno"> 3205</span> {</div>
<div class="line"><a id="l03206" name="l03206"></a><span class="lineno"> 3206</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aeb5bda76e0ea176598a04be97b7d5683">media_title</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a68deb35b7b070dcc18c790289192741c">mediaTitleLength</a>);</div>
<div class="line"><a id="l03207" name="l03207"></a><span class="lineno"> 3207</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a22d2307092bdc0046664f328e9da581e">mediaTitleOffset</a> = pos;</div>
<div class="line"><a id="l03208" name="l03208"></a><span class="lineno"> 3208</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a68deb35b7b070dcc18c790289192741c">mediaTitleLength</a>;</div>
<div class="line"><a id="l03209" name="l03209"></a><span class="lineno"> 3209</span> }</div>
<div class="line"><a id="l03210" name="l03210"></a><span class="lineno"> 3210</span> </div>
<div class="line"><a id="l03211" name="l03211"></a><span class="lineno"> 3211</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#afd13345e6ab5072d97d9b3bbe238ecea">media_manufacturer</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a7f2956f787d72b6981a22c050c0889cf">mediaManufacturerLength</a> &gt; 0)</div>
<div class="line"><a id="l03212" name="l03212"></a><span class="lineno"> 3212</span> {</div>
<div class="line"><a id="l03213" name="l03213"></a><span class="lineno"> 3213</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#afd13345e6ab5072d97d9b3bbe238ecea">media_manufacturer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a7f2956f787d72b6981a22c050c0889cf">mediaManufacturerLength</a>);</div>
<div class="line"><a id="l03214" name="l03214"></a><span class="lineno"> 3214</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a6a443de2064b9c3eb31288afb81676d3">mediaManufacturerOffset</a> = pos;</div>
<div class="line"><a id="l03215" name="l03215"></a><span class="lineno"> 3215</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a7f2956f787d72b6981a22c050c0889cf">mediaManufacturerLength</a>;</div>
<div class="line"><a id="l03216" name="l03216"></a><span class="lineno"> 3216</span> }</div>
<div class="line"><a id="l03217" name="l03217"></a><span class="lineno"> 3217</span> </div>
<div class="line"><a id="l03218" name="l03218"></a><span class="lineno"> 3218</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4ecbf4064d4ab0440e922e1c096b38dc">media_model</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a9438f57b0304b42912b8c66e5a0f1051">mediaModelLength</a> &gt; 0)</div>
<div class="line"><a id="l03219" name="l03219"></a><span class="lineno"> 3219</span> {</div>
<div class="line"><a id="l03220" name="l03220"></a><span class="lineno"> 3220</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4ecbf4064d4ab0440e922e1c096b38dc">media_model</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a9438f57b0304b42912b8c66e5a0f1051">mediaModelLength</a>);</div>
<div class="line"><a id="l03221" name="l03221"></a><span class="lineno"> 3221</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a5340616394d88102e70054c673308469">mediaModelOffset</a> = pos;</div>
<div class="line"><a id="l03222" name="l03222"></a><span class="lineno"> 3222</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a9438f57b0304b42912b8c66e5a0f1051">mediaModelLength</a>;</div>
<div class="line"><a id="l03223" name="l03223"></a><span class="lineno"> 3223</span> }</div>
<div class="line"><a id="l03224" name="l03224"></a><span class="lineno"> 3224</span> </div>
<div class="line"><a id="l03225" name="l03225"></a><span class="lineno"> 3225</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a33b54e4325c94ad69d97f9cf5bdae68f">media_serial_number</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aeae9bce28abec33ffa90005f2a247e34">mediaSerialNumberLength</a> &gt; 0)</div>
<div class="line"><a id="l03226" name="l03226"></a><span class="lineno"> 3226</span> {</div>
<div class="line"><a id="l03227" name="l03227"></a><span class="lineno"> 3227</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a33b54e4325c94ad69d97f9cf5bdae68f">media_serial_number</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aeae9bce28abec33ffa90005f2a247e34">mediaSerialNumberLength</a>);</div>
<div class="line"><a id="l03228" name="l03228"></a><span class="lineno"> 3228</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#ae4561c1f946fe76239810f29a237dfbc">mediaSerialNumberOffset</a> = pos;</div>
<div class="line"><a id="l03229" name="l03229"></a><span class="lineno"> 3229</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aeae9bce28abec33ffa90005f2a247e34">mediaSerialNumberLength</a>;</div>
<div class="line"><a id="l03230" name="l03230"></a><span class="lineno"> 3230</span> }</div>
<div class="line"><a id="l03231" name="l03231"></a><span class="lineno"> 3231</span> </div>
<div class="line"><a id="l03232" name="l03232"></a><span class="lineno"> 3232</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04aa232b37b939d9e815c4addc68a7a3">media_barcode</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef456689422a0514489b1c900ee2c741">mediaBarcodeLength</a> &gt; 0)</div>
<div class="line"><a id="l03233" name="l03233"></a><span class="lineno"> 3233</span> {</div>
<div class="line"><a id="l03234" name="l03234"></a><span class="lineno"> 3234</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04aa232b37b939d9e815c4addc68a7a3">media_barcode</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef456689422a0514489b1c900ee2c741">mediaBarcodeLength</a>);</div>
<div class="line"><a id="l03235" name="l03235"></a><span class="lineno"> 3235</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#affd6e10a1ab8eb3714a6ff09b3471747">mediaBarcodeOffset</a> = pos;</div>
<div class="line"><a id="l03236" name="l03236"></a><span class="lineno"> 3236</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef456689422a0514489b1c900ee2c741">mediaBarcodeLength</a>;</div>
<div class="line"><a id="l03237" name="l03237"></a><span class="lineno"> 3237</span> }</div>
<div class="line"><a id="l03238" name="l03238"></a><span class="lineno"> 3238</span> </div>
<div class="line"><a id="l03239" name="l03239"></a><span class="lineno"> 3239</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa3d0670124a4fbe88c485c2b67d1ddbc">media_part_number</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef055916275048b6496f1f74eef2f1ac">mediaPartNumberLength</a> &gt; 0)</div>
<div class="line"><a id="l03240" name="l03240"></a><span class="lineno"> 3240</span> {</div>
<div class="line"><a id="l03241" name="l03241"></a><span class="lineno"> 3241</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa3d0670124a4fbe88c485c2b67d1ddbc">media_part_number</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef055916275048b6496f1f74eef2f1ac">mediaPartNumberLength</a>);</div>
<div class="line"><a id="l03242" name="l03242"></a><span class="lineno"> 3242</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aeb9233f4dd077e5b0985a3a776deb7c8">mediaPartNumberOffset</a> = pos;</div>
<div class="line"><a id="l03243" name="l03243"></a><span class="lineno"> 3243</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#aef055916275048b6496f1f74eef2f1ac">mediaPartNumberLength</a>;</div>
<div class="line"><a id="l03244" name="l03244"></a><span class="lineno"> 3244</span> }</div>
<div class="line"><a id="l03245" name="l03245"></a><span class="lineno"> 3245</span> </div>
<div class="line"><a id="l03246" name="l03246"></a><span class="lineno"> 3246</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a614d6f01d563ea57650ce0bbfecfa08d">drive_manufacturer</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a380656568f47a838a8a3833844789064">driveManufacturerLength</a> &gt; 0)</div>
<div class="line"><a id="l03247" name="l03247"></a><span class="lineno"> 3247</span> {</div>
<div class="line"><a id="l03248" name="l03248"></a><span class="lineno"> 3248</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a614d6f01d563ea57650ce0bbfecfa08d">drive_manufacturer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a380656568f47a838a8a3833844789064">driveManufacturerLength</a>);</div>
<div class="line"><a id="l03249" name="l03249"></a><span class="lineno"> 3249</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#acb4e827848c2525a0fa5fcc6cfcf2887">driveManufacturerOffset</a> = pos;</div>
<div class="line"><a id="l03250" name="l03250"></a><span class="lineno"> 3250</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a380656568f47a838a8a3833844789064">driveManufacturerLength</a>;</div>
<div class="line"><a id="l03251" name="l03251"></a><span class="lineno"> 3251</span> }</div>
<div class="line"><a id="l03252" name="l03252"></a><span class="lineno"> 3252</span> </div>
<div class="line"><a id="l03253" name="l03253"></a><span class="lineno"> 3253</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a77d9c8c852de1d955bceb4cfc50557ce">drive_model</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a3757158a1386964537beb387b5bc03d2">driveModelLength</a> &gt; 0)</div>
<div class="line"><a id="l03254" name="l03254"></a><span class="lineno"> 3254</span> {</div>
<div class="line"><a id="l03255" name="l03255"></a><span class="lineno"> 3255</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a77d9c8c852de1d955bceb4cfc50557ce">drive_model</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a3757158a1386964537beb387b5bc03d2">driveModelLength</a>);</div>
<div class="line"><a id="l03256" name="l03256"></a><span class="lineno"> 3256</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a4751e36473bffa529e5d1d1debca95a2">driveModelOffset</a> = pos;</div>
<div class="line"><a id="l03257" name="l03257"></a><span class="lineno"> 3257</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a3757158a1386964537beb387b5bc03d2">driveModelLength</a>;</div>
<div class="line"><a id="l03258" name="l03258"></a><span class="lineno"> 3258</span> }</div>
<div class="line"><a id="l03259" name="l03259"></a><span class="lineno"> 3259</span> </div>
<div class="line"><a id="l03260" name="l03260"></a><span class="lineno"> 3260</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a505f32de424a033246348d9fa35f9b19">drive_serial_number</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a78213f42c28f31038e6a9f130c660ad8">driveSerialNumberLength</a> &gt; 0)</div>
<div class="line"><a id="l03261" name="l03261"></a><span class="lineno"> 3261</span> {</div>
<div class="line"><a id="l03262" name="l03262"></a><span class="lineno"> 3262</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a505f32de424a033246348d9fa35f9b19">drive_serial_number</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a78213f42c28f31038e6a9f130c660ad8">driveSerialNumberLength</a>);</div>
<div class="line"><a id="l03263" name="l03263"></a><span class="lineno"> 3263</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a7d44fe2fdfebf3d49179801eb72ff72c">driveSerialNumberOffset</a> = pos;</div>
<div class="line"><a id="l03264" name="l03264"></a><span class="lineno"> 3264</span> pos += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a78213f42c28f31038e6a9f130c660ad8">driveSerialNumberLength</a>;</div>
<div class="line"><a id="l03265" name="l03265"></a><span class="lineno"> 3265</span> }</div>
<div class="line"><a id="l03266" name="l03266"></a><span class="lineno"> 3266</span> </div>
<div class="line"><a id="l03267" name="l03267"></a><span class="lineno"> 3267</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a329dda508cb897dc7871d2d1c0434792">drive_firmware_revision</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#afbf024f5492e45a3643ea7a1652b6420">driveFirmwareRevisionLength</a> &gt; 0)</div>
<div class="line"><a id="l03268" name="l03268"></a><span class="lineno"> 3268</span> {</div>
<div class="line"><a id="l03269" name="l03269"></a><span class="lineno"> 3269</span> memcpy(buffer + pos, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a329dda508cb897dc7871d2d1c0434792">drive_firmware_revision</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#afbf024f5492e45a3643ea7a1652b6420">driveFirmwareRevisionLength</a>);</div>
<div class="line"><a id="l03270" name="l03270"></a><span class="lineno"> 3270</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a9bcf425f7ae5ab41d030c9b1f2c72979">driveFirmwareRevisionOffset</a> = pos;</div>
<div class="line"><a id="l03271" name="l03271"></a><span class="lineno"> 3271</span> }</div>
<div class="line"><a id="l03272" name="l03272"></a><span class="lineno"> 3272</span> </div>
<div class="line"><a id="l03273" name="l03273"></a><span class="lineno"> 3273</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l03274" name="l03274"></a><span class="lineno"> 3274</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l03275" name="l03275"></a><span class="lineno"> 3275</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l03276" name="l03276"></a><span class="lineno"> 3276</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l03277" name="l03277"></a><span class="lineno"> 3277</span> {</div>
<div class="line"><a id="l03278" name="l03278"></a><span class="lineno"> 3278</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l03279" name="l03279"></a><span class="lineno"> 3279</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l03280" name="l03280"></a><span class="lineno"> 3280</span> block_position = aligned_position;</div>
<div class="line"><a id="l03281" name="l03281"></a><span class="lineno"> 3281</span> }</div>
<div class="line"><a id="l03282" name="l03282"></a><span class="lineno"> 3282</span> </div>
<div class="line"><a id="l03283" name="l03283"></a><span class="lineno"> 3283</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing metadata block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l03284" name="l03284"></a><span class="lineno"> 3284</span> </div>
<div class="line"><a id="l03285" name="l03285"></a><span class="lineno"> 3285</span> <span class="keywordflow">if</span>(fwrite(buffer, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">metadata_block_header</a>.<a class="code hl_variable" href="structMetadataBlockHeader.html#a3d1affce1a6ce2bda81aeaf85435b885">blockSize</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03286" name="l03286"></a><span class="lineno"> 3286</span> {</div>
<div class="line"><a id="l03287" name="l03287"></a><span class="lineno"> 3287</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote metadata block&quot;</span>);</div>
<div class="line"><a id="l03288" name="l03288"></a><span class="lineno"> 3288</span> </div>
<div class="line"><a id="l03289" name="l03289"></a><span class="lineno"> 3289</span> <span class="comment">// Add metadata block to index</span></div>
<div class="line"><a id="l03290" name="l03290"></a><span class="lineno"> 3290</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding metadata block to index&quot;</span>);</div>
<div class="line"><a id="l03291" name="l03291"></a><span class="lineno"> 3291</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> index_entry;</div>
<div class="line"><a id="l03292" name="l03292"></a><span class="lineno"> 3292</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ad5a8c9e1ce6a2acd795dc1e7561addf8">MetadataBlock</a>;</div>
<div class="line"><a id="l03293" name="l03293"></a><span class="lineno"> 3293</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l03294" name="l03294"></a><span class="lineno"> 3294</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l03295" name="l03295"></a><span class="lineno"> 3295</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;index_entry);</div>
<div class="line"><a id="l03296" name="l03296"></a><span class="lineno"> 3296</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added metadata block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l03297" name="l03297"></a><span class="lineno"> 3297</span> }</div>
<div class="line"><a id="l03298" name="l03298"></a><span class="lineno"> 3298</span> </div>
<div class="line"><a id="l03299" name="l03299"></a><span class="lineno"> 3299</span> free(buffer);</div>
<div class="line"><a id="l03300" name="l03300"></a><span class="lineno"> 3300</span>}</div>
</div>
<div class="line"><a id="l03301" name="l03301"></a><span class="lineno"> 3301</span></div>
<div class="foldopen" id="foldopen03447" data-start="{" data-end="}">
<div class="line"><a id="l03447" name="l03447"></a><span class="lineno"><a class="line" href="close_8c.html#a796034966c1e918152e652635431dc39"> 3447</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#a796034966c1e918152e652635431dc39">write_dumphw_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l03448" name="l03448"></a><span class="lineno"> 3448</span>{</div>
<div class="line"><a id="l03449" name="l03449"></a><span class="lineno"> 3449</span> </div>
<div class="line"><a id="l03450" name="l03450"></a><span class="lineno"> 3450</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a> == 0 ||</div>
<div class="line"><a id="l03451" name="l03451"></a><span class="lineno"> 3451</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#aa5764ab144eef9a32c08f4475254442d">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ad33812deb344562478c4e0d208a114db">DumpHardwareBlock</a>)</div>
<div class="line"><a id="l03452" name="l03452"></a><span class="lineno"> 3452</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03453" name="l03453"></a><span class="lineno"> 3453</span> </div>
<div class="line"><a id="l03454" name="l03454"></a><span class="lineno"> 3454</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> required_length = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareHeader.html">DumpHardwareHeader</a>) + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#acc565625096da115c80e7e390e78a1fa">length</a>;</div>
<div class="line"><a id="l03455" name="l03455"></a><span class="lineno"> 3455</span> </div>
<div class="line"><a id="l03456" name="l03456"></a><span class="lineno"> 3456</span> uint8_t *buffer = calloc(1, required_length);</div>
<div class="line"><a id="l03457" name="l03457"></a><span class="lineno"> 3457</span> </div>
<div class="line"><a id="l03458" name="l03458"></a><span class="lineno"> 3458</span> <span class="keywordflow">if</span>(buffer == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03459" name="l03459"></a><span class="lineno"> 3459</span> </div>
<div class="line"><a id="l03460" name="l03460"></a><span class="lineno"> 3460</span> <span class="comment">// Start to iterate and copy the data</span></div>
<div class="line"><a id="l03461" name="l03461"></a><span class="lineno"> 3461</span> <span class="keywordtype">size_t</span> offset = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareHeader.html">DumpHardwareHeader</a>);</div>
<div class="line"><a id="l03462" name="l03462"></a><span class="lineno"> 3462</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>; i++)</div>
<div class="line"><a id="l03463" name="l03463"></a><span class="lineno"> 3463</span> {</div>
<div class="line"><a id="l03464" name="l03464"></a><span class="lineno"> 3464</span> <span class="keywordtype">size_t</span> entry_size = <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>) +</div>
<div class="line"><a id="l03465" name="l03465"></a><span class="lineno"> 3465</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a38a2c1b15dc4cabc02b4124b3a52c8db">manufacturerLength</a> +</div>
<div class="line"><a id="l03466" name="l03466"></a><span class="lineno"> 3466</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a81f6da3ced18e060c27a3bc3ac4387c3">modelLength</a> +</div>
<div class="line"><a id="l03467" name="l03467"></a><span class="lineno"> 3467</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#aca3e85fe2b6b8dd49afde691e5cf1ee8">revisionLength</a> +</div>
<div class="line"><a id="l03468" name="l03468"></a><span class="lineno"> 3468</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a52948ae4f0d07e4d861e79def4a0deec">firmwareLength</a> +</div>
<div class="line"><a id="l03469" name="l03469"></a><span class="lineno"> 3469</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#ab363d118785e94df2acc0c8dc1a9d1b5">serialLength</a> +</div>
<div class="line"><a id="l03470" name="l03470"></a><span class="lineno"> 3470</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a20025e2e89599dd60a83ca623fc9a200">softwareNameLength</a> +</div>
<div class="line"><a id="l03471" name="l03471"></a><span class="lineno"> 3471</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a4b4d1afcec5c3a0ec0e5f61fc481171d">softwareVersionLength</a> +</div>
<div class="line"><a id="l03472" name="l03472"></a><span class="lineno"> 3472</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#adea9ba6d578c27ee86524e7ff91dcbdd">softwareOperatingSystemLength</a> +</div>
<div class="line"><a id="l03473" name="l03473"></a><span class="lineno"> 3473</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a558ff77451f13188e00f5b8da4c595ad">extents</a> * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>);</div>
<div class="line"><a id="l03474" name="l03474"></a><span class="lineno"> 3474</span> </div>
<div class="line"><a id="l03475" name="l03475"></a><span class="lineno"> 3475</span> <span class="keywordflow">if</span>(offset + entry_size &gt; required_length)</div>
<div class="line"><a id="l03476" name="l03476"></a><span class="lineno"> 3476</span> {</div>
<div class="line"><a id="l03477" name="l03477"></a><span class="lineno"> 3477</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Calculated size exceeds provided buffer length&quot;</span>);</div>
<div class="line"><a id="l03478" name="l03478"></a><span class="lineno"> 3478</span> free(buffer);</div>
<div class="line"><a id="l03479" name="l03479"></a><span class="lineno"> 3479</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03480" name="l03480"></a><span class="lineno"> 3480</span> }</div>
<div class="line"><a id="l03481" name="l03481"></a><span class="lineno"> 3481</span> </div>
<div class="line"><a id="l03482" name="l03482"></a><span class="lineno"> 3482</span> memcpy(buffer + offset, &amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>));</div>
<div class="line"><a id="l03483" name="l03483"></a><span class="lineno"> 3483</span> offset += <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareEntry.html">DumpHardwareEntry</a>);</div>
<div class="line"><a id="l03484" name="l03484"></a><span class="lineno"> 3484</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a38a2c1b15dc4cabc02b4124b3a52c8db">manufacturerLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03485" name="l03485"></a><span class="lineno"> 3485</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a4dbc57a5f46892c5e0cde65c55c11e33">manufacturer</a> != NULL)</div>
<div class="line"><a id="l03486" name="l03486"></a><span class="lineno"> 3486</span> {</div>
<div class="line"><a id="l03487" name="l03487"></a><span class="lineno"> 3487</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a4dbc57a5f46892c5e0cde65c55c11e33">manufacturer</a>,</div>
<div class="line"><a id="l03488" name="l03488"></a><span class="lineno"> 3488</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a38a2c1b15dc4cabc02b4124b3a52c8db">manufacturerLength</a>);</div>
<div class="line"><a id="l03489" name="l03489"></a><span class="lineno"> 3489</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a38a2c1b15dc4cabc02b4124b3a52c8db">manufacturerLength</a>;</div>
<div class="line"><a id="l03490" name="l03490"></a><span class="lineno"> 3490</span> }</div>
<div class="line"><a id="l03491" name="l03491"></a><span class="lineno"> 3491</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a81f6da3ced18e060c27a3bc3ac4387c3">modelLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03492" name="l03492"></a><span class="lineno"> 3492</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a160651cc2a5247b99c9ebe38511cc475">model</a> != NULL)</div>
<div class="line"><a id="l03493" name="l03493"></a><span class="lineno"> 3493</span> {</div>
<div class="line"><a id="l03494" name="l03494"></a><span class="lineno"> 3494</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a160651cc2a5247b99c9ebe38511cc475">model</a>,</div>
<div class="line"><a id="l03495" name="l03495"></a><span class="lineno"> 3495</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a81f6da3ced18e060c27a3bc3ac4387c3">modelLength</a>);</div>
<div class="line"><a id="l03496" name="l03496"></a><span class="lineno"> 3496</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a81f6da3ced18e060c27a3bc3ac4387c3">modelLength</a>;</div>
<div class="line"><a id="l03497" name="l03497"></a><span class="lineno"> 3497</span> }</div>
<div class="line"><a id="l03498" name="l03498"></a><span class="lineno"> 3498</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#aca3e85fe2b6b8dd49afde691e5cf1ee8">revisionLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03499" name="l03499"></a><span class="lineno"> 3499</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a05cc1da940a0009621038a0327719a91">revision</a> != NULL)</div>
<div class="line"><a id="l03500" name="l03500"></a><span class="lineno"> 3500</span> {</div>
<div class="line"><a id="l03501" name="l03501"></a><span class="lineno"> 3501</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a05cc1da940a0009621038a0327719a91">revision</a>,</div>
<div class="line"><a id="l03502" name="l03502"></a><span class="lineno"> 3502</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#aca3e85fe2b6b8dd49afde691e5cf1ee8">revisionLength</a>);</div>
<div class="line"><a id="l03503" name="l03503"></a><span class="lineno"> 3503</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#aca3e85fe2b6b8dd49afde691e5cf1ee8">revisionLength</a>;</div>
<div class="line"><a id="l03504" name="l03504"></a><span class="lineno"> 3504</span> }</div>
<div class="line"><a id="l03505" name="l03505"></a><span class="lineno"> 3505</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a52948ae4f0d07e4d861e79def4a0deec">firmwareLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03506" name="l03506"></a><span class="lineno"> 3506</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a04e71aaa515a5a88171f5730e371abbf">firmware</a> != NULL)</div>
<div class="line"><a id="l03507" name="l03507"></a><span class="lineno"> 3507</span> {</div>
<div class="line"><a id="l03508" name="l03508"></a><span class="lineno"> 3508</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a04e71aaa515a5a88171f5730e371abbf">firmware</a>,</div>
<div class="line"><a id="l03509" name="l03509"></a><span class="lineno"> 3509</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a52948ae4f0d07e4d861e79def4a0deec">firmwareLength</a>);</div>
<div class="line"><a id="l03510" name="l03510"></a><span class="lineno"> 3510</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a52948ae4f0d07e4d861e79def4a0deec">firmwareLength</a>;</div>
<div class="line"><a id="l03511" name="l03511"></a><span class="lineno"> 3511</span> }</div>
<div class="line"><a id="l03512" name="l03512"></a><span class="lineno"> 3512</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#ab363d118785e94df2acc0c8dc1a9d1b5">serialLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03513" name="l03513"></a><span class="lineno"> 3513</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a6d328a63bbde6fc49d5a507a22801107">serial</a> != NULL)</div>
<div class="line"><a id="l03514" name="l03514"></a><span class="lineno"> 3514</span> {</div>
<div class="line"><a id="l03515" name="l03515"></a><span class="lineno"> 3515</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a6d328a63bbde6fc49d5a507a22801107">serial</a>,</div>
<div class="line"><a id="l03516" name="l03516"></a><span class="lineno"> 3516</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#ab363d118785e94df2acc0c8dc1a9d1b5">serialLength</a>);</div>
<div class="line"><a id="l03517" name="l03517"></a><span class="lineno"> 3517</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#ab363d118785e94df2acc0c8dc1a9d1b5">serialLength</a>;</div>
<div class="line"><a id="l03518" name="l03518"></a><span class="lineno"> 3518</span> }</div>
<div class="line"><a id="l03519" name="l03519"></a><span class="lineno"> 3519</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a20025e2e89599dd60a83ca623fc9a200">softwareNameLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03520" name="l03520"></a><span class="lineno"> 3520</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a31b56a2fa1f210aaa023eb031572e70b">softwareName</a> != NULL)</div>
<div class="line"><a id="l03521" name="l03521"></a><span class="lineno"> 3521</span> {</div>
<div class="line"><a id="l03522" name="l03522"></a><span class="lineno"> 3522</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a31b56a2fa1f210aaa023eb031572e70b">softwareName</a>,</div>
<div class="line"><a id="l03523" name="l03523"></a><span class="lineno"> 3523</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a20025e2e89599dd60a83ca623fc9a200">softwareNameLength</a>);</div>
<div class="line"><a id="l03524" name="l03524"></a><span class="lineno"> 3524</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a20025e2e89599dd60a83ca623fc9a200">softwareNameLength</a>;</div>
<div class="line"><a id="l03525" name="l03525"></a><span class="lineno"> 3525</span> }</div>
<div class="line"><a id="l03526" name="l03526"></a><span class="lineno"> 3526</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a4b4d1afcec5c3a0ec0e5f61fc481171d">softwareVersionLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03527" name="l03527"></a><span class="lineno"> 3527</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a5766ab6474f43fac96fb0342136766cc">softwareVersion</a> != NULL)</div>
<div class="line"><a id="l03528" name="l03528"></a><span class="lineno"> 3528</span> {</div>
<div class="line"><a id="l03529" name="l03529"></a><span class="lineno"> 3529</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a5766ab6474f43fac96fb0342136766cc">softwareVersion</a>,</div>
<div class="line"><a id="l03530" name="l03530"></a><span class="lineno"> 3530</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a4b4d1afcec5c3a0ec0e5f61fc481171d">softwareVersionLength</a>);</div>
<div class="line"><a id="l03531" name="l03531"></a><span class="lineno"> 3531</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a4b4d1afcec5c3a0ec0e5f61fc481171d">softwareVersionLength</a>;</div>
<div class="line"><a id="l03532" name="l03532"></a><span class="lineno"> 3532</span> }</div>
<div class="line"><a id="l03533" name="l03533"></a><span class="lineno"> 3533</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#adea9ba6d578c27ee86524e7ff91dcbdd">softwareOperatingSystemLength</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03534" name="l03534"></a><span class="lineno"> 3534</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#acfd385853ac00bbdbd5ef603aebfb44d">softwareOperatingSystem</a> != NULL)</div>
<div class="line"><a id="l03535" name="l03535"></a><span class="lineno"> 3535</span> {</div>
<div class="line"><a id="l03536" name="l03536"></a><span class="lineno"> 3536</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#acfd385853ac00bbdbd5ef603aebfb44d">softwareOperatingSystem</a>,</div>
<div class="line"><a id="l03537" name="l03537"></a><span class="lineno"> 3537</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#adea9ba6d578c27ee86524e7ff91dcbdd">softwareOperatingSystemLength</a>);</div>
<div class="line"><a id="l03538" name="l03538"></a><span class="lineno"> 3538</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#adea9ba6d578c27ee86524e7ff91dcbdd">softwareOperatingSystemLength</a>;</div>
<div class="line"><a id="l03539" name="l03539"></a><span class="lineno"> 3539</span> }</div>
<div class="line"><a id="l03540" name="l03540"></a><span class="lineno"> 3540</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a558ff77451f13188e00f5b8da4c595ad">extents</a> &gt; 0 &amp;&amp;</div>
<div class="line"><a id="l03541" name="l03541"></a><span class="lineno"> 3541</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">extents</a> != NULL)</div>
<div class="line"><a id="l03542" name="l03542"></a><span class="lineno"> 3542</span> {</div>
<div class="line"><a id="l03543" name="l03543"></a><span class="lineno"> 3543</span> memcpy(buffer + offset, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">extents</a>,</div>
<div class="line"><a id="l03544" name="l03544"></a><span class="lineno"> 3544</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a558ff77451f13188e00f5b8da4c595ad">extents</a> * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>));</div>
<div class="line"><a id="l03545" name="l03545"></a><span class="lineno"> 3545</span> offset += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">entry</a>.<a class="code hl_variable" href="structDumpHardwareEntry.html#a558ff77451f13188e00f5b8da4c595ad">extents</a> * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpExtent.html">DumpExtent</a>);</div>
<div class="line"><a id="l03546" name="l03546"></a><span class="lineno"> 3546</span> }</div>
<div class="line"><a id="l03547" name="l03547"></a><span class="lineno"> 3547</span> }</div>
<div class="line"><a id="l03548" name="l03548"></a><span class="lineno"> 3548</span> </div>
<div class="line"><a id="l03549" name="l03549"></a><span class="lineno"> 3549</span> <span class="comment">// Calculate CRC64</span></div>
<div class="line"><a id="l03550" name="l03550"></a><span class="lineno"> 3550</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#a0dbdec7b89e7081706cd07dfa00403a7">crc64</a> =</div>
<div class="line"><a id="l03551" name="l03551"></a><span class="lineno"> 3551</span> <a class="code hl_function" href="decls_8h.html#a0fee4834bf0747bcd933c4e754aa4692">aaruf_crc64_data</a>(buffer + <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareHeader.html">DumpHardwareHeader</a>), ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#acc565625096da115c80e7e390e78a1fa">length</a>);</div>
<div class="line"><a id="l03552" name="l03552"></a><span class="lineno"> 3552</span> </div>
<div class="line"><a id="l03553" name="l03553"></a><span class="lineno"> 3553</span> <span class="comment">// Copy header</span></div>
<div class="line"><a id="l03554" name="l03554"></a><span class="lineno"> 3554</span> memcpy(buffer, &amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structDumpHardwareHeader.html">DumpHardwareHeader</a>));</div>
<div class="line"><a id="l03555" name="l03555"></a><span class="lineno"> 3555</span> </div>
<div class="line"><a id="l03556" name="l03556"></a><span class="lineno"> 3556</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l03557" name="l03557"></a><span class="lineno"> 3557</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l03558" name="l03558"></a><span class="lineno"> 3558</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l03559" name="l03559"></a><span class="lineno"> 3559</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l03560" name="l03560"></a><span class="lineno"> 3560</span> {</div>
<div class="line"><a id="l03561" name="l03561"></a><span class="lineno"> 3561</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l03562" name="l03562"></a><span class="lineno"> 3562</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l03563" name="l03563"></a><span class="lineno"> 3563</span> block_position = aligned_position;</div>
<div class="line"><a id="l03564" name="l03564"></a><span class="lineno"> 3564</span> }</div>
<div class="line"><a id="l03565" name="l03565"></a><span class="lineno"> 3565</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing dump hardware block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l03566" name="l03566"></a><span class="lineno"> 3566</span> <span class="keywordflow">if</span>(fwrite(buffer, required_length, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03567" name="l03567"></a><span class="lineno"> 3567</span> {</div>
<div class="line"><a id="l03568" name="l03568"></a><span class="lineno"> 3568</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote dump hardware block&quot;</span>);</div>
<div class="line"><a id="l03569" name="l03569"></a><span class="lineno"> 3569</span> </div>
<div class="line"><a id="l03570" name="l03570"></a><span class="lineno"> 3570</span> <span class="comment">// Add dump hardware block to index</span></div>
<div class="line"><a id="l03571" name="l03571"></a><span class="lineno"> 3571</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding dump hardware block to index&quot;</span>);</div>
<div class="line"><a id="l03572" name="l03572"></a><span class="lineno"> 3572</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> index_entry;</div>
<div class="line"><a id="l03573" name="l03573"></a><span class="lineno"> 3573</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ad33812deb344562478c4e0d208a114db">DumpHardwareBlock</a>;</div>
<div class="line"><a id="l03574" name="l03574"></a><span class="lineno"> 3574</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l03575" name="l03575"></a><span class="lineno"> 3575</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l03576" name="l03576"></a><span class="lineno"> 3576</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;index_entry);</div>
<div class="line"><a id="l03577" name="l03577"></a><span class="lineno"> 3577</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added dump hardware block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l03578" name="l03578"></a><span class="lineno"> 3578</span> }</div>
<div class="line"><a id="l03579" name="l03579"></a><span class="lineno"> 3579</span> </div>
<div class="line"><a id="l03580" name="l03580"></a><span class="lineno"> 3580</span> free(buffer);</div>
<div class="line"><a id="l03581" name="l03581"></a><span class="lineno"> 3581</span>}</div>
</div>
<div class="line"><a id="l03582" name="l03582"></a><span class="lineno"> 3582</span></div>
<div class="foldopen" id="foldopen03677" data-start="{" data-end="}">
<div class="line"><a id="l03677" name="l03677"></a><span class="lineno"><a class="line" href="close_8c.html#aa868077fc938ed2cdee85832a40ef821"> 3677</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#aa868077fc938ed2cdee85832a40ef821">write_cicm_block</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l03678" name="l03678"></a><span class="lineno"> 3678</span>{</div>
<div class="line"><a id="l03679" name="l03679"></a><span class="lineno"> 3679</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a154fda29a2c9292cfca51ca6b54eee4a">cicm_block</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a73005ba88069ba590ffc9660dc2bc7a5">cicm_block_header</a>.<a class="code hl_variable" href="structCicmMetadataBlock.html#a660c22d42c504d290f386f187707956f">length</a> == 0 || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a73005ba88069ba590ffc9660dc2bc7a5">cicm_block_header</a>.<a class="code hl_variable" href="structCicmMetadataBlock.html#aee270357b6dc394ed9ac5f22c9903c90">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aa90947995922dcd8b27c998978aba359">CicmBlock</a>)</div>
<div class="line"><a id="l03680" name="l03680"></a><span class="lineno"> 3680</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03681" name="l03681"></a><span class="lineno"> 3681</span> </div>
<div class="line"><a id="l03682" name="l03682"></a><span class="lineno"> 3682</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l03683" name="l03683"></a><span class="lineno"> 3683</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l03684" name="l03684"></a><span class="lineno"> 3684</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l03685" name="l03685"></a><span class="lineno"> 3685</span> </div>
<div class="line"><a id="l03686" name="l03686"></a><span class="lineno"> 3686</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l03687" name="l03687"></a><span class="lineno"> 3687</span> {</div>
<div class="line"><a id="l03688" name="l03688"></a><span class="lineno"> 3688</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l03689" name="l03689"></a><span class="lineno"> 3689</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l03690" name="l03690"></a><span class="lineno"> 3690</span> block_position = aligned_position;</div>
<div class="line"><a id="l03691" name="l03691"></a><span class="lineno"> 3691</span> }</div>
<div class="line"><a id="l03692" name="l03692"></a><span class="lineno"> 3692</span> </div>
<div class="line"><a id="l03693" name="l03693"></a><span class="lineno"> 3693</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing CICM XML block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l03694" name="l03694"></a><span class="lineno"> 3694</span> <span class="keywordflow">if</span>(fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a73005ba88069ba590ffc9660dc2bc7a5">cicm_block_header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structCicmMetadataBlock.html">CicmMetadataBlock</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03695" name="l03695"></a><span class="lineno"> 3695</span> <span class="keywordflow">if</span>(fwrite(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a154fda29a2c9292cfca51ca6b54eee4a">cicm_block</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a73005ba88069ba590ffc9660dc2bc7a5">cicm_block_header</a>.<a class="code hl_variable" href="structCicmMetadataBlock.html#a660c22d42c504d290f386f187707956f">length</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03696" name="l03696"></a><span class="lineno"> 3696</span> {</div>
<div class="line"><a id="l03697" name="l03697"></a><span class="lineno"> 3697</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote CICM XML block&quot;</span>);</div>
<div class="line"><a id="l03698" name="l03698"></a><span class="lineno"> 3698</span> </div>
<div class="line"><a id="l03699" name="l03699"></a><span class="lineno"> 3699</span> <span class="comment">// Add CICM block to index</span></div>
<div class="line"><a id="l03700" name="l03700"></a><span class="lineno"> 3700</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding CICM XML block to index&quot;</span>);</div>
<div class="line"><a id="l03701" name="l03701"></a><span class="lineno"> 3701</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> index_entry;</div>
<div class="line"><a id="l03702" name="l03702"></a><span class="lineno"> 3702</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aa90947995922dcd8b27c998978aba359">CicmBlock</a>;</div>
<div class="line"><a id="l03703" name="l03703"></a><span class="lineno"> 3703</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l03704" name="l03704"></a><span class="lineno"> 3704</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l03705" name="l03705"></a><span class="lineno"> 3705</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;index_entry);</div>
<div class="line"><a id="l03706" name="l03706"></a><span class="lineno"> 3706</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added CICM XML block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l03707" name="l03707"></a><span class="lineno"> 3707</span> }</div>
<div class="line"><a id="l03708" name="l03708"></a><span class="lineno"> 3708</span>}</div>
</div>
<div class="line"><a id="l03709" name="l03709"></a><span class="lineno"> 3709</span></div>
<div class="foldopen" id="foldopen03814" data-start="{" data-end="}">
<div class="line"><a id="l03814" name="l03814"></a><span class="lineno"><a class="line" href="close_8c.html#adbc2790344fae0327f55d751b79dd800"> 3814</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="close_8c.html#adbc2790344fae0327f55d751b79dd800">write_aaru_json_block</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l03815" name="l03815"></a><span class="lineno"> 3815</span>{</div>
<div class="line"><a id="l03816" name="l03816"></a><span class="lineno"> 3816</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9e7ebc6897142938452338bc5a882dd8">json_block</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaa66c73269576f55c8946c741e02e34f">json_block_header</a>.<a class="code hl_variable" href="structAaruMetadataJsonBlockHeader.html#aa9e35df2ccc7294a24187fff4bb559a9">length</a> == 0 ||</div>
<div class="line"><a id="l03817" name="l03817"></a><span class="lineno"> 3817</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaa66c73269576f55c8946c741e02e34f">json_block_header</a>.<a class="code hl_variable" href="structAaruMetadataJsonBlockHeader.html#a5e3db5d08dc09206cad6ea1b88b2db7d">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a8ac77889f0c345ed861ed653a3063032">AaruMetadataJsonBlock</a>)</div>
<div class="line"><a id="l03818" name="l03818"></a><span class="lineno"> 3818</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l03819" name="l03819"></a><span class="lineno"> 3819</span> </div>
<div class="line"><a id="l03820" name="l03820"></a><span class="lineno"> 3820</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l03821" name="l03821"></a><span class="lineno"> 3821</span> <span class="keywordtype">long</span> block_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l03822" name="l03822"></a><span class="lineno"> 3822</span> <span class="keyword">const</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l03823" name="l03823"></a><span class="lineno"> 3823</span> </div>
<div class="line"><a id="l03824" name="l03824"></a><span class="lineno"> 3824</span> <span class="keywordflow">if</span>(block_position &amp; alignment_mask)</div>
<div class="line"><a id="l03825" name="l03825"></a><span class="lineno"> 3825</span> {</div>
<div class="line"><a id="l03826" name="l03826"></a><span class="lineno"> 3826</span> <span class="keyword">const</span> uint64_t aligned_position = block_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l03827" name="l03827"></a><span class="lineno"> 3827</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l03828" name="l03828"></a><span class="lineno"> 3828</span> block_position = aligned_position;</div>
<div class="line"><a id="l03829" name="l03829"></a><span class="lineno"> 3829</span> }</div>
<div class="line"><a id="l03830" name="l03830"></a><span class="lineno"> 3830</span> </div>
<div class="line"><a id="l03831" name="l03831"></a><span class="lineno"> 3831</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing Aaru metadata JSON block at position %ld&quot;</span>, block_position);</div>
<div class="line"><a id="l03832" name="l03832"></a><span class="lineno"> 3832</span> <span class="keywordflow">if</span>(fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaa66c73269576f55c8946c741e02e34f">json_block_header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structAaruMetadataJsonBlockHeader.html">AaruMetadataJsonBlockHeader</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03833" name="l03833"></a><span class="lineno"> 3833</span> <span class="keywordflow">if</span>(fwrite(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9e7ebc6897142938452338bc5a882dd8">json_block</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaa66c73269576f55c8946c741e02e34f">json_block_header</a>.<a class="code hl_variable" href="structAaruMetadataJsonBlockHeader.html#aa9e35df2ccc7294a24187fff4bb559a9">length</a>, 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03834" name="l03834"></a><span class="lineno"> 3834</span> {</div>
<div class="line"><a id="l03835" name="l03835"></a><span class="lineno"> 3835</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote Aaru metadata JSON block&quot;</span>);</div>
<div class="line"><a id="l03836" name="l03836"></a><span class="lineno"> 3836</span> </div>
<div class="line"><a id="l03837" name="l03837"></a><span class="lineno"> 3837</span> <span class="comment">// Add Aaru metadata JSON block to index</span></div>
<div class="line"><a id="l03838" name="l03838"></a><span class="lineno"> 3838</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding Aaru metadata JSON block to index&quot;</span>);</div>
<div class="line"><a id="l03839" name="l03839"></a><span class="lineno"> 3839</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> index_entry;</div>
<div class="line"><a id="l03840" name="l03840"></a><span class="lineno"> 3840</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a8ac77889f0c345ed861ed653a3063032">AaruMetadataJsonBlock</a>;</div>
<div class="line"><a id="l03841" name="l03841"></a><span class="lineno"> 3841</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a> = 0;</div>
<div class="line"><a id="l03842" name="l03842"></a><span class="lineno"> 3842</span> index_entry.<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a> = block_position;</div>
<div class="line"><a id="l03843" name="l03843"></a><span class="lineno"> 3843</span> utarray_push_back(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, &amp;index_entry);</div>
<div class="line"><a id="l03844" name="l03844"></a><span class="lineno"> 3844</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Added Aaru metadata JSON block index entry at offset %&quot;</span> PRIu64, block_position);</div>
<div class="line"><a id="l03845" name="l03845"></a><span class="lineno"> 3845</span> }</div>
<div class="line"><a id="l03846" name="l03846"></a><span class="lineno"> 3846</span>}</div>
</div>
<div class="line"><a id="l03847" name="l03847"></a><span class="lineno"> 3847</span></div>
<div class="foldopen" id="foldopen03864" data-start="{" data-end="}">
<div class="line"><a id="l03864" name="l03864"></a><span class="lineno"><a class="line" href="close_8c.html#a3532372fac3d5bb2619900820a26632e"> 3864</a></span><span class="keyword">static</span> int32_t <a class="code hl_function" href="close_8c.html#a3532372fac3d5bb2619900820a26632e">write_index_block</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx)</div>
<div class="line"><a id="l03865" name="l03865"></a><span class="lineno"> 3865</span>{</div>
<div class="line"><a id="l03866" name="l03866"></a><span class="lineno"> 3866</span> <span class="comment">// Write the complete index at the end of the file</span></div>
<div class="line"><a id="l03867" name="l03867"></a><span class="lineno"> 3867</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing index at the end of the file&quot;</span>);</div>
<div class="line"><a id="l03868" name="l03868"></a><span class="lineno"> 3868</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_END);</div>
<div class="line"><a id="l03869" name="l03869"></a><span class="lineno"> 3869</span> <span class="keywordtype">long</span> index_position = ftell(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l03870" name="l03870"></a><span class="lineno"> 3870</span> </div>
<div class="line"><a id="l03871" name="l03871"></a><span class="lineno"> 3871</span> <span class="comment">// Align index position to block boundary if needed</span></div>
<div class="line"><a id="l03872" name="l03872"></a><span class="lineno"> 3872</span> uint64_t alignment_mask = (1ULL &lt;&lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">blockAlignmentShift</a>) - 1;</div>
<div class="line"><a id="l03873" name="l03873"></a><span class="lineno"> 3873</span> <span class="keywordflow">if</span>(index_position &amp; alignment_mask)</div>
<div class="line"><a id="l03874" name="l03874"></a><span class="lineno"> 3874</span> {</div>
<div class="line"><a id="l03875" name="l03875"></a><span class="lineno"> 3875</span> uint64_t aligned_position = index_position + alignment_mask &amp; ~alignment_mask;</div>
<div class="line"><a id="l03876" name="l03876"></a><span class="lineno"> 3876</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, aligned_position, SEEK_SET);</div>
<div class="line"><a id="l03877" name="l03877"></a><span class="lineno"> 3877</span> index_position = aligned_position;</div>
<div class="line"><a id="l03878" name="l03878"></a><span class="lineno"> 3878</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Aligned index position to %&quot;</span> PRIu64, aligned_position);</div>
<div class="line"><a id="l03879" name="l03879"></a><span class="lineno"> 3879</span> }</div>
<div class="line"><a id="l03880" name="l03880"></a><span class="lineno"> 3880</span> </div>
<div class="line"><a id="l03881" name="l03881"></a><span class="lineno"> 3881</span> <span class="comment">// Prepare index header</span></div>
<div class="line"><a id="l03882" name="l03882"></a><span class="lineno"> 3882</span> <a class="code hl_struct" href="structIndexHeader3.html">IndexHeader3</a> index_header;</div>
<div class="line"><a id="l03883" name="l03883"></a><span class="lineno"> 3883</span> index_header.<a class="code hl_variable" href="structIndexHeader3.html#a482f94fd93019dd2879d984bc8eecf67">identifier</a> = <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a318acaf230a8ad091ef405caf7e4f411">IndexBlock3</a>;</div>
<div class="line"><a id="l03884" name="l03884"></a><span class="lineno"> 3884</span> index_header.<a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a> = utarray_len(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>);</div>
<div class="line"><a id="l03885" name="l03885"></a><span class="lineno"> 3885</span> index_header.<a class="code hl_variable" href="structIndexHeader3.html#a33743c206cb10cc1d8ff2c7f9e61ddcf">previous</a> = 0; <span class="comment">// No previous index for now</span></div>
<div class="line"><a id="l03886" name="l03886"></a><span class="lineno"> 3886</span> </div>
<div class="line"><a id="l03887" name="l03887"></a><span class="lineno"> 3887</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing index with %&quot;</span> PRIu64 <span class="stringliteral">&quot; entries at position %ld&quot;</span>, index_header.<a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a>, index_position);</div>
<div class="line"><a id="l03888" name="l03888"></a><span class="lineno"> 3888</span> </div>
<div class="line"><a id="l03889" name="l03889"></a><span class="lineno"> 3889</span> <span class="comment">// Calculate CRC64 of index entries</span></div>
<div class="line"><a id="l03890" name="l03890"></a><span class="lineno"> 3890</span> <a class="code hl_struct" href="structcrc64__ctx.html">crc64_ctx</a> *index_crc64_context = <a class="code hl_function" href="decls_8h.html#a66567ca64e31a687d4982cb254b45196">aaruf_crc64_init</a>();</div>
<div class="line"><a id="l03891" name="l03891"></a><span class="lineno"> 3891</span> <span class="keywordflow">if</span>(index_crc64_context != NULL &amp;&amp; index_header.<a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a> &gt; 0)</div>
<div class="line"><a id="l03892" name="l03892"></a><span class="lineno"> 3892</span> {</div>
<div class="line"><a id="l03893" name="l03893"></a><span class="lineno"> 3893</span> <span class="keywordtype">size_t</span> index_data_size = index_header.<a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a> * <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a>);</div>
<div class="line"><a id="l03894" name="l03894"></a><span class="lineno"> 3894</span> <a class="code hl_function" href="decls_8h.html#a1fb4423a841ccd728e3ad0d028cbc9b4">aaruf_crc64_update</a>(index_crc64_context, utarray_front(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>), index_data_size);</div>
<div class="line"><a id="l03895" name="l03895"></a><span class="lineno"> 3895</span> <a class="code hl_function" href="decls_8h.html#ae48cfb59c6585e9ffd4cd1a97044891f">aaruf_crc64_final</a>(index_crc64_context, &amp;index_header.<a class="code hl_variable" href="structIndexHeader3.html#a7291ac63956c468bf48aa17d24d3f7b2">crc64</a>);</div>
<div class="line"><a id="l03896" name="l03896"></a><span class="lineno"> 3896</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Calculated index CRC64: 0x%16lX&quot;</span>, index_header.<a class="code hl_variable" href="structIndexHeader3.html#a7291ac63956c468bf48aa17d24d3f7b2">crc64</a>);</div>
<div class="line"><a id="l03897" name="l03897"></a><span class="lineno"> 3897</span> }</div>
<div class="line"><a id="l03898" name="l03898"></a><span class="lineno"> 3898</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l03899" name="l03899"></a><span class="lineno"> 3899</span> index_header.<a class="code hl_variable" href="structIndexHeader3.html#a7291ac63956c468bf48aa17d24d3f7b2">crc64</a> = 0;</div>
<div class="line"><a id="l03900" name="l03900"></a><span class="lineno"> 3900</span> </div>
<div class="line"><a id="l03901" name="l03901"></a><span class="lineno"> 3901</span> <span class="comment">// Write index header</span></div>
<div class="line"><a id="l03902" name="l03902"></a><span class="lineno"> 3902</span> <span class="keywordflow">if</span>(fwrite(&amp;index_header, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structIndexHeader3.html">IndexHeader3</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03903" name="l03903"></a><span class="lineno"> 3903</span> {</div>
<div class="line"><a id="l03904" name="l03904"></a><span class="lineno"> 3904</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote index header&quot;</span>);</div>
<div class="line"><a id="l03905" name="l03905"></a><span class="lineno"> 3905</span> </div>
<div class="line"><a id="l03906" name="l03906"></a><span class="lineno"> 3906</span> <span class="comment">// Write index entries</span></div>
<div class="line"><a id="l03907" name="l03907"></a><span class="lineno"> 3907</span> <span class="keywordflow">if</span>(index_header.<a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a> &gt; 0)</div>
<div class="line"><a id="l03908" name="l03908"></a><span class="lineno"> 3908</span> {</div>
<div class="line"><a id="l03909" name="l03909"></a><span class="lineno"> 3909</span> <span class="keywordtype">size_t</span> entries_written = 0;</div>
<div class="line"><a id="l03910" name="l03910"></a><span class="lineno"> 3910</span> <a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> *entry = NULL;</div>
<div class="line"><a id="l03911" name="l03911"></a><span class="lineno"> 3911</span> </div>
<div class="line"><a id="l03912" name="l03912"></a><span class="lineno"> 3912</span> <span class="keywordflow">for</span>(entry = (<a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> *)utarray_front(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>); entry != NULL;</div>
<div class="line"><a id="l03913" name="l03913"></a><span class="lineno"> 3913</span> entry = (<a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a> *)utarray_next(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>, entry))</div>
<div class="line"><a id="l03914" name="l03914"></a><span class="lineno"> 3914</span> <span class="keywordflow">if</span>(fwrite(entry, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structIndexEntry.html">IndexEntry</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03915" name="l03915"></a><span class="lineno"> 3915</span> {</div>
<div class="line"><a id="l03916" name="l03916"></a><span class="lineno"> 3916</span> entries_written++;</div>
<div class="line"><a id="l03917" name="l03917"></a><span class="lineno"> 3917</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Wrote index entry: blockType=0x%08X dataType=%u offset=%&quot;</span> PRIu64, entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a4b5c7115ac83019c3f77c6f047e5f75e">blockType</a>,</div>
<div class="line"><a id="l03918" name="l03918"></a><span class="lineno"> 3918</span> entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">dataType</a>, entry-&gt;<a class="code hl_variable" href="structIndexEntry.html#a854951a64192d7e4cdcfa6dd6fd2b3ea">offset</a>);</div>
<div class="line"><a id="l03919" name="l03919"></a><span class="lineno"> 3919</span> }</div>
<div class="line"><a id="l03920" name="l03920"></a><span class="lineno"> 3920</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l03921" name="l03921"></a><span class="lineno"> 3921</span> {</div>
<div class="line"><a id="l03922" name="l03922"></a><span class="lineno"> 3922</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write index entry %zu&quot;</span>, entries_written);</div>
<div class="line"><a id="l03923" name="l03923"></a><span class="lineno"> 3923</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l03924" name="l03924"></a><span class="lineno"> 3924</span> }</div>
<div class="line"><a id="l03925" name="l03925"></a><span class="lineno"> 3925</span> </div>
<div class="line"><a id="l03926" name="l03926"></a><span class="lineno"> 3926</span> <span class="keywordflow">if</span>(entries_written == index_header.<a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a>)</div>
<div class="line"><a id="l03927" name="l03927"></a><span class="lineno"> 3927</span> {</div>
<div class="line"><a id="l03928" name="l03928"></a><span class="lineno"> 3928</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully wrote all %zu index entries&quot;</span>, entries_written);</div>
<div class="line"><a id="l03929" name="l03929"></a><span class="lineno"> 3929</span> </div>
<div class="line"><a id="l03930" name="l03930"></a><span class="lineno"> 3930</span> <span class="comment">// Update header with index offset and rewrite it</span></div>
<div class="line"><a id="l03931" name="l03931"></a><span class="lineno"> 3931</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a4ec4b1d593f5a0af19f6d7b8eaeada40">indexOffset</a> = index_position;</div>
<div class="line"><a id="l03932" name="l03932"></a><span class="lineno"> 3932</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Updating header with index offset: %&quot;</span> PRIu64, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a4ec4b1d593f5a0af19f6d7b8eaeada40">indexOffset</a>);</div>
<div class="line"><a id="l03933" name="l03933"></a><span class="lineno"> 3933</span> </div>
<div class="line"><a id="l03934" name="l03934"></a><span class="lineno"> 3934</span> <span class="comment">// Seek back to beginning and rewrite header</span></div>
<div class="line"><a id="l03935" name="l03935"></a><span class="lineno"> 3935</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_SET);</div>
<div class="line"><a id="l03936" name="l03936"></a><span class="lineno"> 3936</span> <span class="keywordflow">if</span>(fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structAaruHeaderV2.html">AaruHeaderV2</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) == 1)</div>
<div class="line"><a id="l03937" name="l03937"></a><span class="lineno"> 3937</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Successfully updated header with index offset&quot;</span>);</div>
<div class="line"><a id="l03938" name="l03938"></a><span class="lineno"> 3938</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l03939" name="l03939"></a><span class="lineno"> 3939</span> {</div>
<div class="line"><a id="l03940" name="l03940"></a><span class="lineno"> 3940</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to update header with index offset&quot;</span>);</div>
<div class="line"><a id="l03941" name="l03941"></a><span class="lineno"> 3941</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a>;</div>
<div class="line"><a id="l03942" name="l03942"></a><span class="lineno"> 3942</span> }</div>
<div class="line"><a id="l03943" name="l03943"></a><span class="lineno"> 3943</span> }</div>
<div class="line"><a id="l03944" name="l03944"></a><span class="lineno"> 3944</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l03945" name="l03945"></a><span class="lineno"> 3945</span> {</div>
<div class="line"><a id="l03946" name="l03946"></a><span class="lineno"> 3946</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write all index entries (wrote %zu of %&quot;</span> PRIu64 <span class="stringliteral">&quot;)&quot;</span>, entries_written,</div>
<div class="line"><a id="l03947" name="l03947"></a><span class="lineno"> 3947</span> index_header.<a class="code hl_variable" href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">entries</a>);</div>
<div class="line"><a id="l03948" name="l03948"></a><span class="lineno"> 3948</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a>;</div>
<div class="line"><a id="l03949" name="l03949"></a><span class="lineno"> 3949</span> }</div>
<div class="line"><a id="l03950" name="l03950"></a><span class="lineno"> 3950</span> }</div>
<div class="line"><a id="l03951" name="l03951"></a><span class="lineno"> 3951</span> }</div>
<div class="line"><a id="l03952" name="l03952"></a><span class="lineno"> 3952</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l03953" name="l03953"></a><span class="lineno"> 3953</span> {</div>
<div class="line"><a id="l03954" name="l03954"></a><span class="lineno"> 3954</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Failed to write index header&quot;</span>);</div>
<div class="line"><a id="l03955" name="l03955"></a><span class="lineno"> 3955</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a>;</div>
<div class="line"><a id="l03956" name="l03956"></a><span class="lineno"> 3956</span> }</div>
<div class="line"><a id="l03957" name="l03957"></a><span class="lineno"> 3957</span> </div>
<div class="line"><a id="l03958" name="l03958"></a><span class="lineno"> 3958</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="l03959" name="l03959"></a><span class="lineno"> 3959</span>}</div>
</div>
<div class="line"><a id="l03960" name="l03960"></a><span class="lineno"> 3960</span></div>
<div class="foldopen" id="foldopen03997" data-start="{" data-end="}">
<div class="line"><a id="l03997" name="l03997"></a><span class="lineno"><a class="line" href="decls_8h.html#a6823e139f81a9dfd08efcb0e9b213a49"> 3997</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> <span class="keywordtype">int</span> <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="close_8c.html#a6823e139f81a9dfd08efcb0e9b213a49">aaruf_close</a>(<span class="keywordtype">void</span> *context)</div>
<div class="line"><a id="l03998" name="l03998"></a><span class="lineno"> 3998</span>{</div>
<div class="line"><a id="l03999" name="l03999"></a><span class="lineno"> 3999</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_close(%p)&quot;</span>, context);</div>
<div class="line"><a id="l04000" name="l04000"></a><span class="lineno"> 4000</span> </div>
<div class="line"><a id="l04001" name="l04001"></a><span class="lineno"> 4001</span> <a class="code hl_struct" href="structmediaTagEntry.html">mediaTagEntry</a> *media_tag = NULL;</div>
<div class="line"><a id="l04002" name="l04002"></a><span class="lineno"> 4002</span> <a class="code hl_struct" href="structmediaTagEntry.html">mediaTagEntry</a> *tmp_media_tag = NULL;</div>
<div class="line"><a id="l04003" name="l04003"></a><span class="lineno"> 4003</span> </div>
<div class="line"><a id="l04004" name="l04004"></a><span class="lineno"> 4004</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l04005" name="l04005"></a><span class="lineno"> 4005</span> {</div>
<div class="line"><a id="l04006" name="l04006"></a><span class="lineno"> 4006</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="l04007" name="l04007"></a><span class="lineno"> 4007</span> errno = EINVAL;</div>
<div class="line"><a id="l04008" name="l04008"></a><span class="lineno"> 4008</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l04009" name="l04009"></a><span class="lineno"> 4009</span> }</div>
<div class="line"><a id="l04010" name="l04010"></a><span class="lineno"> 4010</span> </div>
<div class="line"><a id="l04011" name="l04011"></a><span class="lineno"> 4011</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = context;</div>
<div class="line"><a id="l04012" name="l04012"></a><span class="lineno"> 4012</span> </div>
<div class="line"><a id="l04013" name="l04013"></a><span class="lineno"> 4013</span> <span class="comment">// Not a libaaruformat context</span></div>
<div class="line"><a id="l04014" name="l04014"></a><span class="lineno"> 4014</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="l04015" name="l04015"></a><span class="lineno"> 4015</span> {</div>
<div class="line"><a id="l04016" name="l04016"></a><span class="lineno"> 4016</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="l04017" name="l04017"></a><span class="lineno"> 4017</span> errno = EINVAL;</div>
<div class="line"><a id="l04018" name="l04018"></a><span class="lineno"> 4018</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l04019" name="l04019"></a><span class="lineno"> 4019</span> }</div>
<div class="line"><a id="l04020" name="l04020"></a><span class="lineno"> 4020</span> </div>
<div class="line"><a id="l04021" name="l04021"></a><span class="lineno"> 4021</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="l04022" name="l04022"></a><span class="lineno"> 4022</span> {</div>
<div class="line"><a id="l04023" name="l04023"></a><span class="lineno"> 4023</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;File is writing&quot;</span>);</div>
<div class="line"><a id="l04024" name="l04024"></a><span class="lineno"> 4024</span> </div>
<div class="line"><a id="l04025" name="l04025"></a><span class="lineno"> 4025</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Seeking to start of image&quot;</span>);</div>
<div class="line"><a id="l04026" name="l04026"></a><span class="lineno"> 4026</span> <span class="comment">// Write the header at the beginning of the file</span></div>
<div class="line"><a id="l04027" name="l04027"></a><span class="lineno"> 4027</span> fseek(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, 0, SEEK_SET);</div>
<div class="line"><a id="l04028" name="l04028"></a><span class="lineno"> 4028</span> </div>
<div class="line"><a id="l04029" name="l04029"></a><span class="lineno"> 4029</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Writing header at position 0&quot;</span>);</div>
<div class="line"><a id="l04030" name="l04030"></a><span class="lineno"> 4030</span> <span class="keywordflow">if</span>(fwrite(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structAaruHeaderV2.html">AaruHeaderV2</a>), 1, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>) != 1)</div>
<div class="line"><a id="l04031" name="l04031"></a><span class="lineno"> 4031</span> {</div>
<div class="line"><a id="l04032" name="l04032"></a><span class="lineno"> 4032</span> fclose(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l04033" name="l04033"></a><span class="lineno"> 4033</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a> = NULL;</div>
<div class="line"><a id="l04034" name="l04034"></a><span class="lineno"> 4034</span> errno = <a class="code hl_define" href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a>;</div>
<div class="line"><a id="l04035" name="l04035"></a><span class="lineno"> 4035</span> <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l04036" name="l04036"></a><span class="lineno"> 4036</span> }</div>
<div class="line"><a id="l04037" name="l04037"></a><span class="lineno"> 4037</span> </div>
<div class="line"><a id="l04038" name="l04038"></a><span class="lineno"> 4038</span> <span class="comment">// Close current block first</span></div>
<div class="line"><a id="l04039" name="l04039"></a><span class="lineno"> 4039</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Closing current block if any&quot;</span>);</div>
<div class="line"><a id="l04040" name="l04040"></a><span class="lineno"> 4040</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a80b7de958916f11cc61ef6871a376a92">writing_buffer</a> != NULL)</div>
<div class="line"><a id="l04041" name="l04041"></a><span class="lineno"> 4041</span> {</div>
<div class="line"><a id="l04042" name="l04042"></a><span class="lineno"> 4042</span> <span class="keywordtype">int</span> error = <a class="code hl_function" href="internal_8h.html#a2402812f5e04ba16765208c0b70fa6c5">aaruf_close_current_block</a>(ctx);</div>
<div class="line"><a id="l04043" name="l04043"></a><span class="lineno"> 4043</span> </div>
<div class="line"><a id="l04044" name="l04044"></a><span class="lineno"> 4044</span> <span class="keywordflow">if</span>(error != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>) <span class="keywordflow">return</span> error;</div>
<div class="line"><a id="l04045" name="l04045"></a><span class="lineno"> 4045</span> }</div>
<div class="line"><a id="l04046" name="l04046"></a><span class="lineno"> 4046</span> </div>
<div class="line"><a id="l04047" name="l04047"></a><span class="lineno"> 4047</span> int32_t res;</div>
<div class="line"><a id="l04048" name="l04048"></a><span class="lineno"> 4048</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4d514102386b48bd51ac82c27bf9920a">is_tape</a>)</div>
<div class="line"><a id="l04049" name="l04049"></a><span class="lineno"> 4049</span> {</div>
<div class="line"><a id="l04050" name="l04050"></a><span class="lineno"> 4050</span> <span class="comment">// Write tape DDT</span></div>
<div class="line"><a id="l04051" name="l04051"></a><span class="lineno"> 4051</span> res = <a class="code hl_function" href="close_8c.html#aed9f90614002b887ae9f3ef2333de16a">write_tape_ddt</a>(ctx);</div>
<div class="line"><a id="l04052" name="l04052"></a><span class="lineno"> 4052</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>) <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l04053" name="l04053"></a><span class="lineno"> 4053</span> }</div>
<div class="line"><a id="l04054" name="l04054"></a><span class="lineno"> 4054</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l04055" name="l04055"></a><span class="lineno"> 4055</span> {</div>
<div class="line"><a id="l04056" name="l04056"></a><span class="lineno"> 4056</span> <span class="comment">// Write cached secondary DDT table if any</span></div>
<div class="line"><a id="l04057" name="l04057"></a><span class="lineno"> 4057</span> res = <a class="code hl_function" href="close_8c.html#af0f89d22c6e2bdca261223bbdda7654c">write_cached_secondary_ddt</a>(ctx);</div>
<div class="line"><a id="l04058" name="l04058"></a><span class="lineno"> 4058</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>) <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l04059" name="l04059"></a><span class="lineno"> 4059</span> </div>
<div class="line"><a id="l04060" name="l04060"></a><span class="lineno"> 4060</span> <span class="comment">// Write primary DDT table (multi-level) if applicable</span></div>
<div class="line"><a id="l04061" name="l04061"></a><span class="lineno"> 4061</span> res = <a class="code hl_function" href="close_8c.html#a1bb181171eb9d0b0016cf4091ed831d7">write_primary_ddt</a>(ctx);</div>
<div class="line"><a id="l04062" name="l04062"></a><span class="lineno"> 4062</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>) <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l04063" name="l04063"></a><span class="lineno"> 4063</span> </div>
<div class="line"><a id="l04064" name="l04064"></a><span class="lineno"> 4064</span> <span class="comment">// Write single-level DDT table if applicable</span></div>
<div class="line"><a id="l04065" name="l04065"></a><span class="lineno"> 4065</span> res = <a class="code hl_function" href="close_8c.html#a7314de0d71768709fa4ba2db7f89cdb9">write_single_level_ddt</a>(ctx);</div>
<div class="line"><a id="l04066" name="l04066"></a><span class="lineno"> 4066</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>) <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l04067" name="l04067"></a><span class="lineno"> 4067</span> }</div>
<div class="line"><a id="l04068" name="l04068"></a><span class="lineno"> 4068</span> </div>
<div class="line"><a id="l04069" name="l04069"></a><span class="lineno"> 4069</span> <span class="comment">// Finalize checksums and write checksum block</span></div>
<div class="line"><a id="l04070" name="l04070"></a><span class="lineno"> 4070</span> <a class="code hl_function" href="close_8c.html#a84f08d3fe750b46dad183b12bb3927c5">write_checksum_block</a>(ctx);</div>
<div class="line"><a id="l04071" name="l04071"></a><span class="lineno"> 4071</span> </div>
<div class="line"><a id="l04072" name="l04072"></a><span class="lineno"> 4072</span> <span class="comment">// Write tracks block</span></div>
<div class="line"><a id="l04073" name="l04073"></a><span class="lineno"> 4073</span> <a class="code hl_function" href="close_8c.html#aa2451e6c0fc8d4db3bfb9874f2ca990c">write_tracks_block</a>(ctx);</div>
<div class="line"><a id="l04074" name="l04074"></a><span class="lineno"> 4074</span> </div>
<div class="line"><a id="l04075" name="l04075"></a><span class="lineno"> 4075</span> <span class="comment">// Write MODE 2 subheader data block</span></div>
<div class="line"><a id="l04076" name="l04076"></a><span class="lineno"> 4076</span> <a class="code hl_function" href="close_8c.html#ade7f81cbae198dbbea937551bf670a4f">write_mode2_subheaders_block</a>(ctx);</div>
<div class="line"><a id="l04077" name="l04077"></a><span class="lineno"> 4077</span> </div>
<div class="line"><a id="l04078" name="l04078"></a><span class="lineno"> 4078</span> <span class="comment">// Write CD sector prefix data block</span></div>
<div class="line"><a id="l04079" name="l04079"></a><span class="lineno"> 4079</span> <a class="code hl_function" href="close_8c.html#af383051987456d1295862e395027ffa8">write_sector_prefix</a>(ctx);</div>
<div class="line"><a id="l04080" name="l04080"></a><span class="lineno"> 4080</span> </div>
<div class="line"><a id="l04081" name="l04081"></a><span class="lineno"> 4081</span> <span class="comment">// Write sector prefix DDT (statuses + optional indexes)</span></div>
<div class="line"><a id="l04082" name="l04082"></a><span class="lineno"> 4082</span> <a class="code hl_function" href="close_8c.html#ae5ee36ba745233583773cd7a644c8aa7">write_sector_prefix_ddt</a>(ctx);</div>
<div class="line"><a id="l04083" name="l04083"></a><span class="lineno"> 4083</span> </div>
<div class="line"><a id="l04084" name="l04084"></a><span class="lineno"> 4084</span> <span class="comment">// Write CD sector suffix data block (EDC/ECC captures)</span></div>
<div class="line"><a id="l04085" name="l04085"></a><span class="lineno"> 4085</span> <a class="code hl_function" href="close_8c.html#a8ea54bc4597be4246f2be361a5854251">write_sector_suffix</a>(ctx);</div>
<div class="line"><a id="l04086" name="l04086"></a><span class="lineno"> 4086</span> </div>
<div class="line"><a id="l04087" name="l04087"></a><span class="lineno"> 4087</span> <span class="comment">// Write sector prefix DDT (EDC/ECC captures)</span></div>
<div class="line"><a id="l04088" name="l04088"></a><span class="lineno"> 4088</span> <a class="code hl_function" href="close_8c.html#a9d0eb026d1fa544b554493e780b7fbc1">write_sector_suffix_ddt</a>(ctx);</div>
<div class="line"><a id="l04089" name="l04089"></a><span class="lineno"> 4089</span> </div>
<div class="line"><a id="l04090" name="l04090"></a><span class="lineno"> 4090</span> <span class="comment">// Write sector subchannel data block</span></div>
<div class="line"><a id="l04091" name="l04091"></a><span class="lineno"> 4091</span> <a class="code hl_function" href="close_8c.html#ae0a4b670cbb5359edd44751e1b76ca9c">write_sector_subchannel</a>(ctx);</div>
<div class="line"><a id="l04092" name="l04092"></a><span class="lineno"> 4092</span> </div>
<div class="line"><a id="l04093" name="l04093"></a><span class="lineno"> 4093</span> <span class="comment">// Write DVD long sector data blocks</span></div>
<div class="line"><a id="l04094" name="l04094"></a><span class="lineno"> 4094</span> <a class="code hl_function" href="close_8c.html#a13f6c475294969c1eb8c59ff53c91af9">write_dvd_long_sector_blocks</a>(ctx);</div>
<div class="line"><a id="l04095" name="l04095"></a><span class="lineno"> 4095</span> </div>
<div class="line"><a id="l04096" name="l04096"></a><span class="lineno"> 4096</span> <span class="comment">// Write DVD decrypted title keys</span></div>
<div class="line"><a id="l04097" name="l04097"></a><span class="lineno"> 4097</span> <a class="code hl_function" href="close_8c.html#af9269816dfd495bc6927e9463422df91">write_dvd_title_key_decrypted_block</a>(ctx);</div>
<div class="line"><a id="l04098" name="l04098"></a><span class="lineno"> 4098</span> </div>
<div class="line"><a id="l04099" name="l04099"></a><span class="lineno"> 4099</span> <span class="comment">// Write media tags data blocks</span></div>
<div class="line"><a id="l04100" name="l04100"></a><span class="lineno"> 4100</span> <a class="code hl_function" href="close_8c.html#a458e1630d31726b91a54b514f34a9b37">write_media_tags</a>(ctx);</div>
<div class="line"><a id="l04101" name="l04101"></a><span class="lineno"> 4101</span> </div>
<div class="line"><a id="l04102" name="l04102"></a><span class="lineno"> 4102</span> <span class="comment">// Write tape files</span></div>
<div class="line"><a id="l04103" name="l04103"></a><span class="lineno"> 4103</span> <a class="code hl_function" href="close_8c.html#afffa52af1d2da0e17edf3add326e36d9">write_tape_file_block</a>(ctx);</div>
<div class="line"><a id="l04104" name="l04104"></a><span class="lineno"> 4104</span> </div>
<div class="line"><a id="l04105" name="l04105"></a><span class="lineno"> 4105</span> <span class="comment">// Write tape partitions</span></div>
<div class="line"><a id="l04106" name="l04106"></a><span class="lineno"> 4106</span> <a class="code hl_function" href="close_8c.html#a82707f569a505107ab77c9c86502cf79">write_tape_partition_block</a>(ctx);</div>
<div class="line"><a id="l04107" name="l04107"></a><span class="lineno"> 4107</span> </div>
<div class="line"><a id="l04108" name="l04108"></a><span class="lineno"> 4108</span> <span class="comment">// Write geometry block if any</span></div>
<div class="line"><a id="l04109" name="l04109"></a><span class="lineno"> 4109</span> <a class="code hl_function" href="close_8c.html#a5e24a87e4dd5eb0cb9225be3e25c7ef3">write_geometry_block</a>(ctx);</div>
<div class="line"><a id="l04110" name="l04110"></a><span class="lineno"> 4110</span> </div>
<div class="line"><a id="l04111" name="l04111"></a><span class="lineno"> 4111</span> <span class="comment">// Write metadata block</span></div>
<div class="line"><a id="l04112" name="l04112"></a><span class="lineno"> 4112</span> <a class="code hl_function" href="close_8c.html#af36ba67be5e488713558202feef0eeef">write_metadata_block</a>(ctx);</div>
<div class="line"><a id="l04113" name="l04113"></a><span class="lineno"> 4113</span> </div>
<div class="line"><a id="l04114" name="l04114"></a><span class="lineno"> 4114</span> <span class="comment">// Write dump hardware block if any</span></div>
<div class="line"><a id="l04115" name="l04115"></a><span class="lineno"> 4115</span> <a class="code hl_function" href="close_8c.html#a796034966c1e918152e652635431dc39">write_dumphw_block</a>(ctx);</div>
<div class="line"><a id="l04116" name="l04116"></a><span class="lineno"> 4116</span> </div>
<div class="line"><a id="l04117" name="l04117"></a><span class="lineno"> 4117</span> <span class="comment">// Write CICM XML block if any</span></div>
<div class="line"><a id="l04118" name="l04118"></a><span class="lineno"> 4118</span> <a class="code hl_function" href="close_8c.html#aa868077fc938ed2cdee85832a40ef821">write_cicm_block</a>(ctx);</div>
<div class="line"><a id="l04119" name="l04119"></a><span class="lineno"> 4119</span> </div>
<div class="line"><a id="l04120" name="l04120"></a><span class="lineno"> 4120</span> <span class="comment">// Write Aaru metadata JSON block if any</span></div>
<div class="line"><a id="l04121" name="l04121"></a><span class="lineno"> 4121</span> <a class="code hl_function" href="close_8c.html#adbc2790344fae0327f55d751b79dd800">write_aaru_json_block</a>(ctx);</div>
<div class="line"><a id="l04122" name="l04122"></a><span class="lineno"> 4122</span> </div>
<div class="line"><a id="l04123" name="l04123"></a><span class="lineno"> 4123</span> <span class="comment">// Write the complete index at the end of the file</span></div>
<div class="line"><a id="l04124" name="l04124"></a><span class="lineno"> 4124</span> res = <a class="code hl_function" href="close_8c.html#a3532372fac3d5bb2619900820a26632e">write_index_block</a>(ctx);</div>
<div class="line"><a id="l04125" name="l04125"></a><span class="lineno"> 4125</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>) <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l04126" name="l04126"></a><span class="lineno"> 4126</span> </div>
<div class="line"><a id="l04127" name="l04127"></a><span class="lineno"> 4127</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a0d4e1977913ce67e85bced41c58e5dd2">deduplicate</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a18bee1dd72fd1ca4957ff6ddfebce343">sector_hash_map</a> != NULL)</div>
<div class="line"><a id="l04128" name="l04128"></a><span class="lineno"> 4128</span> {</div>
<div class="line"><a id="l04129" name="l04129"></a><span class="lineno"> 4129</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Clearing sector hash map&quot;</span>);</div>
<div class="line"><a id="l04130" name="l04130"></a><span class="lineno"> 4130</span> <span class="comment">// Clear sector hash map</span></div>
<div class="line"><a id="l04131" name="l04131"></a><span class="lineno"> 4131</span> <a class="code hl_function" href="hash__map_8h.html#ab885e8c5bedaf6f3cca1877e378fd04f">free_map</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a18bee1dd72fd1ca4957ff6ddfebce343">sector_hash_map</a>);</div>
<div class="line"><a id="l04132" name="l04132"></a><span class="lineno"> 4132</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a18bee1dd72fd1ca4957ff6ddfebce343">sector_hash_map</a> = NULL;</div>
<div class="line"><a id="l04133" name="l04133"></a><span class="lineno"> 4133</span> }</div>
<div class="line"><a id="l04134" name="l04134"></a><span class="lineno"> 4134</span> }</div>
<div class="line"><a id="l04135" name="l04135"></a><span class="lineno"> 4135</span> </div>
<div class="line"><a id="l04136" name="l04136"></a><span class="lineno"> 4136</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Freeing memory pointers&quot;</span>);</div>
<div class="line"><a id="l04137" name="l04137"></a><span class="lineno"> 4137</span> <span class="comment">// This may do nothing if imageStream is NULL, but as the behaviour is undefined, better sure than sorry</span></div>
<div class="line"><a id="l04138" name="l04138"></a><span class="lineno"> 4138</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="l04139" name="l04139"></a><span class="lineno"> 4139</span> {</div>
<div class="line"><a id="l04140" name="l04140"></a><span class="lineno"> 4140</span> fclose(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l04141" name="l04141"></a><span class="lineno"> 4141</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a> = NULL;</div>
<div class="line"><a id="l04142" name="l04142"></a><span class="lineno"> 4142</span> }</div>
<div class="line"><a id="l04143" name="l04143"></a><span class="lineno"> 4143</span> </div>
<div class="line"><a id="l04144" name="l04144"></a><span class="lineno"> 4144</span> <span class="comment">// Free index entries array</span></div>
<div class="line"><a id="l04145" name="l04145"></a><span class="lineno"> 4145</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="l04146" name="l04146"></a><span class="lineno"> 4146</span> {</div>
<div class="line"><a id="l04147" name="l04147"></a><span class="lineno"> 4147</span> utarray_free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a>);</div>
<div class="line"><a id="l04148" name="l04148"></a><span class="lineno"> 4148</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab97a719a5b4186695b67143db7376152">index_entries</a> = NULL;</div>
<div class="line"><a id="l04149" name="l04149"></a><span class="lineno"> 4149</span> }</div>
<div class="line"><a id="l04150" name="l04150"></a><span class="lineno"> 4150</span> </div>
<div class="line"><a id="l04151" name="l04151"></a><span class="lineno"> 4151</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a>);</div>
<div class="line"><a id="l04152" name="l04152"></a><span class="lineno"> 4152</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> = NULL;</div>
<div class="line"><a id="l04153" name="l04153"></a><span class="lineno"> 4153</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d021776e9101370c7e6ed00c8049be1">sector_prefix_corrected</a>);</div>
<div class="line"><a id="l04154" name="l04154"></a><span class="lineno"> 4154</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d021776e9101370c7e6ed00c8049be1">sector_prefix_corrected</a> = NULL;</div>
<div class="line"><a id="l04155" name="l04155"></a><span class="lineno"> 4155</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a>);</div>
<div class="line"><a id="l04156" name="l04156"></a><span class="lineno"> 4156</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> = NULL;</div>
<div class="line"><a id="l04157" name="l04157"></a><span class="lineno"> 4157</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adfcfa339aded095de2143ffff0931288">sector_suffix_corrected</a>);</div>
<div class="line"><a id="l04158" name="l04158"></a><span class="lineno"> 4158</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adfcfa339aded095de2143ffff0931288">sector_suffix_corrected</a> = NULL;</div>
<div class="line"><a id="l04159" name="l04159"></a><span class="lineno"> 4159</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a>);</div>
<div class="line"><a id="l04160" name="l04160"></a><span class="lineno"> 4160</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> = NULL;</div>
<div class="line"><a id="l04161" name="l04161"></a><span class="lineno"> 4161</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a>);</div>
<div class="line"><a id="l04162" name="l04162"></a><span class="lineno"> 4162</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> = NULL;</div>
<div class="line"><a id="l04163" name="l04163"></a><span class="lineno"> 4163</span> </div>
<div class="line"><a id="l04164" name="l04164"></a><span class="lineno"> 4164</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Freeing media tags&quot;</span>);</div>
<div class="line"><a id="l04165" name="l04165"></a><span class="lineno"> 4165</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">mediaTags</a> != NULL) HASH_ITER(hh, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">mediaTags</a>, media_tag, tmp_media_tag)</div>
<div class="line"><a id="l04166" name="l04166"></a><span class="lineno"> 4166</span> {</div>
<div class="line"><a id="l04167" name="l04167"></a><span class="lineno"> 4167</span> HASH_DEL(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">mediaTags</a>, media_tag);</div>
<div class="line"><a id="l04168" name="l04168"></a><span class="lineno"> 4168</span> free(media_tag-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">data</a>);</div>
<div class="line"><a id="l04169" name="l04169"></a><span class="lineno"> 4169</span> free(media_tag);</div>
<div class="line"><a id="l04170" name="l04170"></a><span class="lineno"> 4170</span> }</div>
<div class="line"><a id="l04171" name="l04171"></a><span class="lineno"> 4171</span> </div>
<div class="line"><a id="l04172" name="l04172"></a><span class="lineno"> 4172</span><span class="preprocessor">#ifdef __linux__ </span><span class="comment">// TODO: Implement</span></div>
<div class="line"><a id="l04173" name="l04173"></a><span class="lineno"> 4173</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Unmapping user data DDT if it is not in memory&quot;</span>);</div>
<div class="line"><a id="l04174" name="l04174"></a><span class="lineno"> 4174</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a62885cab6ef674fd27b4de32ab4ee346">in_memory_ddt</a>)</div>
<div class="line"><a id="l04175" name="l04175"></a><span class="lineno"> 4175</span> {</div>
<div class="line"><a id="l04176" name="l04176"></a><span class="lineno"> 4176</span> munmap(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d5ad658b9219c4b3838fcb042742e4e">user_data_ddt</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#afc6cf8ab181536febd804d18702d4d80">mapped_memory_ddt_size</a>);</div>
<div class="line"><a id="l04177" name="l04177"></a><span class="lineno"> 4177</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d5ad658b9219c4b3838fcb042742e4e">user_data_ddt</a> = NULL;</div>
<div class="line"><a id="l04178" name="l04178"></a><span class="lineno"> 4178</span> }</div>
<div class="line"><a id="l04179" name="l04179"></a><span class="lineno"> 4179</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l04180" name="l04180"></a><span class="lineno"> 4180</span> </div>
<div class="line"><a id="l04181" name="l04181"></a><span class="lineno"> 4181</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a>);</div>
<div class="line"><a id="l04182" name="l04182"></a><span class="lineno"> 4182</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a> = NULL;</div>
<div class="line"><a id="l04183" name="l04183"></a><span class="lineno"> 4183</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a>);</div>
<div class="line"><a id="l04184" name="l04184"></a><span class="lineno"> 4184</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a> = NULL;</div>
<div class="line"><a id="l04185" name="l04185"></a><span class="lineno"> 4185</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a>);</div>
<div class="line"><a id="l04186" name="l04186"></a><span class="lineno"> 4186</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a> = NULL;</div>
<div class="line"><a id="l04187" name="l04187"></a><span class="lineno"> 4187</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>);</div>
<div class="line"><a id="l04188" name="l04188"></a><span class="lineno"> 4188</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a> = NULL;</div>
<div class="line"><a id="l04189" name="l04189"></a><span class="lineno"> 4189</span> </div>
<div class="line"><a id="l04190" name="l04190"></a><span class="lineno"> 4190</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae0df8ced37e331df99560d9773d7bad8">metadata_block</a>);</div>
<div class="line"><a id="l04191" name="l04191"></a><span class="lineno"> 4191</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae0df8ced37e331df99560d9773d7bad8">metadata_block</a> = NULL;</div>
<div class="line"><a id="l04192" name="l04192"></a><span class="lineno"> 4192</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a>);</div>
<div class="line"><a id="l04193" name="l04193"></a><span class="lineno"> 4193</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a> = NULL;</div>
<div class="line"><a id="l04194" name="l04194"></a><span class="lineno"> 4194</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a154fda29a2c9292cfca51ca6b54eee4a">cicm_block</a>);</div>
<div class="line"><a id="l04195" name="l04195"></a><span class="lineno"> 4195</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a154fda29a2c9292cfca51ca6b54eee4a">cicm_block</a> = NULL;</div>
<div class="line"><a id="l04196" name="l04196"></a><span class="lineno"> 4196</span> </div>
<div class="line"><a id="l04197" name="l04197"></a><span class="lineno"> 4197</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a> != NULL)</div>
<div class="line"><a id="l04198" name="l04198"></a><span class="lineno"> 4198</span> {</div>
<div class="line"><a id="l04199" name="l04199"></a><span class="lineno"> 4199</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">dump_hardware_header</a>.<a class="code hl_variable" href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">entries</a>; i++)</div>
<div class="line"><a id="l04200" name="l04200"></a><span class="lineno"> 4200</span> {</div>
<div class="line"><a id="l04201" name="l04201"></a><span class="lineno"> 4201</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">extents</a>);</div>
<div class="line"><a id="l04202" name="l04202"></a><span class="lineno"> 4202</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">extents</a> = NULL;</div>
<div class="line"><a id="l04203" name="l04203"></a><span class="lineno"> 4203</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a4dbc57a5f46892c5e0cde65c55c11e33">manufacturer</a>);</div>
<div class="line"><a id="l04204" name="l04204"></a><span class="lineno"> 4204</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a4dbc57a5f46892c5e0cde65c55c11e33">manufacturer</a> = NULL;</div>
<div class="line"><a id="l04205" name="l04205"></a><span class="lineno"> 4205</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a160651cc2a5247b99c9ebe38511cc475">model</a>);</div>
<div class="line"><a id="l04206" name="l04206"></a><span class="lineno"> 4206</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a160651cc2a5247b99c9ebe38511cc475">model</a> = NULL;</div>
<div class="line"><a id="l04207" name="l04207"></a><span class="lineno"> 4207</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a05cc1da940a0009621038a0327719a91">revision</a>);</div>
<div class="line"><a id="l04208" name="l04208"></a><span class="lineno"> 4208</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a05cc1da940a0009621038a0327719a91">revision</a> = NULL;</div>
<div class="line"><a id="l04209" name="l04209"></a><span class="lineno"> 4209</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a04e71aaa515a5a88171f5730e371abbf">firmware</a>);</div>
<div class="line"><a id="l04210" name="l04210"></a><span class="lineno"> 4210</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a04e71aaa515a5a88171f5730e371abbf">firmware</a> = NULL;</div>
<div class="line"><a id="l04211" name="l04211"></a><span class="lineno"> 4211</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a6d328a63bbde6fc49d5a507a22801107">serial</a>);</div>
<div class="line"><a id="l04212" name="l04212"></a><span class="lineno"> 4212</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a6d328a63bbde6fc49d5a507a22801107">serial</a> = NULL;</div>
<div class="line"><a id="l04213" name="l04213"></a><span class="lineno"> 4213</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a31b56a2fa1f210aaa023eb031572e70b">softwareName</a>);</div>
<div class="line"><a id="l04214" name="l04214"></a><span class="lineno"> 4214</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a31b56a2fa1f210aaa023eb031572e70b">softwareName</a> = NULL;</div>
<div class="line"><a id="l04215" name="l04215"></a><span class="lineno"> 4215</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a5766ab6474f43fac96fb0342136766cc">softwareVersion</a>);</div>
<div class="line"><a id="l04216" name="l04216"></a><span class="lineno"> 4216</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#a5766ab6474f43fac96fb0342136766cc">softwareVersion</a> = NULL;</div>
<div class="line"><a id="l04217" name="l04217"></a><span class="lineno"> 4217</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#acfd385853ac00bbdbd5ef603aebfb44d">softwareOperatingSystem</a>);</div>
<div class="line"><a id="l04218" name="l04218"></a><span class="lineno"> 4218</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a>[i].<a class="code hl_variable" href="structDumpHardwareEntriesWithData.html#acfd385853ac00bbdbd5ef603aebfb44d">softwareOperatingSystem</a> = NULL;</div>
<div class="line"><a id="l04219" name="l04219"></a><span class="lineno"> 4219</span> }</div>
<div class="line"><a id="l04220" name="l04220"></a><span class="lineno"> 4220</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">dump_hardware_entries_with_data</a> = NULL;</div>
<div class="line"><a id="l04221" name="l04221"></a><span class="lineno"> 4221</span> }</div>
<div class="line"><a id="l04222" name="l04222"></a><span class="lineno"> 4222</span> </div>
<div class="line"><a id="l04223" name="l04223"></a><span class="lineno"> 4223</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad3d5494e23b07418e9fbd22c3771e534">readableSectorTags</a>);</div>
<div class="line"><a id="l04224" name="l04224"></a><span class="lineno"> 4224</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad3d5494e23b07418e9fbd22c3771e534">readableSectorTags</a> = NULL;</div>
<div class="line"><a id="l04225" name="l04225"></a><span class="lineno"> 4225</span> </div>
<div class="line"><a id="l04226" name="l04226"></a><span class="lineno"> 4226</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a>);</div>
<div class="line"><a id="l04227" name="l04227"></a><span class="lineno"> 4227</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a> = NULL;</div>
<div class="line"><a id="l04228" name="l04228"></a><span class="lineno"> 4228</span> </div>
<div class="line"><a id="l04229" name="l04229"></a><span class="lineno"> 4229</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a1748cd355e21a7b0f4f730dd16bd9752">spamsum</a>);</div>
<div class="line"><a id="l04230" name="l04230"></a><span class="lineno"> 4230</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">checksums</a>.<a class="code hl_variable" href="structChecksums.html#a1748cd355e21a7b0f4f730dd16bd9752">spamsum</a> = NULL;</div>
<div class="line"><a id="l04231" name="l04231"></a><span class="lineno"> 4231</span> </div>
<div class="line"><a id="l04232" name="l04232"></a><span class="lineno"> 4232</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a>);</div>
<div class="line"><a id="l04233" name="l04233"></a><span class="lineno"> 4233</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a>);</div>
<div class="line"><a id="l04234" name="l04234"></a><span class="lineno"> 4234</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a>);</div>
<div class="line"><a id="l04235" name="l04235"></a><span class="lineno"> 4235</span> free(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a>);</div>
<div class="line"><a id="l04236" name="l04236"></a><span class="lineno"> 4236</span> </div>
<div class="line"><a id="l04237" name="l04237"></a><span class="lineno"> 4237</span> <span class="comment">// TODO: Free caches</span></div>
<div class="line"><a id="l04238" name="l04238"></a><span class="lineno"> 4238</span> </div>
<div class="line"><a id="l04239" name="l04239"></a><span class="lineno"> 4239</span> free(context);</div>
<div class="line"><a id="l04240" name="l04240"></a><span class="lineno"> 4240</span> </div>
<div class="line"><a id="l04241" name="l04241"></a><span class="lineno"> 4241</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_close() = 0&quot;</span>);</div>
<div class="line"><a id="l04242" name="l04242"></a><span class="lineno"> 4242</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l04243" name="l04243"></a><span class="lineno"> 4243</span>}</div>
</div>
<div class="ttc" id="aaaruformat_8h_html"><div class="ttname"><a href="aaruformat_8h.html">aaruformat.h</a></div></div>
<div class="ttc" id="aclose_8c_html_a13f6c475294969c1eb8c59ff53c91af9"><div class="ttname"><a href="close_8c.html#a13f6c475294969c1eb8c59ff53c91af9">write_dvd_long_sector_blocks</a></div><div class="ttdeci">void write_dvd_long_sector_blocks(aaruformat_context *ctx)</div><div class="ttdoc">Serialize DVD long sector auxiliary data blocks to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l01810">close.c:1810</a></div></div>
<div class="ttc" id="aclose_8c_html_a1bb181171eb9d0b0016cf4091ed831d7"><div class="ttname"><a href="close_8c.html#a1bb181171eb9d0b0016cf4091ed831d7">write_primary_ddt</a></div><div class="ttdeci">static int32_t write_primary_ddt(aaruformat_context *ctx)</div><div class="ttdoc">Write (flush) the multi-level primary DDT table header and data back to its file offset.</div><div class="ttdef"><b>Definition</b> <a href="#l00283">close.c:283</a></div></div>
<div class="ttc" id="aclose_8c_html_a3532372fac3d5bb2619900820a26632e"><div class="ttname"><a href="close_8c.html#a3532372fac3d5bb2619900820a26632e">write_index_block</a></div><div class="ttdeci">static int32_t write_index_block(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the accumulated index entries at the end of the image and back-patch the header.</div><div class="ttdef"><b>Definition</b> <a href="#l03864">close.c:3864</a></div></div>
<div class="ttc" id="aclose_8c_html_a458e1630d31726b91a54b514f34a9b37"><div class="ttname"><a href="close_8c.html#a458e1630d31726b91a54b514f34a9b37">write_media_tags</a></div><div class="ttdeci">static void write_media_tags(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize all accumulated media tags to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l02411">close.c:2411</a></div></div>
<div class="ttc" id="aclose_8c_html_a5e24a87e4dd5eb0cb9225be3e25c7ef3"><div class="ttname"><a href="close_8c.html#a5e24a87e4dd5eb0cb9225be3e25c7ef3">write_geometry_block</a></div><div class="ttdeci">static void write_geometry_block(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize the geometry metadata block to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l03028">close.c:3028</a></div></div>
<div class="ttc" id="aclose_8c_html_a6823e139f81a9dfd08efcb0e9b213a49"><div class="ttname"><a href="close_8c.html#a6823e139f81a9dfd08efcb0e9b213a49">aaruf_close</a></div><div class="ttdeci">int aaruf_close(void *context)</div><div class="ttdoc">Close an Aaru image context, flushing pending data structures and releasing resources.</div><div class="ttdef"><b>Definition</b> <a href="#l03997">close.c:3997</a></div></div>
<div class="ttc" id="aclose_8c_html_a7314de0d71768709fa4ba2db7f89cdb9"><div class="ttname"><a href="close_8c.html#a7314de0d71768709fa4ba2db7f89cdb9">write_single_level_ddt</a></div><div class="ttdeci">static int32_t write_single_level_ddt(aaruformat_context *ctx)</div><div class="ttdoc">Serialize a single-level DDT (tableShift == 0) directly after its header.</div><div class="ttdef"><b>Definition</b> <a href="#l00369">close.c:369</a></div></div>
<div class="ttc" id="aclose_8c_html_a796034966c1e918152e652635431dc39"><div class="ttname"><a href="close_8c.html#a796034966c1e918152e652635431dc39">write_dumphw_block</a></div><div class="ttdeci">static void write_dumphw_block(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the dump hardware block containing acquisition environment information.</div><div class="ttdef"><b>Definition</b> <a href="#l03447">close.c:3447</a></div></div>
<div class="ttc" id="aclose_8c_html_a82707f569a505107ab77c9c86502cf79"><div class="ttname"><a href="close_8c.html#a82707f569a505107ab77c9c86502cf79">write_tape_partition_block</a></div><div class="ttdeci">static void write_tape_partition_block(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize the tape partition metadata block to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l02903">close.c:2903</a></div></div>
<div class="ttc" id="aclose_8c_html_a84f08d3fe750b46dad183b12bb3927c5"><div class="ttname"><a href="close_8c.html#a84f08d3fe750b46dad183b12bb3927c5">write_checksum_block</a></div><div class="ttdeci">static void write_checksum_block(aaruformat_context *ctx)</div><div class="ttdoc">Finalize any active checksum calculations and append a checksum block.</div><div class="ttdef"><b>Definition</b> <a href="#l00654">close.c:654</a></div></div>
<div class="ttc" id="aclose_8c_html_a8ea54bc4597be4246f2be361a5854251"><div class="ttname"><a href="close_8c.html#a8ea54bc4597be4246f2be361a5854251">write_sector_suffix</a></div><div class="ttdeci">static void write_sector_suffix(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the optional CD sector suffix block (EDC/ECC region capture).</div><div class="ttdef"><b>Definition</b> <a href="#l01088">close.c:1088</a></div></div>
<div class="ttc" id="aclose_8c_html_a9d0eb026d1fa544b554493e780b7fbc1"><div class="ttname"><a href="close_8c.html#a9d0eb026d1fa544b554493e780b7fbc1">write_sector_suffix_ddt</a></div><div class="ttdeci">static void write_sector_suffix_ddt(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the per-sector CD suffix status / index DeDuplication Table (DDT v2, suffix variant).</div><div class="ttdef"><b>Definition</b> <a href="#l01350">close.c:1350</a></div></div>
<div class="ttc" id="aclose_8c_html_aa2451e6c0fc8d4db3bfb9874f2ca990c"><div class="ttname"><a href="close_8c.html#aa2451e6c0fc8d4db3bfb9874f2ca990c">write_tracks_block</a></div><div class="ttdeci">static void write_tracks_block(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the tracks metadata block and add it to the index.</div><div class="ttdef"><b>Definition</b> <a href="#l00798">close.c:798</a></div></div>
<div class="ttc" id="aclose_8c_html_aa868077fc938ed2cdee85832a40ef821"><div class="ttname"><a href="close_8c.html#aa868077fc938ed2cdee85832a40ef821">write_cicm_block</a></div><div class="ttdeci">static void write_cicm_block(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize the CICM XML metadata block to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l03677">close.c:3677</a></div></div>
<div class="ttc" id="aclose_8c_html_adbc2790344fae0327f55d751b79dd800"><div class="ttname"><a href="close_8c.html#adbc2790344fae0327f55d751b79dd800">write_aaru_json_block</a></div><div class="ttdeci">static void write_aaru_json_block(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize the Aaru metadata JSON block to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l03814">close.c:3814</a></div></div>
<div class="ttc" id="aclose_8c_html_ade7f81cbae198dbbea937551bf670a4f"><div class="ttname"><a href="close_8c.html#ade7f81cbae198dbbea937551bf670a4f">write_mode2_subheaders_block</a></div><div class="ttdeci">static void write_mode2_subheaders_block(aaruformat_context *ctx)</div><div class="ttdoc">Serialize a MODE 2 (XA) subheaders data block.</div><div class="ttdef"><b>Definition</b> <a href="#l00850">close.c:850</a></div></div>
<div class="ttc" id="aclose_8c_html_ae0a4b670cbb5359edd44751e1b76ca9c"><div class="ttname"><a href="close_8c.html#ae0a4b670cbb5359edd44751e1b76ca9c">write_sector_subchannel</a></div><div class="ttdeci">static void write_sector_subchannel(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize the per-sector subchannel or tag data block.</div><div class="ttdef"><b>Definition</b> <a href="#l01508">close.c:1508</a></div></div>
<div class="ttc" id="aclose_8c_html_ae5ee36ba745233583773cd7a644c8aa7"><div class="ttname"><a href="close_8c.html#ae5ee36ba745233583773cd7a644c8aa7">write_sector_prefix_ddt</a></div><div class="ttdeci">static void write_sector_prefix_ddt(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the per-sector CD prefix status / index DeDuplication Table (DDT v2, prefix variant).</div><div class="ttdef"><b>Definition</b> <a href="#l01206">close.c:1206</a></div></div>
<div class="ttc" id="aclose_8c_html_aed9f90614002b887ae9f3ef2333de16a"><div class="ttname"><a href="close_8c.html#aed9f90614002b887ae9f3ef2333de16a">write_tape_ddt</a></div><div class="ttdeci">static int32_t write_tape_ddt(aaruformat_context *ctx)</div><div class="ttdoc">Converts tape DDT hash table to array format and writes it as a single-level DDT.</div><div class="ttdef"><b>Definition</b> <a href="#l00596">close.c:596</a></div></div>
<div class="ttc" id="aclose_8c_html_af0f89d22c6e2bdca261223bbdda7654c"><div class="ttname"><a href="close_8c.html#af0f89d22c6e2bdca261223bbdda7654c">write_cached_secondary_ddt</a></div><div class="ttdeci">static int32_t write_cached_secondary_ddt(aaruformat_context *ctx)</div><div class="ttdoc">Flush a cached secondary (child) DeDuplication Table (DDT) to the image.</div><div class="ttdef"><b>Definition</b> <a href="#l00077">close.c:77</a></div></div>
<div class="ttc" id="aclose_8c_html_af36ba67be5e488713558202feef0eeef"><div class="ttname"><a href="close_8c.html#af36ba67be5e488713558202feef0eeef">write_metadata_block</a></div><div class="ttdeci">static void write_metadata_block(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the metadata block containing image and media descriptive information.</div><div class="ttdef"><b>Definition</b> <a href="#l03164">close.c:3164</a></div></div>
<div class="ttc" id="aclose_8c_html_af383051987456d1295862e395027ffa8"><div class="ttname"><a href="close_8c.html#af383051987456d1295862e395027ffa8">write_sector_prefix</a></div><div class="ttdeci">static void write_sector_prefix(aaruformat_context *ctx)</div><div class="ttdoc">Serialize the optional CD sector prefix block.</div><div class="ttdef"><b>Definition</b> <a href="#l00966">close.c:966</a></div></div>
<div class="ttc" id="aclose_8c_html_af9269816dfd495bc6927e9463422df91"><div class="ttname"><a href="close_8c.html#af9269816dfd495bc6927e9463422df91">write_dvd_title_key_decrypted_block</a></div><div class="ttdeci">static void write_dvd_title_key_decrypted_block(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize the DVD decrypted title key data block to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l02247">close.c:2247</a></div></div>
<div class="ttc" id="aclose_8c_html_afffa52af1d2da0e17edf3add326e36d9"><div class="ttname"><a href="close_8c.html#afffa52af1d2da0e17edf3add326e36d9">write_tape_file_block</a></div><div class="ttdeci">static void write_tape_file_block(const aaruformat_context *ctx)</div><div class="ttdoc">Serialize the tape file metadata block to the image file.</div><div class="ttdef"><b>Definition</b> <a href="#l02671">close.c:2671</a></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_a09a4f4b2f28cbe522d9b80153666029c"><div class="ttname"><a href="context_8h.html#a09a4f4b2f28cbe522d9b80153666029c">MD5_DIGEST_LENGTH</a></div><div class="ttdeci">#define MD5_DIGEST_LENGTH</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00069">context.h:69</a></div></div>
<div class="ttc" id="acontext_8h_html_a5ba965cb003bc2d68a9f9e1c11225494"><div class="ttname"><a href="context_8h.html#a5ba965cb003bc2d68a9f9e1c11225494">tapeFileHashEntry</a></div><div class="ttdeci">struct TapeFileHashEntry tapeFileHashEntry</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#l00045">decls.h:45</a></div></div>
<div class="ttc" id="adecls_8h_html_a0396232d1020b16b2cb4bf0b1aa2b021"><div class="ttname"><a href="decls_8h.html#a0396232d1020b16b2cb4bf0b1aa2b021">aaruf_sha1_final</a></div><div class="ttdeci">void aaruf_sha1_final(sha1_ctx *ctx, unsigned char *result)</div><div class="ttdef"><b>Definition</b> <a href="sha1_8c_source.html#l00124">sha1.c:124</a></div></div>
<div class="ttc" id="adecls_8h_html_a0b29337ce6fedc79bf7d1a84d92173d6"><div class="ttname"><a href="decls_8h.html#a0b29337ce6fedc79bf7d1a84d92173d6">aaruf_cst_transform</a></div><div class="ttdeci">int32_t aaruf_cst_transform(const uint8_t *interleaved, uint8_t *sequential, size_t length)</div><div class="ttdoc">Transforms interleaved subchannel data to sequential format.</div><div class="ttdef"><b>Definition</b> <a href="cst_8c_source.html#l00035">cst.c:35</a></div></div>
<div class="ttc" id="adecls_8h_html_a0e69fad529047d6fe9440b1fc66c3f85"><div class="ttname"><a href="decls_8h.html#a0e69fad529047d6fe9440b1fc66c3f85">aaruf_lzma_encode_buffer</a></div><div class="ttdeci">int32_t aaruf_lzma_encode_buffer(uint8_t *dst_buffer, size_t *dst_size, const uint8_t *src_buffer, size_t src_size, uint8_t *out_props, size_t *out_props_size, int32_t level, uint32_t dict_size, int32_t lc, int32_t lp, int32_t pb, int32_t fb, int32_t num_threads)</div><div class="ttdoc">Encodes a buffer using LZMA compression.</div><div class="ttdef"><b>Definition</b> <a href="lzma_8c_source.html#l00065">lzma.c:65</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_a1fb4423a841ccd728e3ad0d028cbc9b4"><div class="ttname"><a href="decls_8h.html#a1fb4423a841ccd728e3ad0d028cbc9b4">aaruf_crc64_update</a></div><div class="ttdeci">int aaruf_crc64_update(crc64_ctx *ctx, const uint8_t *data, uint32_t len)</div><div class="ttdoc">Updates the CRC64 context with new data.</div><div class="ttdef"><b>Definition</b> <a href="crc64_8c_source.html#l00055">crc64.c:55</a></div></div>
<div class="ttc" id="adecls_8h_html_a6456150dad701ca7f071940ef169c4cf"><div class="ttname"><a href="decls_8h.html#a6456150dad701ca7f071940ef169c4cf">aaruf_sha256_final</a></div><div class="ttdeci">void aaruf_sha256_final(sha256_ctx *ctx, unsigned char *result)</div><div class="ttdef"><b>Definition</b> <a href="sha256_8c_source.html#l00115">sha256.c:115</a></div></div>
<div class="ttc" id="adecls_8h_html_a66567ca64e31a687d4982cb254b45196"><div class="ttname"><a href="decls_8h.html#a66567ca64e31a687d4982cb254b45196">aaruf_crc64_init</a></div><div class="ttdeci">crc64_ctx * aaruf_crc64_init()</div><div class="ttdoc">Initializes a CRC64 context.</div><div class="ttdef"><b>Definition</b> <a href="crc64_8c_source.html#l00032">crc64.c:32</a></div></div>
<div class="ttc" id="adecls_8h_html_a6b98055d07ba51f0daef5b03ce2fe725"><div class="ttname"><a href="decls_8h.html#a6b98055d07ba51f0daef5b03ce2fe725">aaruf_md5_final</a></div><div class="ttdeci">void aaruf_md5_final(md5_ctx *ctx, unsigned char *result)</div><div class="ttdef"><b>Definition</b> <a href="md5_8c_source.html#l00485">md5.c:485</a></div></div>
<div class="ttc" id="adecls_8h_html_a6fe74704e44be7adfaa2ce676f3c3de4"><div class="ttname"><a href="decls_8h.html#a6fe74704e44be7adfaa2ce676f3c3de4">aaruf_spamsum_free</a></div><div class="ttdeci">void aaruf_spamsum_free(spamsum_ctx *ctx)</div><div class="ttdoc">Frees a spamsum (fuzzy hash) context.</div><div class="ttdef"><b>Definition</b> <a href="spamsum_8c_source.html#l00075">spamsum.c:75</a></div></div>
<div class="ttc" id="adecls_8h_html_a8d042b26980b56b5dd872f21fa33de70"><div class="ttname"><a href="decls_8h.html#a8d042b26980b56b5dd872f21fa33de70">aaruf_get_datatype_for_media_tag_type</a></div><div class="ttdeci">int32_t aaruf_get_datatype_for_media_tag_type(int32_t tag_type)</div><div class="ttdoc">Converts an Aaru media tag type to an image data type.</div><div class="ttdef"><b>Definition</b> <a href="helpers_8c_source.html#l00197">helpers.c:197</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#l00054">decls.h:54</a></div></div>
<div class="ttc" id="adecls_8h_html_ab1f4894af1962e933767248c4fb0e2e8"><div class="ttname"><a href="decls_8h.html#ab1f4894af1962e933767248c4fb0e2e8">aaruf_spamsum_final</a></div><div class="ttdeci">int aaruf_spamsum_final(spamsum_ctx *ctx, uint8_t *result)</div><div class="ttdef"><b>Definition</b> <a href="spamsum_8c_source.html#l00191">spamsum.c:191</a></div></div>
<div class="ttc" id="adecls_8h_html_ae48cfb59c6585e9ffd4cd1a97044891f"><div class="ttname"><a href="decls_8h.html#ae48cfb59c6585e9ffd4cd1a97044891f">aaruf_crc64_final</a></div><div class="ttdeci">int aaruf_crc64_final(crc64_ctx *ctx, uint64_t *crc)</div><div class="ttdoc">Computes the final CRC64 value from the context.</div><div class="ttdef"><b>Definition</b> <a href="crc64_8c_source.html#l00141">crc64.c:141</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a318acaf230a8ad091ef405caf7e4f411"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a318acaf230a8ad091ef405caf7e4f411">IndexBlock3</a></div><div class="ttdeci">@ IndexBlock3</div><div class="ttdoc">Block containing the index v3.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00147">enums.h:147</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a3e451c2577a6c790f33f99c2da189d46"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a3e451c2577a6c790f33f99c2da189d46">ChecksumBlock</a></div><div class="ttdeci">@ ChecksumBlock</div><div class="ttdoc">Block containing contents checksums.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00152">enums.h:152</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a></div><div class="ttdeci">@ DataBlock</div><div class="ttdoc">Block containing data.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00141">enums.h:141</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a60609bbcd07339a8bf589e66ef4a3041"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a60609bbcd07339a8bf589e66ef4a3041">TapePartitionBlock</a></div><div class="ttdeci">@ TapePartitionBlock</div><div class="ttdoc">Block containing list of partitions for a tape image.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00158">enums.h:158</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a76691ea3f772bf28e7446d171e205db2"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a76691ea3f772bf28e7446d171e205db2">GeometryBlock</a></div><div class="ttdeci">@ GeometryBlock</div><div class="ttdoc">Block containing logical geometry.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00148">enums.h:148</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a76b6a78e4e765794c4cca2dde5bfc3fb"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a76b6a78e4e765794c4cca2dde5bfc3fb">DeDuplicationTableSecondary</a></div><div class="ttdeci">@ DeDuplicationTableSecondary</div><div class="ttdoc">Block containing a secondary deduplication table (v2).</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00144">enums.h:144</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a8ac77889f0c345ed861ed653a3063032"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a8ac77889f0c345ed861ed653a3063032">AaruMetadataJsonBlock</a></div><div class="ttdeci">@ AaruMetadataJsonBlock</div><div class="ttdoc">Block containing JSON version of Aaru Metadata.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00159">enums.h:159</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3aa90947995922dcd8b27c998978aba359"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aa90947995922dcd8b27c998978aba359">CicmBlock</a></div><div class="ttdeci">@ CicmBlock</div><div class="ttdoc">Block containing CICM XML metadata.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00151">enums.h:151</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3aba4d0f50b26af1d0292daaa0d70feacf">DeDuplicationTable2</a></div><div class="ttdeci">@ DeDuplicationTable2</div><div class="ttdoc">Block containing a deduplication table v2.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00143">enums.h:143</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3ac3a117f2498bf736a76d5d3a3830540a"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ac3a117f2498bf736a76d5d3a3830540a">TapeFileBlock</a></div><div class="ttdeci">@ TapeFileBlock</div><div class="ttdoc">Block containing list of files for a tape image.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00157">enums.h:157</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3ad33812deb344562478c4e0d208a114db"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ad33812deb344562478c4e0d208a114db">DumpHardwareBlock</a></div><div class="ttdeci">@ DumpHardwareBlock</div><div class="ttdoc">Block containing an array of hardware used to create the image.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00156">enums.h:156</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3ad5a8c9e1ce6a2acd795dc1e7561addf8"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ad5a8c9e1ce6a2acd795dc1e7561addf8">MetadataBlock</a></div><div class="ttdeci">@ MetadataBlock</div><div class="ttdoc">Block containing metadata.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00149">enums.h:149</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3ae550bdf57660fcbf3500155c29d4637e"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3ae550bdf57660fcbf3500155c29d4637e">TracksBlock</a></div><div class="ttdeci">@ TracksBlock</div><div class="ttdoc">Block containing optical disc tracks.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00150">enums.h:150</a></div></div>
<div class="ttc" id="aenums_8h_html_abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12"><div class="ttname"><a href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a></div><div class="ttdeci">@ OpticalDisc</div><div class="ttdoc">Purely optical discs.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00218">enums.h:218</a></div></div>
<div class="ttc" id="aenums_8h_html_abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd"><div class="ttname"><a href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd">BlockMedia</a></div><div class="ttdeci">@ BlockMedia</div><div class="ttdoc">Media that is physically block-based or abstracted like that.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00219">enums.h:219</a></div></div>
<div class="ttc" id="aenums_8h_html_abda1f9cb04c30fc71ee8c6081d21ee0ea38ec9844caac88b80addcad50704f0fd"><div class="ttname"><a href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ea38ec9844caac88b80addcad50704f0fd">Blake3</a></div><div class="ttdeci">@ Blake3</div><div class="ttdoc">BLAKE3 hash.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00173">enums.h:173</a></div></div>
<div class="ttc" id="aenums_8h_html_abda1f9cb04c30fc71ee8c6081d21ee0ea57867fd2e139c87d4ae5faef0078a903"><div class="ttname"><a href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ea57867fd2e139c87d4ae5faef0078a903">Sha1</a></div><div class="ttdeci">@ Sha1</div><div class="ttdoc">SHA-1 hash.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00170">enums.h:170</a></div></div>
<div class="ttc" id="aenums_8h_html_abda1f9cb04c30fc71ee8c6081d21ee0ea6b71eaa2d57de3fc320990a29ce48d36"><div class="ttname"><a href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ea6b71eaa2d57de3fc320990a29ce48d36">Md5</a></div><div class="ttdeci">@ Md5</div><div class="ttdoc">MD5 hash.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00169">enums.h:169</a></div></div>
<div class="ttc" id="aenums_8h_html_abda1f9cb04c30fc71ee8c6081d21ee0eacce7cd78517eecf9be314e0d47e2788c"><div class="ttname"><a href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0eacce7cd78517eecf9be314e0d47e2788c">Sha256</a></div><div class="ttdeci">@ Sha256</div><div class="ttdoc">SHA-256 hash.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00171">enums.h:171</a></div></div>
<div class="ttc" id="aenums_8h_html_abda1f9cb04c30fc71ee8c6081d21ee0ead603a5fa54bfacf5bf36eca36c6b54cb"><div class="ttname"><a href="enums_8h.html#abda1f9cb04c30fc71ee8c6081d21ee0ead603a5fa54bfacf5bf36eca36c6b54cb">SpamSum</a></div><div class="ttdeci">@ SpamSum</div><div class="ttdoc">SpamSum (context-triggered piecewise hash).</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00172">enums.h:172</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a0e53a44004fde98a09614db19b16638e"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a0e53a44004fde98a09614db19b16638e">CdSectorSubchannel</a></div><div class="ttdeci">@ CdSectorSubchannel</div><div class="ttdoc">Compact Disc subchannel data.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00116">enums.h:116</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a17075a1bffaf0da39e0baacabc84a0fe"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a17075a1bffaf0da39e0baacabc84a0fe">AppleProfileTag</a></div><div class="ttdeci">@ AppleProfileTag</div><div class="ttdoc">Apple Profile (20byte) tag.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00117">enums.h:117</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a3340d65528decaa438460aaf53f2febe"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a3340d65528decaa438460aaf53f2febe">DvdSectorIed</a></div><div class="ttdeci">@ DvdSectorIed</div><div class="ttdoc">DVD ID Error Detection Code (IED)</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00129">enums.h:129</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a39dc93795ee5d8befec5ee5607cb1a9b"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a39dc93795ee5d8befec5ee5607cb1a9b">DvdSectorCprMai</a></div><div class="ttdeci">@ DvdSectorCprMai</div><div class="ttdoc">DVD Copyright Management Information (CPR_MAI)</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00126">enums.h:126</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a459369a1461803ec0cc998b606d53b07"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a459369a1461803ec0cc998b606d53b07">AppleSonyTag</a></div><div class="ttdeci">@ AppleSonyTag</div><div class="ttdoc">Apple Sony (12byte) tag.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00118">enums.h:118</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a4cc94cd48947bd2bb9ab37d56b8eab98"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4cc94cd48947bd2bb9ab37d56b8eab98">CdSectorPrefix</a></div><div class="ttdeci">@ CdSectorPrefix</div><div class="ttdoc">Compact Disc sector prefix (sync, header).</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00114">enums.h:114</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a6ed24283290264c28e919adf5a273f99"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a6ed24283290264c28e919adf5a273f99">PriamDataTowerTag</a></div><div class="ttdeci">@ PriamDataTowerTag</div><div class="ttdoc">Priam Data Tower (24byte) tag.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00119">enums.h:119</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a73bb26133ccd01972725933b00ec3a06">UserData</a></div><div class="ttdeci">@ UserData</div><div class="ttdoc">User (main) data.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00046">enums.h:46</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6a9761d07be6a71826f3f0146d091f2176"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9761d07be6a71826f3f0146d091f2176">DvdSectorEdc</a></div><div class="ttdeci">@ DvdSectorEdc</div><div class="ttdoc">DVD Error Detection Code (EDC)</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00130">enums.h:130</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6ab5223833b1f998e3475f800f6509c2f9"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ab5223833b1f998e3475f800f6509c2f9">DvdSectorTitleKeyDecrypted</a></div><div class="ttdeci">@ DvdSectorTitleKeyDecrypted</div><div class="ttdoc">Decrypted DVD Title Key.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00127">enums.h:127</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6ac1c178060cb3287b7283b83000f28dab"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ac1c178060cb3287b7283b83000f28dab">DvdSectorId</a></div><div class="ttdeci">@ DvdSectorId</div><div class="ttdoc">DVD Identification Data (ID)</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00128">enums.h:128</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6aee38da0d8fd8047e5468514ff9be0f75"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aee38da0d8fd8047e5468514ff9be0f75">CdSectorSuffix</a></div><div class="ttdeci">@ CdSectorSuffix</div><div class="ttdoc">Compact Disc sector suffix (EDC, ECC P, ECC Q).</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00115">enums.h:115</a></div></div>
<div class="ttc" id="aenums_8h_html_ad8ed01ff3ff33333d8e19db4d2818bb6af6d3ec9140499909db18dae9cfbfd056"><div class="ttname"><a href="enums_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6af6d3ec9140499909db18dae9cfbfd056">CompactDiscMode2Subheader</a></div><div class="ttdeci">@ CompactDiscMode2Subheader</div><div class="ttdoc">Compact Disc MODE 2 subheader.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00123">enums.h:123</a></div></div>
<div class="ttc" id="aenums_8h_html_af104aa102cdba100b9f245bef4abd42da8cc0519eeba84d57f99c239f687616b4"><div class="ttname"><a href="enums_8h.html#af104aa102cdba100b9f245bef4abd42da8cc0519eeba84d57f99c239f687616b4">AARU_FEATURE_RW_BLAKE3</a></div><div class="ttdeci">@ AARU_FEATURE_RW_BLAKE3</div><div class="ttdoc">BLAKE3 checksum is present (read/write support for BLAKE3 hashes).</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00265">enums.h:265</a></div></div>
<div class="ttc" id="aenums_8h_html_af887903d155851fe30d08053c4b2c1b8a2ee503de2bb99eb6a677fd9871a9c44d"><div class="ttname"><a href="enums_8h.html#af887903d155851fe30d08053c4b2c1b8a2ee503de2bb99eb6a677fd9871a9c44d">AARUF_STATUS_INVALID_CONTEXT</a></div><div class="ttdeci">@ AARUF_STATUS_INVALID_CONTEXT</div><div class="ttdoc">Provided context/handle is invalid.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00209">enums.h:209</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_affec749ed88365143745313ae9168263ab6147cfb5a7f96c11a4e4aafd9cc8ce0"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263ab6147cfb5a7f96c11a4e4aafd9cc8ce0">LzmaClauniaSubchannelTransform</a></div><div class="ttdeci">@ LzmaClauniaSubchannelTransform</div><div class="ttdoc">LZMA applied to Claunia Subchannel Transform processed data.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00036">enums.h:36</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_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#l00075">errors.h:75</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_af180a859e926a3826486d78078076919"><div class="ttname"><a href="errors_8h.html#af180a859e926a3826486d78078076919">AARUF_ERROR_CANNOT_WRITE_HEADER</a></div><div class="ttdeci">#define AARUF_ERROR_CANNOT_WRITE_HEADER</div><div class="ttdoc">Failure writing container header.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00060">errors.h:60</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0a8ba83da933d4ad284631784a991f19"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0a8ba83da933d4ad284631784a991f19">AppleProfile</a></div><div class="ttdeci">@ AppleProfile</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00698">aaru.h:698</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa3d003ea60d3ecb7018a671e1302938a0"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa3d003ea60d3ecb7018a671e1302938a0">AppleSonySS</a></div><div class="ttdeci">@ AppleSonySS</div><div class="ttdoc">3.5&quot;, SS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00247">aaru.h:247</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aab933939a09397f9311004f3dd137226d"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aab933939a09397f9311004f3dd137226d">PriamDataTower</a></div><div class="ttdeci">@ PriamDataTower</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00701">aaru.h:701</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aac08b59f9e8ecf5e380092edddb0340ec"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac08b59f9e8ecf5e380092edddb0340ec">AppleFileWare</a></div><div class="ttdeci">@ AppleFileWare</div><div class="ttdoc">5.25&quot;, DS, ?D, ?? tracks, ?? spt, 512 bytes/sector, GCR, opposite side heads, aka Twiggy</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00249">aaru.h:249</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aae809315e2cd79c3fd74d1604c38f3ae6"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aae809315e2cd79c3fd74d1604c38f3ae6">AppleSonyDS</a></div><div class="ttdeci">@ AppleSonyDS</div><div class="ttdoc">3.5&quot;, DS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00248">aaru.h:248</a></div></div>
<div class="ttc" id="ahash__map_8h_html_ab885e8c5bedaf6f3cca1877e378fd04f"><div class="ttname"><a href="hash__map_8h.html#ab885e8c5bedaf6f3cca1877e378fd04f">free_map</a></div><div class="ttdeci">void free_map(hash_map_t *map)</div><div class="ttdoc">Frees all memory associated with a hash map.</div><div class="ttdef"><b>Definition</b> <a href="hash__map_8c_source.html#l00073">hash_map.c:73</a></div></div>
<div class="ttc" id="ainternal_8h_html"><div class="ttname"><a href="internal_8h.html">internal.h</a></div></div>
<div class="ttc" id="ainternal_8h_html_a2402812f5e04ba16765208c0b70fa6c5"><div class="ttname"><a href="internal_8h.html#a2402812f5e04ba16765208c0b70fa6c5">aaruf_close_current_block</a></div><div class="ttdeci">int32_t aaruf_close_current_block(aaruformat_context *ctx)</div><div class="ttdoc">Finalizes and writes the current data block to the AaruFormat image file.</div><div class="ttdef"><b>Definition</b> <a href="write_8c_source.html#l01403">write.c:1403</a></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="asha1_8h_html_a341f900ed2019f4da21d6970417f9efc"><div class="ttname"><a href="sha1_8h.html#a341f900ed2019f4da21d6970417f9efc">SHA1_DIGEST_LENGTH</a></div><div class="ttdeci">#define SHA1_DIGEST_LENGTH</div><div class="ttdef"><b>Definition</b> <a href="sha1_8h_source.html#l00039">sha1.h:39</a></div></div>
<div class="ttc" id="asha256_8h_html_aa9cf0abf87b30c4c63e9c7e89c590579"><div class="ttname"><a href="sha256_8h.html#aa9cf0abf87b30c4c63e9c7e89c590579">SHA256_DIGEST_LENGTH</a></div><div class="ttdeci">#define SHA256_DIGEST_LENGTH</div><div class="ttdef"><b>Definition</b> <a href="sha256_8h_source.html#l00038">sha256.h:38</a></div></div>
<div class="ttc" id="aspamsum_8h_html_a2309f23e98c4c0370f32e3e3cb09afa5"><div class="ttname"><a href="spamsum_8h.html#a2309f23e98c4c0370f32e3e3cb09afa5">FUZZY_MAX_RESULT</a></div><div class="ttdeci">#define FUZZY_MAX_RESULT</div><div class="ttdef"><b>Definition</b> <a href="spamsum_8h_source.html#l00030">spamsum.h:30</a></div></div>
<div class="ttc" id="astructAaruHeaderV2_html"><div class="ttname"><a href="structAaruHeaderV2.html">AaruHeaderV2</a></div><div class="ttdoc">Version 2 container header with GUID, alignment shifts, and feature negotiation bitmaps.</div><div class="ttdef"><b>Definition</b> <a href="header_8h_source.html#l00106">header.h:107</a></div></div>
<div class="ttc" id="astructAaruHeaderV2_html_a4c3f5ccfe34123e402d1b7641d0d6c03"><div class="ttname"><a href="structAaruHeaderV2.html#a4c3f5ccfe34123e402d1b7641d0d6c03">AaruHeaderV2::featureCompatible</a></div><div class="ttdeci">uint64_t featureCompatible</div><div class="ttdoc">Feature bits: unimplemented bits are ignorable (still R/W safe).</div><div class="ttdef"><b>Definition</b> <a href="header_8h_source.html#l00122">header.h:122</a></div></div>
<div class="ttc" id="astructAaruHeaderV2_html_a4ec4b1d593f5a0af19f6d7b8eaeada40"><div class="ttname"><a href="structAaruHeaderV2.html#a4ec4b1d593f5a0af19f6d7b8eaeada40">AaruHeaderV2::indexOffset</a></div><div class="ttdeci">uint64_t indexOffset</div><div class="ttdoc">Absolute byte offset to primary index block (MUST be &gt; 0; 0 =&gt; corrupt/unreadable).</div><div class="ttdef"><b>Definition</b> <a href="header_8h_source.html#l00115">header.h:115</a></div></div>
<div class="ttc" id="astructAaruMetadataJsonBlockHeader_html"><div class="ttname"><a href="structAaruMetadataJsonBlockHeader.html">AaruMetadataJsonBlockHeader</a></div><div class="ttdoc">Header for an Aaru metadata JSON block (identifier == BlockType::AaruMetadataJsonBlock).</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00119">metadata.h:120</a></div></div>
<div class="ttc" id="astructAaruMetadataJsonBlockHeader_html_a5e3db5d08dc09206cad6ea1b88b2db7d"><div class="ttname"><a href="structAaruMetadataJsonBlockHeader.html#a5e3db5d08dc09206cad6ea1b88b2db7d">AaruMetadataJsonBlockHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::AaruMetadataJsonBlock.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00121">metadata.h:121</a></div></div>
<div class="ttc" id="astructAaruMetadataJsonBlockHeader_html_aa9e35df2ccc7294a24187fff4bb559a9"><div class="ttname"><a href="structAaruMetadataJsonBlockHeader.html#aa9e35df2ccc7294a24187fff4bb559a9">AaruMetadataJsonBlockHeader::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Length in bytes of the Aaru metadata JSON payload that follows.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00122">metadata.h:122</a></div></div>
<div class="ttc" id="astructBlockHeader_html"><div class="ttname"><a href="structBlockHeader.html">BlockHeader</a></div><div class="ttdoc">Header preceding the compressed data payload of a data block (BlockType::DataBlock).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00070">data.h:71</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a0ee87beb4362823260f70a87ac17379f"><div class="ttname"><a href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">BlockHeader::cmpLength</a></div><div class="ttdeci">uint32_t cmpLength</div><div class="ttdoc">Size in bytes of the compressed payload immediately following this header.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00076">data.h:76</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a1f9f3204a10090709b28d0df4bb547e5"><div class="ttname"><a href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">BlockHeader::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Size in bytes of the uncompressed payload resulting after decompression.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00077">data.h:77</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a3b03f118fb2dc3dcef3f87a82238e358"><div class="ttname"><a href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">BlockHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::DataBlock.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00072">data.h:72</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a8ff40eae6c49f0d9b49825f75e1e2bf8"><div class="ttname"><a href="structBlockHeader.html#a8ff40eae6c49f0d9b49825f75e1e2bf8">BlockHeader::cmpCrc64</a></div><div class="ttdeci">uint64_t cmpCrc64</div><div class="ttdoc">CRC64-ECMA of the compressed payload (cmpLength bytes).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00078">data.h:78</a></div></div>
<div class="ttc" id="astructBlockHeader_html_ab4d9e3a871e0c7f12a881017dac4ca12"><div class="ttname"><a href="structBlockHeader.html#ab4d9e3a871e0c7f12a881017dac4ca12">BlockHeader::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA of the uncompressed payload (length bytes).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00079">data.h:79</a></div></div>
<div class="ttc" id="astructBlockHeader_html_ac31ad48f3362a43175c94ec2e30662ad"><div class="ttname"><a href="structBlockHeader.html#ac31ad48f3362a43175c94ec2e30662ad">BlockHeader::type</a></div><div class="ttdeci">uint16_t type</div><div class="ttdoc">Logical data classification (value from DataType).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00073">data.h:73</a></div></div>
<div class="ttc" id="astructBlockHeader_html_ad68963422fd2a5f6d0e0be751cbef559"><div class="ttname"><a href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">BlockHeader::compression</a></div><div class="ttdeci">uint16_t compression</div><div class="ttdoc">Compression algorithm used (value from CompressionType).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00074">data.h:74</a></div></div>
<div class="ttc" id="astructChecksumEntry_html"><div class="ttname"><a href="structChecksumEntry.html">ChecksumEntry</a></div><div class="ttdoc">Per-checksum metadata immediately followed by the digest / signature bytes.</div><div class="ttdef"><b>Definition</b> <a href="checksum_8h_source.html#l00090">checksum.h:91</a></div></div>
<div class="ttc" id="astructChecksumEntry_html_a271a3b60fe8dfbbb540bb00c85762c58"><div class="ttname"><a href="structChecksumEntry.html#a271a3b60fe8dfbbb540bb00c85762c58">ChecksumEntry::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Length in bytes of the digest that immediately follows this structure.</div><div class="ttdef"><b>Definition</b> <a href="checksum_8h_source.html#l00093">checksum.h:93</a></div></div>
<div class="ttc" id="astructChecksumEntry_html_aae2307548d69d23749ffdfd9d4acd627"><div class="ttname"><a href="structChecksumEntry.html#aae2307548d69d23749ffdfd9d4acd627">ChecksumEntry::type</a></div><div class="ttdeci">uint8_t type</div><div class="ttdoc">Algorithm used (value from ChecksumAlgorithm).</div><div class="ttdef"><b>Definition</b> <a href="checksum_8h_source.html#l00092">checksum.h:92</a></div></div>
<div class="ttc" id="astructChecksumHeader_html"><div class="ttname"><a href="structChecksumHeader.html">ChecksumHeader</a></div><div class="ttdoc">Header that precedes the sequence of checksum entries for a checksum block.</div><div class="ttdef"><b>Definition</b> <a href="checksum_8h_source.html#l00073">checksum.h:74</a></div></div>
<div class="ttc" id="astructChecksumHeader_html_a2cb8589c2733e9a1cc0c8387da8ae3e3"><div class="ttname"><a href="structChecksumHeader.html#a2cb8589c2733e9a1cc0c8387da8ae3e3">ChecksumHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::ChecksumBlock.</div><div class="ttdef"><b>Definition</b> <a href="checksum_8h_source.html#l00075">checksum.h:75</a></div></div>
<div class="ttc" id="astructChecksumHeader_html_a56f776d418d05f7284ce811aa3ff1e06"><div class="ttname"><a href="structChecksumHeader.html#a56f776d418d05f7284ce811aa3ff1e06">ChecksumHeader::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Length in bytes of the payload (all entries + their digest data, excluding this header).</div><div class="ttdef"><b>Definition</b> <a href="checksum_8h_source.html#l00076">checksum.h:76</a></div></div>
<div class="ttc" id="astructChecksumHeader_html_aa82464bce9c97dda1066930b9250cfbe"><div class="ttname"><a href="structChecksumHeader.html#aa82464bce9c97dda1066930b9250cfbe">ChecksumHeader::entries</a></div><div class="ttdeci">uint8_t entries</div><div class="ttdoc">Number of checksum entries that follow in the payload.</div><div class="ttdef"><b>Definition</b> <a href="checksum_8h_source.html#l00077">checksum.h:77</a></div></div>
<div class="ttc" id="astructChecksums_html_a1748cd355e21a7b0f4f730dd16bd9752"><div class="ttname"><a href="structChecksums.html#a1748cd355e21a7b0f4f730dd16bd9752">Checksums::spamsum</a></div><div class="ttdeci">uint8_t * spamsum</div><div class="ttdoc">SpamSum fuzzy hash (ASCII), allocated length+1 with trailing 0.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00110">context.h:110</a></div></div>
<div class="ttc" id="astructChecksums_html_a4f404ac9841b3f06f8130722ec613ceb"><div class="ttname"><a href="structChecksums.html#a4f404ac9841b3f06f8130722ec613ceb">Checksums::hasSha256</a></div><div class="ttdeci">bool hasSha256</div><div class="ttdoc">True if sha256[] buffer populated.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00103">context.h:103</a></div></div>
<div class="ttc" id="astructChecksums_html_a59a7f4fc7db0867035acf60477afd4a6"><div class="ttname"><a href="structChecksums.html#a59a7f4fc7db0867035acf60477afd4a6">Checksums::sha1</a></div><div class="ttdeci">uint8_t sha1[20]</div><div class="ttdoc">SHA-1 digest (20 bytes).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00107">context.h:107</a></div></div>
<div class="ttc" id="astructChecksums_html_a9808d260d9b2ad0c172db164126266a3"><div class="ttname"><a href="structChecksums.html#a9808d260d9b2ad0c172db164126266a3">Checksums::sha256</a></div><div class="ttdeci">uint8_t sha256[32]</div><div class="ttdoc">SHA-256 digest (32 bytes).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00108">context.h:108</a></div></div>
<div class="ttc" id="astructChecksums_html_a9a47b66429ab4db300fdb7fcb931a867"><div class="ttname"><a href="structChecksums.html#a9a47b66429ab4db300fdb7fcb931a867">Checksums::md5</a></div><div class="ttdeci">uint8_t md5[16]</div><div class="ttdoc">MD5 digest (16 bytes).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00106">context.h:106</a></div></div>
<div class="ttc" id="astructChecksums_html_abe4e66c6bb57259dd1312f5cfb7730a5"><div class="ttname"><a href="structChecksums.html#abe4e66c6bb57259dd1312f5cfb7730a5">Checksums::hasSpamSum</a></div><div class="ttdeci">bool hasSpamSum</div><div class="ttdoc">True if spamsum pointer allocated and signature read.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00105">context.h:105</a></div></div>
<div class="ttc" id="astructChecksums_html_ac19eb1258cf0bf1c1998dfef7ae52550"><div class="ttname"><a href="structChecksums.html#ac19eb1258cf0bf1c1998dfef7ae52550">Checksums::hasSha1</a></div><div class="ttdeci">bool hasSha1</div><div class="ttdoc">True if sha1[] buffer populated.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00102">context.h:102</a></div></div>
<div class="ttc" id="astructChecksums_html_aca24093de3cb292573b7c3ebe777f5e8"><div class="ttname"><a href="structChecksums.html#aca24093de3cb292573b7c3ebe777f5e8">Checksums::blake3</a></div><div class="ttdeci">uint8_t blake3[BLAKE3_OUT_LEN]</div><div class="ttdoc">BLAKE3 digest (32 bytes).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00109">context.h:109</a></div></div>
<div class="ttc" id="astructChecksums_html_acd52d3e5df013ac7e30354d93d41ef72"><div class="ttname"><a href="structChecksums.html#acd52d3e5df013ac7e30354d93d41ef72">Checksums::hasMd5</a></div><div class="ttdeci">bool hasMd5</div><div class="ttdoc">True if md5[] buffer populated.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00101">context.h:101</a></div></div>
<div class="ttc" id="astructChecksums_html_aee0cf46a7cf9f514e2b609542820370d"><div class="ttname"><a href="structChecksums.html#aee0cf46a7cf9f514e2b609542820370d">Checksums::hasBlake3</a></div><div class="ttdeci">bool hasBlake3</div><div class="ttdoc">True if blake3[] buffer populated.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00104">context.h:104</a></div></div>
<div class="ttc" id="astructCicmMetadataBlock_html"><div class="ttname"><a href="structCicmMetadataBlock.html">CicmMetadataBlock</a></div><div class="ttdoc">Header for a CICM XML metadata block (identifier == BlockType::CicmBlock).</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00107">metadata.h:108</a></div></div>
<div class="ttc" id="astructCicmMetadataBlock_html_a660c22d42c504d290f386f187707956f"><div class="ttname"><a href="structCicmMetadataBlock.html#a660c22d42c504d290f386f187707956f">CicmMetadataBlock::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Length in bytes of the CICM metadata payload that follows.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00110">metadata.h:110</a></div></div>
<div class="ttc" id="astructCicmMetadataBlock_html_aee270357b6dc394ed9ac5f22c9903c90"><div class="ttname"><a href="structCicmMetadataBlock.html#aee270357b6dc394ed9ac5f22c9903c90">CicmMetadataBlock::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::CicmBlock.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00109">metadata.h:109</a></div></div>
<div class="ttc" id="astructDdtHeader2_html"><div class="ttname"><a href="structDdtHeader2.html">DdtHeader2</a></div><div class="ttdoc">Header preceding a version 2 hierarchical deduplication table.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00141">ddt.h:142</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a0799563cf99f679ee26840e32d52ca0f"><div class="ttname"><a href="structDdtHeader2.html#a0799563cf99f679ee26840e32d52ca0f">DdtHeader2::cmpCrc64</a></div><div class="ttdeci">uint64_t cmpCrc64</div><div class="ttdoc">CRC64-ECMA of compressed table payload.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00161">ddt.h:161</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a14f9ccf36df63e036d69291182cf7bbb"><div class="ttname"><a href="structDdtHeader2.html#a14f9ccf36df63e036d69291182cf7bbb">DdtHeader2::type</a></div><div class="ttdeci">uint16_t type</div><div class="ttdoc">Data classification (DataType) for sectors referenced by this table.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00144">ddt.h:144</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a238a2ca31ce0f60af3e59a1cb3e2e73c"><div class="ttname"><a href="structDdtHeader2.html#a238a2ca31ce0f60af3e59a1cb3e2e73c">DdtHeader2::start</a></div><div class="ttdeci">uint64_t start</div><div class="ttdoc">Base internal index covered by this table (used for secondary tables; currently informational).</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00153">ddt.h:153</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a2bfa558d9d778ae6b86d52520e278b66"><div class="ttname"><a href="structDdtHeader2.html#a2bfa558d9d778ae6b86d52520e278b66">DdtHeader2::overflow</a></div><div class="ttdeci">uint16_t overflow</div><div class="ttdoc">Trailing dumped sectors beyond user area (overflow range), still mapped with entries.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00151">ddt.h:151</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a4d69e092386cdf3499b17bd6f63a0d8d"><div class="ttname"><a href="structDdtHeader2.html#a4d69e092386cdf3499b17bd6f63a0d8d">DdtHeader2::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA of uncompressed table payload.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00162">ddt.h:162</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a4e90c22109c3fff37b526a113b094a50"><div class="ttname"><a href="structDdtHeader2.html#a4e90c22109c3fff37b526a113b094a50">DdtHeader2::entries</a></div><div class="ttdeci">uint64_t entries</div><div class="ttdoc">Number of entries contained in (uncompressed) table payload.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00158">ddt.h:158</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a68f4825db4e22906af0e55a359360656"><div class="ttname"><a href="structDdtHeader2.html#a68f4825db4e22906af0e55a359360656">DdtHeader2::levels</a></div><div class="ttdeci">uint8_t levels</div><div class="ttdoc">Total number of hierarchy levels (root depth); &gt; 0.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00146">ddt.h:146</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a7266134edef8efc7c449649f3035d189"><div class="ttname"><a href="structDdtHeader2.html#a7266134edef8efc7c449649f3035d189">DdtHeader2::length</a></div><div class="ttdeci">uint64_t length</div><div class="ttdoc">Uncompressed payload size in bytes.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00160">ddt.h:160</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a80a88ec68cd0332a57886ac363bfa4d1"><div class="ttname"><a href="structDdtHeader2.html#a80a88ec68cd0332a57886ac363bfa4d1">DdtHeader2::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::DeDuplicationTable2.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00143">ddt.h:143</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a8c2110cbb42bde3c0e302d3429024b04"><div class="ttname"><a href="structDdtHeader2.html#a8c2110cbb42bde3c0e302d3429024b04">DdtHeader2::tableShift</a></div><div class="ttdeci">uint8_t tableShift</div><div class="ttdoc">2^tableShift = number of logical sectors per primary entry (multi-level only; 0 for single-level or s...</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00156">ddt.h:156</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_a9571c1d556e33537935bab1edba31135"><div class="ttname"><a href="structDdtHeader2.html#a9571c1d556e33537935bab1edba31135">DdtHeader2::blocks</a></div><div class="ttdeci">uint64_t blocks</div><div class="ttdoc">Total internal span (negative + usable + overflow) in logical sectors.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00150">ddt.h:150</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_aa4b1416ac0e0585f436513cacf9ebd74"><div class="ttname"><a href="structDdtHeader2.html#aa4b1416ac0e0585f436513cacf9ebd74">DdtHeader2::negative</a></div><div class="ttdeci">uint16_t negative</div><div class="ttdoc">Leading negative LBA count; added to external L to build internal index.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00149">ddt.h:149</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_aa67b097c3a20f926ede495d27152f1c0"><div class="ttname"><a href="structDdtHeader2.html#aa67b097c3a20f926ede495d27152f1c0">DdtHeader2::blockAlignmentShift</a></div><div class="ttdeci">uint8_t blockAlignmentShift</div><div class="ttdoc">2^blockAlignmentShift = block alignment boundary in bytes.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00154">ddt.h:154</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_ac8ec7921a5651b5107eda4e99b488798"><div class="ttname"><a href="structDdtHeader2.html#ac8ec7921a5651b5107eda4e99b488798">DdtHeader2::tableLevel</a></div><div class="ttdeci">uint8_t tableLevel</div><div class="ttdoc">Zero-based level index of this table (0 = root, increases downward).</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00147">ddt.h:147</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_ad1a27a46df09748a91a9010a630c422e"><div class="ttname"><a href="structDdtHeader2.html#ad1a27a46df09748a91a9010a630c422e">DdtHeader2::compression</a></div><div class="ttdeci">uint16_t compression</div><div class="ttdoc">Compression algorithm for this table body (CompressionType).</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00145">ddt.h:145</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_ad9a2beb3a79bc6c239ba04fe341e0cde"><div class="ttname"><a href="structDdtHeader2.html#ad9a2beb3a79bc6c239ba04fe341e0cde">DdtHeader2::dataShift</a></div><div class="ttdeci">uint8_t dataShift</div><div class="ttdoc">2^dataShift = sectors represented per increment in blockIndex field.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00155">ddt.h:155</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_aee50fc92a9151bd352808b28bccd5045"><div class="ttname"><a href="structDdtHeader2.html#aee50fc92a9151bd352808b28bccd5045">DdtHeader2::cmpLength</a></div><div class="ttdeci">uint64_t cmpLength</div><div class="ttdoc">Compressed payload size in bytes.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00159">ddt.h:159</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_af71423c2a8c7fa89dfd2313b456c57a2"><div class="ttname"><a href="structDdtHeader2.html#af71423c2a8c7fa89dfd2313b456c57a2">DdtHeader2::previousLevelOffset</a></div><div class="ttdeci">uint64_t previousLevelOffset</div><div class="ttdoc">Absolute byte offset of the parent (previous) level table; 0 if root.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00148">ddt.h:148</a></div></div>
<div class="ttc" id="astructDumpExtent_html"><div class="ttname"><a href="structDumpExtent.html">DumpExtent</a></div><div class="ttdoc">Inclusive [start,end] logical sector range contributed by a single hardware environment.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00333">context.h:334</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a04e71aaa515a5a88171f5730e371abbf"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a04e71aaa515a5a88171f5730e371abbf">DumpHardwareEntriesWithData::firmware</a></div><div class="ttdeci">uint8_t * firmware</div><div class="ttdoc">Firmware version string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00321">context.h:321</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a05cc1da940a0009621038a0327719a91"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a05cc1da940a0009621038a0327719a91">DumpHardwareEntriesWithData::revision</a></div><div class="ttdeci">uint8_t * revision</div><div class="ttdoc">Hardware revision string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00320">context.h:320</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a160651cc2a5247b99c9ebe38511cc475"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a160651cc2a5247b99c9ebe38511cc475">DumpHardwareEntriesWithData::model</a></div><div class="ttdeci">uint8_t * model</div><div class="ttdoc">Model string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00319">context.h:319</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a31b56a2fa1f210aaa023eb031572e70b"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a31b56a2fa1f210aaa023eb031572e70b">DumpHardwareEntriesWithData::softwareName</a></div><div class="ttdeci">uint8_t * softwareName</div><div class="ttdoc">Dump software name or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00323">context.h:323</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a34453672c41a27c7d1b9a5df28f7df1a"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a34453672c41a27c7d1b9a5df28f7df1a">DumpHardwareEntriesWithData::extents</a></div><div class="ttdeci">struct DumpExtent * extents</div><div class="ttdoc">Array of extents (entry.extents elements) or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00317">context.h:317</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a4dbc57a5f46892c5e0cde65c55c11e33"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a4dbc57a5f46892c5e0cde65c55c11e33">DumpHardwareEntriesWithData::manufacturer</a></div><div class="ttdeci">uint8_t * manufacturer</div><div class="ttdoc">Manufacturer string (UTF-8) or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00318">context.h:318</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a5766ab6474f43fac96fb0342136766cc"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a5766ab6474f43fac96fb0342136766cc">DumpHardwareEntriesWithData::softwareVersion</a></div><div class="ttdeci">uint8_t * softwareVersion</div><div class="ttdoc">Dump software version or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00324">context.h:324</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a6d328a63bbde6fc49d5a507a22801107"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a6d328a63bbde6fc49d5a507a22801107">DumpHardwareEntriesWithData::serial</a></div><div class="ttdeci">uint8_t * serial</div><div class="ttdoc">Serial number string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00322">context.h:322</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_a9b5f7b438c99ede6988179b7b89915df"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#a9b5f7b438c99ede6988179b7b89915df">DumpHardwareEntriesWithData::entry</a></div><div class="ttdeci">DumpHardwareEntry entry</div><div class="ttdoc">Fixed-size header with lengths &amp; counts.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00316">context.h:316</a></div></div>
<div class="ttc" id="astructDumpHardwareEntriesWithData_html_acfd385853ac00bbdbd5ef603aebfb44d"><div class="ttname"><a href="structDumpHardwareEntriesWithData.html#acfd385853ac00bbdbd5ef603aebfb44d">DumpHardwareEntriesWithData::softwareOperatingSystem</a></div><div class="ttdeci">uint8_t * softwareOperatingSystem</div><div class="ttdoc">Host operating system string or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00325">context.h:325</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html"><div class="ttname"><a href="structDumpHardwareEntry.html">DumpHardwareEntry</a></div><div class="ttdoc">Per-environment length table describing subsequent UTF-8 strings and optional extent array.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00112">dump.h:113</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a20025e2e89599dd60a83ca623fc9a200"><div class="ttname"><a href="structDumpHardwareEntry.html#a20025e2e89599dd60a83ca623fc9a200">DumpHardwareEntry::softwareNameLength</a></div><div class="ttdeci">uint32_t softwareNameLength</div><div class="ttdoc">Length in bytes of dumping software name string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00119">dump.h:119</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a38a2c1b15dc4cabc02b4124b3a52c8db"><div class="ttname"><a href="structDumpHardwareEntry.html#a38a2c1b15dc4cabc02b4124b3a52c8db">DumpHardwareEntry::manufacturerLength</a></div><div class="ttdeci">uint32_t manufacturerLength</div><div class="ttdoc">Length in bytes of manufacturer UTF-8 string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00114">dump.h:114</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a4b4d1afcec5c3a0ec0e5f61fc481171d"><div class="ttname"><a href="structDumpHardwareEntry.html#a4b4d1afcec5c3a0ec0e5f61fc481171d">DumpHardwareEntry::softwareVersionLength</a></div><div class="ttdeci">uint32_t softwareVersionLength</div><div class="ttdoc">Length in bytes of dumping software version string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00120">dump.h:120</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a52948ae4f0d07e4d861e79def4a0deec"><div class="ttname"><a href="structDumpHardwareEntry.html#a52948ae4f0d07e4d861e79def4a0deec">DumpHardwareEntry::firmwareLength</a></div><div class="ttdeci">uint32_t firmwareLength</div><div class="ttdoc">Length in bytes of firmware version string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00117">dump.h:117</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a558ff77451f13188e00f5b8da4c595ad"><div class="ttname"><a href="structDumpHardwareEntry.html#a558ff77451f13188e00f5b8da4c595ad">DumpHardwareEntry::extents</a></div><div class="ttdeci">uint32_t extents</div><div class="ttdoc">Number of DumpExtent records following the strings (0 = none).</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00122">dump.h:122</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_a81f6da3ced18e060c27a3bc3ac4387c3"><div class="ttname"><a href="structDumpHardwareEntry.html#a81f6da3ced18e060c27a3bc3ac4387c3">DumpHardwareEntry::modelLength</a></div><div class="ttdeci">uint32_t modelLength</div><div class="ttdoc">Length in bytes of model UTF-8 string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00115">dump.h:115</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_ab363d118785e94df2acc0c8dc1a9d1b5"><div class="ttname"><a href="structDumpHardwareEntry.html#ab363d118785e94df2acc0c8dc1a9d1b5">DumpHardwareEntry::serialLength</a></div><div class="ttdeci">uint32_t serialLength</div><div class="ttdoc">Length in bytes of device serial number string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00118">dump.h:118</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_aca3e85fe2b6b8dd49afde691e5cf1ee8"><div class="ttname"><a href="structDumpHardwareEntry.html#aca3e85fe2b6b8dd49afde691e5cf1ee8">DumpHardwareEntry::revisionLength</a></div><div class="ttdeci">uint32_t revisionLength</div><div class="ttdoc">Length in bytes of revision / hardware revision string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00116">dump.h:116</a></div></div>
<div class="ttc" id="astructDumpHardwareEntry_html_adea9ba6d578c27ee86524e7ff91dcbdd"><div class="ttname"><a href="structDumpHardwareEntry.html#adea9ba6d578c27ee86524e7ff91dcbdd">DumpHardwareEntry::softwareOperatingSystemLength</a></div><div class="ttdeci">uint32_t softwareOperatingSystemLength</div><div class="ttdoc">Length in bytes of host operating system string.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00121">dump.h:121</a></div></div>
<div class="ttc" id="astructDumpHardwareHeader_html"><div class="ttname"><a href="structDumpHardwareHeader.html">DumpHardwareHeader</a></div><div class="ttdoc">Header that precedes a sequence of dump hardware entries and their variable-length payload.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00090">dump.h:91</a></div></div>
<div class="ttc" id="astructDumpHardwareHeader_html_a0dbdec7b89e7081706cd07dfa00403a7"><div class="ttname"><a href="structDumpHardwareHeader.html#a0dbdec7b89e7081706cd07dfa00403a7">DumpHardwareHeader::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA of the payload (byte-swapped for legacy v1 images, handled automatically).</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00095">dump.h:95</a></div></div>
<div class="ttc" id="astructDumpHardwareHeader_html_aa5764ab144eef9a32c08f4475254442d"><div class="ttname"><a href="structDumpHardwareHeader.html#aa5764ab144eef9a32c08f4475254442d">DumpHardwareHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::DumpHardwareBlock.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00092">dump.h:92</a></div></div>
<div class="ttc" id="astructDumpHardwareHeader_html_acc565625096da115c80e7e390e78a1fa"><div class="ttname"><a href="structDumpHardwareHeader.html#acc565625096da115c80e7e390e78a1fa">DumpHardwareHeader::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Total payload bytes after this header (sum of entries, strings, and extents arrays).</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00094">dump.h:94</a></div></div>
<div class="ttc" id="astructDumpHardwareHeader_html_aee1b5c61324635638fbfbb2518fb86d8"><div class="ttname"><a href="structDumpHardwareHeader.html#aee1b5c61324635638fbfbb2518fb86d8">DumpHardwareHeader::entries</a></div><div class="ttdeci">uint16_t entries</div><div class="ttdoc">Number of DumpHardwareEntry records that follow.</div><div class="ttdef"><b>Definition</b> <a href="dump_8h_source.html#l00093">dump.h:93</a></div></div>
<div class="ttc" id="astructGeometryBlockHeader_html"><div class="ttname"><a href="structGeometryBlockHeader.html">GeometryBlockHeader</a></div><div class="ttdoc">Legacy CHS style logical geometry metadata (BlockType::GeometryBlock).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00090">data.h:91</a></div></div>
<div class="ttc" id="astructGeometryBlockHeader_html_a233b19be8361b1c3c1963d8521924138"><div class="ttname"><a href="structGeometryBlockHeader.html#a233b19be8361b1c3c1963d8521924138">GeometryBlockHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::GeometryBlock.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00092">data.h:92</a></div></div>
<div class="ttc" id="astructImageInfo_html_a76611d5087e0a9fd4d329fac7c9ec3f3"><div class="ttname"><a href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">ImageInfo::MediaType</a></div><div class="ttdeci">uint32_t MediaType</div><div class="ttdoc">Media type identifier (see MediaType enum; 0=Unknown)</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00881">aaru.h:881</a></div></div>
<div class="ttc" id="astructImageInfo_html_a7ed25efcf8cec55d6609b83bcd17b2d0"><div class="ttname"><a href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">ImageInfo::MetadataMediaType</a></div><div class="ttdeci">uint8_t MetadataMediaType</div><div class="ttdoc">Media type for sidecar generation (internal archival use)</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00882">aaru.h:882</a></div></div>
<div class="ttc" id="astructImageInfo_html_ae3e1b9cde1c51152b00eb1b59e199906"><div class="ttname"><a href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">ImageInfo::Sectors</a></div><div class="ttdeci">uint64_t Sectors</div><div class="ttdoc">Total count of addressable logical sectors/blocks.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00874">aaru.h:874</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="astructIndexEntry_html_ae5d35082a756e0388efbf5fabbe93d10"><div class="ttname"><a href="structIndexEntry.html#ae5d35082a756e0388efbf5fabbe93d10">IndexEntry::dataType</a></div><div class="ttdeci">uint16_t dataType</div><div class="ttdoc">Data classification (value from DataType) or unused for untyped blocks.</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00111">index.h:111</a></div></div>
<div class="ttc" id="astructIndexHeader3_html"><div class="ttname"><a href="structIndexHeader3.html">IndexHeader3</a></div><div class="ttdoc">Index header (version 3) adding hierarchical chaining (identifier == IndexBlock3).</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00092">index.h:93</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_a33743c206cb10cc1d8ff2c7f9e61ddcf"><div class="ttname"><a href="structIndexHeader3.html#a33743c206cb10cc1d8ff2c7f9e61ddcf">IndexHeader3::previous</a></div><div class="ttdeci">uint64_t previous</div><div class="ttdoc">File offset of a previous IndexBlock3 header (0 if none / root segment).</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00097">index.h:97</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_a482f94fd93019dd2879d984bc8eecf67"><div class="ttname"><a href="structIndexHeader3.html#a482f94fd93019dd2879d984bc8eecf67">IndexHeader3::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier (must be BlockType::IndexBlock3).</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00094">index.h:94</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_a7291ac63956c468bf48aa17d24d3f7b2"><div class="ttname"><a href="structIndexHeader3.html#a7291ac63956c468bf48aa17d24d3f7b2">IndexHeader3::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA of the local entries array (does NOT cover subindexes or previous chains).</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00096">index.h:96</a></div></div>
<div class="ttc" id="astructIndexHeader3_html_af05fe8e08e929aa0eab6b74638f22b74"><div class="ttname"><a href="structIndexHeader3.html#af05fe8e08e929aa0eab6b74638f22b74">IndexHeader3::entries</a></div><div class="ttdeci">uint64_t entries</div><div class="ttdoc">Number of IndexEntry records that follow in this (sub)index block.</div><div class="ttdef"><b>Definition</b> <a href="index_8h_source.html#l00095">index.h:95</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html"><div class="ttname"><a href="structMetadataBlockHeader.html">MetadataBlockHeader</a></div><div class="ttdoc">Header for a metadata block containing offsets and lengths to UTF-16LE descriptive strings.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00068">metadata.h:69</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a0bbbf0b6d7b48ebdc07d4a5e1138044f"><div class="ttname"><a href="structMetadataBlockHeader.html#a0bbbf0b6d7b48ebdc07d4a5e1138044f">MetadataBlockHeader::commentsLength</a></div><div class="ttdeci">uint32_t commentsLength</div><div class="ttdoc">Length in bytes (including null) of comments string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00078">metadata.h:78</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a1359ce7deda764ea267459f3f5906473"><div class="ttname"><a href="structMetadataBlockHeader.html#a1359ce7deda764ea267459f3f5906473">MetadataBlockHeader::mediaSequence</a></div><div class="ttdeci">int32_t mediaSequence</div><div class="ttdoc">Sequence number within a multi-disc / multi-volume set (0-based or 1-based as producer defines).</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00072">metadata.h:72</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a16f0be711a2a0ddb48a0f092716e93dc"><div class="ttname"><a href="structMetadataBlockHeader.html#a16f0be711a2a0ddb48a0f092716e93dc">MetadataBlockHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::MetadataBlock.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00070">metadata.h:70</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a22d2307092bdc0046664f328e9da581e"><div class="ttname"><a href="structMetadataBlockHeader.html#a22d2307092bdc0046664f328e9da581e">MetadataBlockHeader::mediaTitleOffset</a></div><div class="ttdeci">uint32_t mediaTitleOffset</div><div class="ttdoc">Offset to UTF-16LE media title string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00079">metadata.h:79</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a3757158a1386964537beb387b5bc03d2"><div class="ttname"><a href="structMetadataBlockHeader.html#a3757158a1386964537beb387b5bc03d2">MetadataBlockHeader::driveModelLength</a></div><div class="ttdeci">uint32_t driveModelLength</div><div class="ttdoc">Length in bytes (including null) of drive model string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00094">metadata.h:94</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a380656568f47a838a8a3833844789064"><div class="ttname"><a href="structMetadataBlockHeader.html#a380656568f47a838a8a3833844789064">MetadataBlockHeader::driveManufacturerLength</a></div><div class="ttdeci">uint32_t driveManufacturerLength</div><div class="ttdoc">Length in bytes (including null) of drive manufacturer string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00092">metadata.h:92</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a3d1affce1a6ce2bda81aeaf85435b885"><div class="ttname"><a href="structMetadataBlockHeader.html#a3d1affce1a6ce2bda81aeaf85435b885">MetadataBlockHeader::blockSize</a></div><div class="ttdeci">uint32_t blockSize</div><div class="ttdoc">Total size in bytes of the entire metadata block (header + strings).</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00071">metadata.h:71</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a4751e36473bffa529e5d1d1debca95a2"><div class="ttname"><a href="structMetadataBlockHeader.html#a4751e36473bffa529e5d1d1debca95a2">MetadataBlockHeader::driveModelOffset</a></div><div class="ttdeci">uint32_t driveModelOffset</div><div class="ttdoc">Offset to UTF-16LE drive model string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00093">metadata.h:93</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a5340616394d88102e70054c673308469"><div class="ttname"><a href="structMetadataBlockHeader.html#a5340616394d88102e70054c673308469">MetadataBlockHeader::mediaModelOffset</a></div><div class="ttdeci">uint32_t mediaModelOffset</div><div class="ttdoc">Offset to UTF-16LE media model string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00083">metadata.h:83</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a5ee9864c423b8acf6d15b3947587ed4c"><div class="ttname"><a href="structMetadataBlockHeader.html#a5ee9864c423b8acf6d15b3947587ed4c">MetadataBlockHeader::creatorOffset</a></div><div class="ttdeci">uint32_t creatorOffset</div><div class="ttdoc">Offset to UTF-16LE creator string (or undefined if creatorLength==0).</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00075">metadata.h:75</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a68deb35b7b070dcc18c790289192741c"><div class="ttname"><a href="structMetadataBlockHeader.html#a68deb35b7b070dcc18c790289192741c">MetadataBlockHeader::mediaTitleLength</a></div><div class="ttdeci">uint32_t mediaTitleLength</div><div class="ttdoc">Length in bytes (including null) of media title string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00080">metadata.h:80</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a6a443de2064b9c3eb31288afb81676d3"><div class="ttname"><a href="structMetadataBlockHeader.html#a6a443de2064b9c3eb31288afb81676d3">MetadataBlockHeader::mediaManufacturerOffset</a></div><div class="ttdeci">uint32_t mediaManufacturerOffset</div><div class="ttdoc">Offset to UTF-16LE media manufacturer string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00081">metadata.h:81</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a78213f42c28f31038e6a9f130c660ad8"><div class="ttname"><a href="structMetadataBlockHeader.html#a78213f42c28f31038e6a9f130c660ad8">MetadataBlockHeader::driveSerialNumberLength</a></div><div class="ttdeci">uint32_t driveSerialNumberLength</div><div class="ttdoc">Length in bytes (including null) of drive serial number string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00096">metadata.h:96</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a7d44fe2fdfebf3d49179801eb72ff72c"><div class="ttname"><a href="structMetadataBlockHeader.html#a7d44fe2fdfebf3d49179801eb72ff72c">MetadataBlockHeader::driveSerialNumberOffset</a></div><div class="ttdeci">uint32_t driveSerialNumberOffset</div><div class="ttdoc">Offset to UTF-16LE drive serial number string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00095">metadata.h:95</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a7f2956f787d72b6981a22c050c0889cf"><div class="ttname"><a href="structMetadataBlockHeader.html#a7f2956f787d72b6981a22c050c0889cf">MetadataBlockHeader::mediaManufacturerLength</a></div><div class="ttdeci">uint32_t mediaManufacturerLength</div><div class="ttdoc">Length in bytes (including null) of media manufacturer string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00082">metadata.h:82</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a9438f57b0304b42912b8c66e5a0f1051"><div class="ttname"><a href="structMetadataBlockHeader.html#a9438f57b0304b42912b8c66e5a0f1051">MetadataBlockHeader::mediaModelLength</a></div><div class="ttdeci">uint32_t mediaModelLength</div><div class="ttdoc">Length in bytes (including null) of media model string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00084">metadata.h:84</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_a9bcf425f7ae5ab41d030c9b1f2c72979"><div class="ttname"><a href="structMetadataBlockHeader.html#a9bcf425f7ae5ab41d030c9b1f2c72979">MetadataBlockHeader::driveFirmwareRevisionOffset</a></div><div class="ttdeci">uint32_t driveFirmwareRevisionOffset</div><div class="ttdoc">Offset to UTF-16LE drive firmware revision string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00097">metadata.h:97</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_aacd243f7f5a78c6087b797328197f522"><div class="ttname"><a href="structMetadataBlockHeader.html#aacd243f7f5a78c6087b797328197f522">MetadataBlockHeader::lastMediaSequence</a></div><div class="ttdeci">int32_t lastMediaSequence</div><div class="ttdoc">Total number of media in the set; 0 or 1 if single item.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00074">metadata.h:74</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_abd56f9918aab6b6ee628abf6ca04c6d9"><div class="ttname"><a href="structMetadataBlockHeader.html#abd56f9918aab6b6ee628abf6ca04c6d9">MetadataBlockHeader::commentsOffset</a></div><div class="ttdeci">uint32_t commentsOffset</div><div class="ttdoc">Offset to UTF-16LE comments string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00077">metadata.h:77</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_acb4e827848c2525a0fa5fcc6cfcf2887"><div class="ttname"><a href="structMetadataBlockHeader.html#acb4e827848c2525a0fa5fcc6cfcf2887">MetadataBlockHeader::driveManufacturerOffset</a></div><div class="ttdeci">uint32_t driveManufacturerOffset</div><div class="ttdoc">Offset to UTF-16LE drive manufacturer string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00091">metadata.h:91</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_ae4561c1f946fe76239810f29a237dfbc"><div class="ttname"><a href="structMetadataBlockHeader.html#ae4561c1f946fe76239810f29a237dfbc">MetadataBlockHeader::mediaSerialNumberOffset</a></div><div class="ttdeci">uint32_t mediaSerialNumberOffset</div><div class="ttdoc">Offset to UTF-16LE media serial number string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00085">metadata.h:85</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_aeae9bce28abec33ffa90005f2a247e34"><div class="ttname"><a href="structMetadataBlockHeader.html#aeae9bce28abec33ffa90005f2a247e34">MetadataBlockHeader::mediaSerialNumberLength</a></div><div class="ttdeci">uint32_t mediaSerialNumberLength</div><div class="ttdoc">Length in bytes (including null) of media serial number string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00086">metadata.h:86</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_aeb9233f4dd077e5b0985a3a776deb7c8"><div class="ttname"><a href="structMetadataBlockHeader.html#aeb9233f4dd077e5b0985a3a776deb7c8">MetadataBlockHeader::mediaPartNumberOffset</a></div><div class="ttdeci">uint32_t mediaPartNumberOffset</div><div class="ttdoc">Offset to UTF-16LE media part number string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00089">metadata.h:89</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_aef055916275048b6496f1f74eef2f1ac"><div class="ttname"><a href="structMetadataBlockHeader.html#aef055916275048b6496f1f74eef2f1ac">MetadataBlockHeader::mediaPartNumberLength</a></div><div class="ttdeci">uint32_t mediaPartNumberLength</div><div class="ttdoc">Length in bytes (including null) of media part number string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00090">metadata.h:90</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_aef456689422a0514489b1c900ee2c741"><div class="ttname"><a href="structMetadataBlockHeader.html#aef456689422a0514489b1c900ee2c741">MetadataBlockHeader::mediaBarcodeLength</a></div><div class="ttdeci">uint32_t mediaBarcodeLength</div><div class="ttdoc">Length in bytes (including null) of media barcode string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00088">metadata.h:88</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_af620858c254ea17f2d75b065134239c8"><div class="ttname"><a href="structMetadataBlockHeader.html#af620858c254ea17f2d75b065134239c8">MetadataBlockHeader::creatorLength</a></div><div class="ttdeci">uint32_t creatorLength</div><div class="ttdoc">Length in bytes (including null) of creator string (0 if absent).</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00076">metadata.h:76</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_afbf024f5492e45a3643ea7a1652b6420"><div class="ttname"><a href="structMetadataBlockHeader.html#afbf024f5492e45a3643ea7a1652b6420">MetadataBlockHeader::driveFirmwareRevisionLength</a></div><div class="ttdeci">uint32_t driveFirmwareRevisionLength</div><div class="ttdoc">Length in bytes (including null) of drive firmware revision string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00098">metadata.h:98</a></div></div>
<div class="ttc" id="astructMetadataBlockHeader_html_affd6e10a1ab8eb3714a6ff09b3471747"><div class="ttname"><a href="structMetadataBlockHeader.html#affd6e10a1ab8eb3714a6ff09b3471747">MetadataBlockHeader::mediaBarcodeOffset</a></div><div class="ttdeci">uint32_t mediaBarcodeOffset</div><div class="ttdoc">Offset to UTF-16LE media barcode string.</div><div class="ttdef"><b>Definition</b> <a href="metadata_8h_source.html#l00087">metadata.h:87</a></div></div>
<div class="ttc" id="astructTapeDdtHashEntry_html"><div class="ttname"><a href="structTapeDdtHashEntry.html">TapeDdtHashEntry</a></div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00140">context.h:141</a></div></div>
<div class="ttc" id="astructTapeDdtHashEntry_html_acd6c80964b9f8f53a955ff3ebd0e9103"><div class="ttname"><a href="structTapeDdtHashEntry.html#acd6c80964b9f8f53a955ff3ebd0e9103">TapeDdtHashEntry::key</a></div><div class="ttdeci">uint64_t key</div><div class="ttdoc">Key: sector address.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00142">context.h:142</a></div></div>
<div class="ttc" id="astructTapeDdtHashEntry_html_af8bd3cf85fa9e9b26c768323b0e0ebaa"><div class="ttname"><a href="structTapeDdtHashEntry.html#af8bd3cf85fa9e9b26c768323b0e0ebaa">TapeDdtHashEntry::value</a></div><div class="ttdeci">uint64_t value</div><div class="ttdoc">Value: DDT entry.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00143">context.h:143</a></div></div>
<div class="ttc" id="astructTapeFileEntry_html"><div class="ttname"><a href="structTapeFileEntry.html">TapeFileEntry</a></div><div class="ttdoc">Describes a single logical file on a tape medium.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00133">tape.h:134</a></div></div>
<div class="ttc" id="astructTapeFileHashEntry_html_aff0f81d26d4ee00ad33331aacc2834e1"><div class="ttname"><a href="structTapeFileHashEntry.html#aff0f81d26d4ee00ad33331aacc2834e1">TapeFileHashEntry::fileEntry</a></div><div class="ttdeci">TapeFileEntry fileEntry</div><div class="ttdoc">The actual tape file data.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00129">context.h:129</a></div></div>
<div class="ttc" id="astructTapeFileHeader_html"><div class="ttname"><a href="structTapeFileHeader.html">TapeFileHeader</a></div><div class="ttdoc">Header for a tape file metadata block containing file layout information.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00237">tape.h:238</a></div></div>
<div class="ttc" id="astructTapeFileHeader_html_a36fe923f8d67004e0b0ae8eaf6535e1d"><div class="ttname"><a href="structTapeFileHeader.html#a36fe923f8d67004e0b0ae8eaf6535e1d">TapeFileHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block type identifier.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00239">tape.h:239</a></div></div>
<div class="ttc" id="astructTapeFileHeader_html_a5172ee4bf0b5820a66d04aff1e3809db"><div class="ttname"><a href="structTapeFileHeader.html#a5172ee4bf0b5820a66d04aff1e3809db">TapeFileHeader::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA checksum of the entry data.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00245">tape.h:245</a></div></div>
<div class="ttc" id="astructTapeFileHeader_html_a74b5289640a6c45eece7bd58550e59c0"><div class="ttname"><a href="structTapeFileHeader.html#a74b5289640a6c45eece7bd58550e59c0">TapeFileHeader::length</a></div><div class="ttdeci">uint64_t length</div><div class="ttdoc">Size of entry data in bytes (excluding this header).</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00243">tape.h:243</a></div></div>
<div class="ttc" id="astructTapePartitionEntry_html"><div class="ttname"><a href="structTapePartitionEntry.html">TapePartitionEntry</a></div><div class="ttdoc">Describes a single physical partition on a tape medium.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00319">tape.h:320</a></div></div>
<div class="ttc" id="astructTapePartitionHashEntry_html"><div class="ttname"><a href="structTapePartitionHashEntry.html">TapePartitionHashEntry</a></div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00133">context.h:134</a></div></div>
<div class="ttc" id="astructTapePartitionHashEntry_html_af7c9f8904da9a0a21171ff3c04ec4379"><div class="ttname"><a href="structTapePartitionHashEntry.html#af7c9f8904da9a0a21171ff3c04ec4379">TapePartitionHashEntry::partitionEntry</a></div><div class="ttdeci">TapePartitionEntry partitionEntry</div><div class="ttdoc">The actual tape partition data.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00136">context.h:136</a></div></div>
<div class="ttc" id="astructTapePartitionHeader_html"><div class="ttname"><a href="structTapePartitionHeader.html">TapePartitionHeader</a></div><div class="ttdoc">Header for a tape partition metadata block containing partition layout information.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00440">tape.h:441</a></div></div>
<div class="ttc" id="astructTapePartitionHeader_html_a172a09251507f59bf607e4e2680f1bfc"><div class="ttname"><a href="structTapePartitionHeader.html#a172a09251507f59bf607e4e2680f1bfc">TapePartitionHeader::crc64</a></div><div class="ttdeci">uint64_t crc64</div><div class="ttdoc">CRC64-ECMA checksum of the entry data.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00448">tape.h:448</a></div></div>
<div class="ttc" id="astructTapePartitionHeader_html_a698bbe76b7612e2461f97f819e3830b7"><div class="ttname"><a href="structTapePartitionHeader.html#a698bbe76b7612e2461f97f819e3830b7">TapePartitionHeader::length</a></div><div class="ttdeci">uint64_t length</div><div class="ttdoc">Size of entry data in bytes (excluding this header).</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00446">tape.h:446</a></div></div>
<div class="ttc" id="astructTapePartitionHeader_html_ace597fc284e2191b65e69eb0be9f99f6"><div class="ttname"><a href="structTapePartitionHeader.html#ace597fc284e2191b65e69eb0be9f99f6">TapePartitionHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block type identifier.</div><div class="ttdef"><b>Definition</b> <a href="tape_8h_source.html#l00442">tape.h:442</a></div></div>
<div class="ttc" id="astructTrackEntry_html"><div class="ttname"><a href="structTrackEntry.html">TrackEntry</a></div><div class="ttdoc">Single optical disc track descriptor (sequence, type, LBAs, session, ISRC, flags).</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00071">optical.h:72</a></div></div>
<div class="ttc" id="astructTracksHeader_html"><div class="ttname"><a href="structTracksHeader.html">TracksHeader</a></div><div class="ttdoc">Header for an optical tracks block listing track entries.</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00061">optical.h:62</a></div></div>
<div class="ttc" id="astructTracksHeader_html_a98df23dccacc04396f07f450a742527a"><div class="ttname"><a href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">TracksHeader::entries</a></div><div class="ttdeci">uint16_t entries</div><div class="ttdoc">Number of TrackEntry records following this header.</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00064">optical.h:64</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#l00171">context.h:172</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a04aa232b37b939d9e815c4addc68a7a3"><div class="ttname"><a href="structaaruformat__context.html#a04aa232b37b939d9e815c4addc68a7a3">aaruformat_context::media_barcode</a></div><div class="ttdeci">uint8_t * media_barcode</div><div class="ttdoc">Barcode of the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00222">context.h:222</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a04c5fb367458a6e9dd0a50b39f6edec2"><div class="ttname"><a href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">aaruformat_context::user_data_ddt_header</a></div><div class="ttdeci">DdtHeader2 user_data_ddt_header</div><div class="ttdoc">Active user data DDT v2 header (primary table meta).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00189">context.h:189</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a07a920267b1112bfb238ba54e7a74e80"><div class="ttname"><a href="structaaruformat__context.html#a07a920267b1112bfb238ba54e7a74e80">aaruformat_context::checksums</a></div><div class="ttdeci">Checksums checksums</div><div class="ttdoc">Whole-image checksums discovered.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00269">context.h:269</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a0c15ef634690890bf80719046faa0230"><div class="ttname"><a href="structaaruformat__context.html#a0c15ef634690890bf80719046faa0230">aaruformat_context::creator</a></div><div class="ttdeci">uint8_t * creator</div><div class="ttdoc">Who (person) created the image?</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00216">context.h:216</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a0d4e1977913ce67e85bced41c58e5dd2"><div class="ttname"><a href="structaaruformat__context.html#a0d4e1977913ce67e85bced41c58e5dd2">aaruformat_context::deduplicate</a></div><div class="ttdeci">bool deduplicate</div><div class="ttdoc">Storage deduplication active (duplicates coalesce).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00299">context.h:299</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a130daf19dbed426f1c4c6f82691bc054"><div class="ttname"><a href="structaaruformat__context.html#a130daf19dbed426f1c4c6f82691bc054">aaruformat_context::compression_enabled</a></div><div class="ttdeci">bool compression_enabled</div><div class="ttdoc">True if block compression enabled (writing path).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00300">context.h:300</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a154fda29a2c9292cfca51ca6b54eee4a"><div class="ttname"><a href="structaaruformat__context.html#a154fda29a2c9292cfca51ca6b54eee4a">aaruformat_context::cicm_block</a></div><div class="ttdeci">uint8_t * cicm_block</div><div class="ttdoc">CICM XML payload.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00214">context.h:214</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1614b9ffbd5e4661a2483eb3f68f8fd1"><div class="ttname"><a href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">aaruformat_context::sector_cpr_mai</a></div><div class="ttdeci">uint8_t * sector_cpr_mai</div><div class="ttdoc">DVD sector CPR_MAI (6 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00207">context.h:207</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a18bee1dd72fd1ca4957ff6ddfebce343"><div class="ttname"><a href="structaaruformat__context.html#a18bee1dd72fd1ca4957ff6ddfebce343">aaruformat_context::sector_hash_map</a></div><div class="ttdeci">hash_map_t * sector_hash_map</div><div class="ttdoc">Deduplication hash map (fingerprint-&gt;entry mapping).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00253">context.h:253</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1d021776e9101370c7e6ed00c8049be1"><div class="ttname"><a href="structaaruformat__context.html#a1d021776e9101370c7e6ed00c8049be1">aaruformat_context::sector_prefix_corrected</a></div><div class="ttdeci">uint8_t * sector_prefix_corrected</div><div class="ttdoc">Corrected variant (post error correction) if stored.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00200">context.h:200</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1d5ad658b9219c4b3838fcb042742e4e"><div class="ttname"><a href="structaaruformat__context.html#a1d5ad658b9219c4b3838fcb042742e4e">aaruformat_context::user_data_ddt</a></div><div class="ttdeci">uint64_t * user_data_ddt</div><div class="ttdoc">Legacy flat DDT pointer (NULL when using v2 mini/big arrays).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00181">context.h:181</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a21dffad51cfb58f5f71f7babee2aaceb"><div class="ttname"><a href="structaaruformat__context.html#a21dffad51cfb58f5f71f7babee2aaceb">aaruformat_context::sha256_context</a></div><div class="ttdeci">sha256_ctx sha256_context</div><div class="ttdoc">Opaque SHA-256 context for streaming updates.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00272">context.h:272</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a2e2c23ecc1d15087ef46e2591c47194a"><div class="ttname"><a href="structaaruformat__context.html#a2e2c23ecc1d15087ef46e2591c47194a">aaruformat_context::calculating_sha256</a></div><div class="ttdeci">bool calculating_sha256</div><div class="ttdoc">True if whole-image SHA-256 being calculated on-the-fly.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00275">context.h:275</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a329dda508cb897dc7871d2d1c0434792"><div class="ttname"><a href="structaaruformat__context.html#a329dda508cb897dc7871d2d1c0434792">aaruformat_context::drive_firmware_revision</a></div><div class="ttdeci">uint8_t * drive_firmware_revision</div><div class="ttdoc">Firmware revision of the drive used to read the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00228">context.h:228</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a33b54e4325c94ad69d97f9cf5bdae68f"><div class="ttname"><a href="structaaruformat__context.html#a33b54e4325c94ad69d97f9cf5bdae68f">aaruformat_context::media_serial_number</a></div><div class="ttdeci">uint8_t * media_serial_number</div><div class="ttdoc">Serial number of the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00221">context.h:221</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a3bfc3fceaaf015830913fd7efa794e5a"><div class="ttname"><a href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">aaruformat_context::sector_ied</a></div><div class="ttdeci">uint8_t * sector_ied</div><div class="ttdoc">DVD sector IED (2 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00206">context.h:206</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a3c44b0cbcfb4586ce666dcd97a3dd85a"><div class="ttname"><a href="structaaruformat__context.html#a3c44b0cbcfb4586ce666dcd97a3dd85a">aaruformat_context::md5_context</a></div><div class="ttdeci">md5_ctx md5_context</div><div class="ttdoc">Opaque MD5 context for streaming updates.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00270">context.h:270</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a3c7b902731274622296d04564b193b64"><div class="ttname"><a href="structaaruformat__context.html#a3c7b902731274622296d04564b193b64">aaruformat_context::user_data_ddt2</a></div><div class="ttdeci">uint64_t * user_data_ddt2</div><div class="ttdoc">DDT entries (big variant) primary/secondary current.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00187">context.h:187</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a3e2bbe8986b7cd7d36c13b48d6e7e3ce"><div class="ttname"><a href="structaaruformat__context.html#a3e2bbe8986b7cd7d36c13b48d6e7e3ce">aaruformat_context::metadata_block_header</a></div><div class="ttdeci">MetadataBlockHeader metadata_block_header</div><div class="ttdoc">Metadata block header.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00230">context.h:230</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a413a99e4e86b7121adca2cfce8f02d63"><div class="ttname"><a href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">aaruformat_context::sector_prefix</a></div><div class="ttdeci">uint8_t * sector_prefix</div><div class="ttdoc">Raw per-sector prefix (e.g., sync+header) uncorrected.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00199">context.h:199</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a46d0ccdc69758165c0468afbd05b9ffe"><div class="ttname"><a href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">aaruformat_context::sector_suffix_ddt2</a></div><div class="ttdeci">uint64_t * sector_suffix_ddt2</div><div class="ttdoc">CD sector suffix DDT V2.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00186">context.h:186</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4783c528aec3e854986885077c5d5854"><div class="ttname"><a href="structaaruformat__context.html#a4783c528aec3e854986885077c5d5854">aaruformat_context::tape_files</a></div><div class="ttdeci">tapeFileHashEntry * tape_files</div><div class="ttdoc">Hash table root for tape files.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00303">context.h:303</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4bbf867b2c93fdbf959ce6e1a5f0d0a4"><div class="ttname"><a href="structaaruformat__context.html#a4bbf867b2c93fdbf959ce6e1a5f0d0a4">aaruformat_context::cached_ddt_offset</a></div><div class="ttdeci">uint64_t cached_ddt_offset</div><div class="ttdoc">File offset of currently cached secondary DDT (0=none).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00190">context.h:190</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4d514102386b48bd51ac82c27bf9920a"><div class="ttname"><a href="structaaruformat__context.html#a4d514102386b48bd51ac82c27bf9920a">aaruformat_context::is_tape</a></div><div class="ttdeci">bool is_tape</div><div class="ttdoc">True if the image is a tape image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00305">context.h:305</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4dc244e21a520e90abd961c38eb6d9ae"><div class="ttname"><a href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">aaruformat_context::sector_edc</a></div><div class="ttdeci">uint8_t * sector_edc</div><div class="ttdoc">DVD sector EDC (4 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00208">context.h:208</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4e4c12388d90a11cf14266d1215ce13e"><div class="ttname"><a href="structaaruformat__context.html#a4e4c12388d90a11cf14266d1215ce13e">aaruformat_context::calculating_sha1</a></div><div class="ttdeci">bool calculating_sha1</div><div class="ttdoc">True if whole-image SHA-1 being calculated on-the-fly.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00274">context.h:274</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4ecbf4064d4ab0440e922e1c096b38dc"><div class="ttname"><a href="structaaruformat__context.html#a4ecbf4064d4ab0440e922e1c096b38dc">aaruformat_context::media_model</a></div><div class="ttdeci">uint8_t * media_model</div><div class="ttdoc">Model of the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00220">context.h:220</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a505f32de424a033246348d9fa35f9b19"><div class="ttname"><a href="structaaruformat__context.html#a505f32de424a033246348d9fa35f9b19">aaruformat_context::drive_serial_number</a></div><div class="ttdeci">uint8_t * drive_serial_number</div><div class="ttdoc">Serial number of the drive used to read the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00226">context.h:226</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a510b72290e2bd50e02ef8a2387aa829d"><div class="ttname"><a href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">aaruformat_context::ecc_cd_context</a></div><div class="ttdeci">CdEccContext * ecc_cd_context</div><div class="ttdoc">CD ECC/EDC helper tables (allocated on demand).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00248">context.h:248</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a5ec94a7912a165e5e7cacbeb8b65cbdf"><div class="ttname"><a href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">aaruformat_context::sector_suffix_ddt</a></div><div class="ttdeci">uint32_t * sector_suffix_ddt</div><div class="ttdoc">Legacy CD sector suffix DDT.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00184">context.h:184</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a614d6f01d563ea57650ce0bbfecfa08d"><div class="ttname"><a href="structaaruformat__context.html#a614d6f01d563ea57650ce0bbfecfa08d">aaruformat_context::drive_manufacturer</a></div><div class="ttdeci">uint8_t * drive_manufacturer</div><div class="ttdoc">Manufacturer of the drive used to read the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00224">context.h:224</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a62885cab6ef674fd27b4de32ab4ee346"><div class="ttname"><a href="structaaruformat__context.html#a62885cab6ef674fd27b4de32ab4ee346">aaruformat_context::in_memory_ddt</a></div><div class="ttdeci">bool in_memory_ddt</div><div class="ttdoc">True if primary (and possibly secondary) DDT loaded.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00196">context.h:196</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a64870438f8f560a0b9973dedb3dd7e0e"><div class="ttname"><a href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">aaruformat_context::sector_suffix</a></div><div class="ttdeci">uint8_t * sector_suffix</div><div class="ttdoc">Raw per-sector suffix (EDC/ECC) uncorrected.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00201">context.h:201</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a670dec8d59407989fefc361dc26c6832"><div class="ttname"><a href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">aaruformat_context::header</a></div><div class="ttdeci">AaruHeaderV2 header</div><div class="ttdoc">Parsed container header (v2).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00175">context.h:175</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#l00292">context.h:292</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a705ef2714c4773514c23a56371f42a0f"><div class="ttname"><a href="structaaruformat__context.html#a705ef2714c4773514c23a56371f42a0f">aaruformat_context::tape_ddt</a></div><div class="ttdeci">TapeDdtHashEntry * tape_ddt</div><div class="ttdoc">Hash table root for tape DDT entries.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00182">context.h:182</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a729b87257c0b5d1e9abf1af133a4b0f3"><div class="ttname"><a href="structaaruformat__context.html#a729b87257c0b5d1e9abf1af133a4b0f3">aaruformat_context::spamsum_context</a></div><div class="ttdeci">spamsum_ctx * spamsum_context</div><div class="ttdoc">Opaque SpamSum context for streaming updates.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00267">context.h:267</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a73005ba88069ba590ffc9660dc2bc7a5"><div class="ttname"><a href="structaaruformat__context.html#a73005ba88069ba590ffc9660dc2bc7a5">aaruformat_context::cicm_block_header</a></div><div class="ttdeci">CicmMetadataBlock cicm_block_header</div><div class="ttdoc">CICM metadata header (if present).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00231">context.h:231</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a74672215c728bb14ad860c96969a56dc"><div class="ttname"><a href="structaaruformat__context.html#a74672215c728bb14ad860c96969a56dc">aaruformat_context::sector_prefix_offset</a></div><div class="ttdeci">size_t sector_prefix_offset</div><div class="ttdoc">Current position in sector_prefix.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00286">context.h:286</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a77d9c8c852de1d955bceb4cfc50557ce"><div class="ttname"><a href="structaaruformat__context.html#a77d9c8c852de1d955bceb4cfc50557ce">aaruformat_context::drive_model</a></div><div class="ttdeci">uint8_t * drive_model</div><div class="ttdoc">Model of the drive used to read the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00225">context.h:225</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#l00174">context.h:174</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a80b7de958916f11cc61ef6871a376a92"><div class="ttname"><a href="structaaruformat__context.html#a80b7de958916f11cc61ef6871a376a92">aaruformat_context::writing_buffer</a></div><div class="ttdeci">uint8_t * writing_buffer</div><div class="ttdoc">Accumulation buffer for current block data.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00280">context.h:280</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a8317a42c16f1a140053f01808929f43f"><div class="ttname"><a href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">aaruformat_context::sector_prefix_ddt2</a></div><div class="ttdeci">uint64_t * sector_prefix_ddt2</div><div class="ttdoc">CD sector prefix DDT V2.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00185">context.h:185</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a865120510888fac8bb3597b57d515ba7"><div class="ttname"><a href="structaaruformat__context.html#a865120510888fac8bb3597b57d515ba7">aaruformat_context::calculating_spamsum</a></div><div class="ttdeci">bool calculating_spamsum</div><div class="ttdoc">True if whole-image SpamSum being calculated on-the-fly.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00276">context.h:276</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a88effb2eb082320b5b31d729981cf2d4"><div class="ttname"><a href="structaaruformat__context.html#a88effb2eb082320b5b31d729981cf2d4">aaruformat_context::primary_ddt_offset</a></div><div class="ttdeci">uint64_t primary_ddt_offset</div><div class="ttdoc">File offset of the primary DDT v2 table.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00192">context.h:192</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a8b769e9fb9467aa11d4a2936cf5cf5ed"><div class="ttname"><a href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">aaruformat_context::mediaTags</a></div><div class="ttdeci">mediaTagEntry * mediaTags</div><div class="ttdoc">Hash table of extra media tags (uthash root).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00264">context.h:264</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a8b89a7e0e6369dad38e23dabaf4b49a4"><div class="ttname"><a href="structaaruformat__context.html#a8b89a7e0e6369dad38e23dabaf4b49a4">aaruformat_context::blake3_context</a></div><div class="ttdeci">blake3_hasher * blake3_context</div><div class="ttdoc">Opaque BLAKE3 context for streaming updates.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00268">context.h:268</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a8be6dd9da00d771d24c7a6295f1c1d02"><div class="ttname"><a href="structaaruformat__context.html#a8be6dd9da00d771d24c7a6295f1c1d02">aaruformat_context::calculating_blake3</a></div><div class="ttdeci">bool calculating_blake3</div><div class="ttdoc">True if whole-image BLAKE3 being calculated on-the-fly.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00277">context.h:277</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a8ffb62d849b6e0fbe5a4865b2ca7328f"><div class="ttname"><a href="structaaruformat__context.html#a8ffb62d849b6e0fbe5a4865b2ca7328f">aaruformat_context::dump_hardware_entries_with_data</a></div><div class="ttdeci">struct DumpHardwareEntriesWithData * dump_hardware_entries_with_data</div><div class="ttdoc">Array of dump hardware entries + strings.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00212">context.h:212</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a95770f959cae3b6b34e2b1ae592a7136"><div class="ttname"><a href="structaaruformat__context.html#a95770f959cae3b6b34e2b1ae592a7136">aaruformat_context::calculating_md5</a></div><div class="ttdeci">bool calculating_md5</div><div class="ttdoc">True if whole-image MD5 being calculated on-the-fly.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00273">context.h:273</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a9ac9d12e8fde7a69c01cdf2dc32f33bd"><div class="ttname"><a href="structaaruformat__context.html#a9ac9d12e8fde7a69c01cdf2dc32f33bd">aaruformat_context::geometry_block</a></div><div class="ttdeci">GeometryBlockHeader geometry_block</div><div class="ttdoc">Logical geometry block (if present).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00229">context.h:229</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a9bb3ead5fcb320a1a1b883a9eb1217d8"><div class="ttname"><a href="structaaruformat__context.html#a9bb3ead5fcb320a1a1b883a9eb1217d8">aaruformat_context::sector_suffix_offset</a></div><div class="ttdeci">size_t sector_suffix_offset</div><div class="ttdoc">Current position in sector_suffix.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00287">context.h:287</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a9dbc317eb6fb1f8ece6305c47f5a3e89"><div class="ttname"><a href="structaaruformat__context.html#a9dbc317eb6fb1f8ece6305c47f5a3e89">aaruformat_context::cached_secondary_ddt2</a></div><div class="ttdeci">uint64_t * cached_secondary_ddt2</div><div class="ttdoc">Cached secondary table (big entries) or NULL.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00188">context.h:188</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a9e7ebc6897142938452338bc5a882dd8"><div class="ttname"><a href="structaaruformat__context.html#a9e7ebc6897142938452338bc5a882dd8">aaruformat_context::json_block</a></div><div class="ttdeci">uint8_t * json_block</div><div class="ttdoc">JSON metadata block payload (UTF-8).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00215">context.h:215</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aa3d0670124a4fbe88c485c2b67d1ddbc"><div class="ttname"><a href="structaaruformat__context.html#aa3d0670124a4fbe88c485c2b67d1ddbc">aaruformat_context::media_part_number</a></div><div class="ttdeci">uint8_t * media_part_number</div><div class="ttdoc">Part number of the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00223">context.h:223</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aa943f49c5e77c98bc4cddc9d0c2ae284"><div class="ttname"><a href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">aaruformat_context::sector_decrypted_title_key</a></div><div class="ttdeci">uint8_t * sector_decrypted_title_key</div><div class="ttdoc">DVD decrypted title key (5 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00209">context.h:209</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aaa66c73269576f55c8946c741e02e34f"><div class="ttname"><a href="structaaruformat__context.html#aaa66c73269576f55c8946c741e02e34f">aaruformat_context::json_block_header</a></div><div class="ttdeci">AaruMetadataJsonBlockHeader json_block_header</div><div class="ttdoc">JSON metadata block header (if present).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00233">context.h:233</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aaf16c9ee5b05bac1ef44d29abef6134a"><div class="ttname"><a href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">aaruformat_context::sector_subchannel</a></div><div class="ttdeci">uint8_t * sector_subchannel</div><div class="ttdoc">Raw 96-byte subchannel (if captured).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00203">context.h:203</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ab08395cd8ed98def2b5886c35fbad605"><div class="ttname"><a href="structaaruformat__context.html#ab08395cd8ed98def2b5886c35fbad605">aaruformat_context::comments</a></div><div class="ttdeci">uint8_t * comments</div><div class="ttdoc">Image comments.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00218">context.h:218</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#l00176">context.h:176</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#l00252">context.h:252</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ac6734b2de73a4b6147aadc49bf3e96f8"><div class="ttname"><a href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">aaruformat_context::mode2_subheaders</a></div><div class="ttdeci">uint8_t * mode2_subheaders</div><div class="ttdoc">MODE2 Form1/Form2 8-byte subheaders (concatenated).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00204">context.h:204</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#l00260">context.h:260</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_acc9cdfdd4be56c4f7016a37e218cee47"><div class="ttname"><a href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">aaruformat_context::sector_id</a></div><div class="ttdeci">uint8_t * sector_id</div><div class="ttdoc">DVD sector ID (4 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00205">context.h:205</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_accbbc605e1a1607fdf9b6f54f7a9af2f"><div class="ttname"><a href="structaaruformat__context.html#accbbc605e1a1607fdf9b6f54f7a9af2f">aaruformat_context::dump_hardware_header</a></div><div class="ttdeci">DumpHardwareHeader dump_hardware_header</div><div class="ttdoc">Dump hardware header.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00232">context.h:232</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ad1e28bac5a6c9bfdb8d18793686fc755"><div class="ttname"><a href="structaaruformat__context.html#ad1e28bac5a6c9bfdb8d18793686fc755">aaruformat_context::sha1_context</a></div><div class="ttdeci">sha1_ctx sha1_context</div><div class="ttdoc">Opaque SHA-1 context for streaming updates.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00271">context.h:271</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ad3d5494e23b07418e9fbd22c3771e534"><div class="ttname"><a href="structaaruformat__context.html#ad3d5494e23b07418e9fbd22c3771e534">aaruformat_context::readableSectorTags</a></div><div class="ttdeci">bool * readableSectorTags</div><div class="ttdoc">Per-sector boolean array (optical tags read successfully?).</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_ad7ca524fb6cece835566c268258b9a54"><div class="ttname"><a href="structaaruformat__context.html#ad7ca524fb6cece835566c268258b9a54">aaruformat_context::tape_partitions</a></div><div class="ttdeci">TapePartitionHashEntry * tape_partitions</div><div class="ttdoc">Hash table root for tape partitions.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00304">context.h:304</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ad9e40dfb41ec80b902869354b052dd7d"><div class="ttname"><a href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">aaruformat_context::sector_prefix_ddt</a></div><div class="ttdeci">uint32_t * sector_prefix_ddt</div><div class="ttdoc">Legacy CD sector prefix DDT (deprecated by *2).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00183">context.h:183</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_adc67f6a6ef1602648bb064d47eb1fe88"><div class="ttname"><a href="structaaruformat__context.html#adc67f6a6ef1602648bb064d47eb1fe88">aaruformat_context::lzma_dict_size</a></div><div class="ttdeci">uint32_t lzma_dict_size</div><div class="ttdoc">LZMA dictionary size (writing path).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00298">context.h:298</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_adcabe3b59f532d036adf16b78faba58e"><div class="ttname"><a href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">aaruformat_context::track_entries</a></div><div class="ttdeci">TrackEntry * track_entries</div><div class="ttdoc">Full track list (tracksHeader.entries elements).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00242">context.h:242</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_adfcfa339aded095de2143ffff0931288"><div class="ttname"><a href="structaaruformat__context.html#adfcfa339aded095de2143ffff0931288">aaruformat_context::sector_suffix_corrected</a></div><div class="ttdeci">uint8_t * sector_suffix_corrected</div><div class="ttdoc">Corrected suffix if stored separately.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00202">context.h:202</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ae0df8ced37e331df99560d9773d7bad8"><div class="ttname"><a href="structaaruformat__context.html#ae0df8ced37e331df99560d9773d7bad8">aaruformat_context::metadata_block</a></div><div class="ttdeci">uint8_t * metadata_block</div><div class="ttdoc">Raw metadata UTF-16LE concatenated strings.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00213">context.h:213</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ae32b62ecd08a309c5848a5503b020689"><div class="ttname"><a href="structaaruformat__context.html#ae32b62ecd08a309c5848a5503b020689">aaruformat_context::cached_ddt_position</a></div><div class="ttdeci">uint64_t cached_ddt_position</div><div class="ttdoc">Position index of cached secondary DDT.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00191">context.h:191</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aeb5bda76e0ea176598a04be97b7d5683"><div class="ttname"><a href="structaaruformat__context.html#aeb5bda76e0ea176598a04be97b7d5683">aaruformat_context::media_title</a></div><div class="ttdeci">uint8_t * media_title</div><div class="ttdoc">Title of the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00217">context.h:217</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_afc6cf8ab181536febd804d18702d4d80"><div class="ttname"><a href="structaaruformat__context.html#afc6cf8ab181536febd804d18702d4d80">aaruformat_context::mapped_memory_ddt_size</a></div><div class="ttdeci">size_t mapped_memory_ddt_size</div><div class="ttdoc">Length of mmapped DDT if userDataDdt is mmapped.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00193">context.h:193</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_afd13345e6ab5072d97d9b3bbe238ecea"><div class="ttname"><a href="structaaruformat__context.html#afd13345e6ab5072d97d9b3bbe238ecea">aaruformat_context::media_manufacturer</a></div><div class="ttdeci">uint8_t * media_manufacturer</div><div class="ttdoc">Manufacturer of the media represented by the image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00219">context.h:219</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aff71b0229a1c4c78572cfdb0824e601e"><div class="ttname"><a href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">aaruformat_context::tracks_header</a></div><div class="ttdeci">TracksHeader tracks_header</div><div class="ttdoc">Tracks header (optical) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00244">context.h:244</a></div></div>
<div class="ttc" id="astructcrc64__ctx_html"><div class="ttname"><a href="structcrc64__ctx.html">crc64_ctx</a></div><div class="ttdoc">Minimal ECMA-182 CRC64 incremental state container (running value only).</div><div class="ttdef"><b>Definition</b> <a href="crc64_8h_source.html#l00055">crc64.h:56</a></div></div>
<div class="ttc" id="astructmediaTagEntry_html"><div class="ttname"><a href="structmediaTagEntry.html">mediaTagEntry</a></div><div class="ttdoc">Hash table entry for an arbitrary media tag (e.g., proprietary drive/medium descriptor).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00118">context.h:119</a></div></div>
<div class="ttc" id="astructmediaTagEntry_html_a334fc65b37efdfb624e804e98c398927"><div class="ttname"><a href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">mediaTagEntry::data</a></div><div class="ttdeci">uint8_t * data</div><div class="ttdoc">Tag data blob (opaque to library core); length bytes long.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00120">context.h:120</a></div></div>
<div class="ttc" id="astructmediaTagEntry_html_a95bf0de1de367f90491367921069c9e2"><div class="ttname"><a href="structmediaTagEntry.html#a95bf0de1de367f90491367921069c9e2">mediaTagEntry::type</a></div><div class="ttdeci">int32_t type</div><div class="ttdoc">Numeric type identifier.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00121">context.h:121</a></div></div>
<div class="ttc" id="astructmediaTagEntry_html_aa96c6684fd98145d0089d72957d2afa7"><div class="ttname"><a href="structmediaTagEntry.html#aa96c6684fd98145d0089d72957d2afa7">mediaTagEntry::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Length in bytes of data.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00122">context.h:122</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="close_8c.html">close.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.14.0 </li>
</ul>
</div>
</body>
</html>