<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libfuse: example/passthrough_ll.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>
<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 style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libfuse
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">passthrough_ll.c</div>  </div>
</div><!--header-->
<div class="contents">
<a href="passthrough__ll_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">  FUSE: Filesystem in Userspace</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">  Copyright (C) 2001-2007  Miklos Szeredi &lt;miklos@szeredi.hu&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">  This program can be distributed under the terms of the GNU GPL.</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">  See the file COPYING.</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#define _GNU_SOURCE</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#define FUSE_USE_VERSION 31</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="fuse__lowlevel_8h.html">fuse_lowlevel.h</a>&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;limits.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;dirent.h&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &lt;err.h&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#include &lt;sys/file.h&gt;</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &lt;sys/xattr.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">/* We are re-using pointers to our `struct lo_inode` and `struct</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">   lo_dirp` elements as inodes. This means that we must be able to</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">   store uintptr_t values in a fuse_ino_t variable. The following</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">   incantation checks this condition at compile time. */</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#if defined(__GNUC__) &amp;&amp; (__GNUC__ &gt; 4 || __GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt;= 6) &amp;&amp; !defined __cplusplus</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;_Static_assert(<span class="keyword">sizeof</span>(<a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a>) &gt;= <span class="keyword">sizeof</span>(uintptr_t),</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;               <span class="stringliteral">&quot;fuse_ino_t too small to hold uintptr_t values!&quot;</span>);</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">struct </span>_uintptr_to_must_hold_fuse_ino_t_dummy_struct \</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        { <span class="keywordtype">unsigned</span> _uintptr_to_must_hold_fuse_ino_t:</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;                        ((<span class="keyword">sizeof</span>(<a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a>) &gt;= <span class="keyword">sizeof</span>(uintptr_t)) ? 1 : -1); };</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keyword">struct </span>lo_inode {</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        <span class="keyword">struct </span>lo_inode *next; <span class="comment">/* protected by lo-&gt;mutex */</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <span class="keyword">struct </span>lo_inode *prev; <span class="comment">/* protected by lo-&gt;mutex */</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <span class="keywordtype">bool</span> is_symlink;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        ino_t ino;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        dev_t dev;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        uint64_t refcount; <span class="comment">/* protected by lo-&gt;mutex */</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;};</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        CACHE_NEVER,</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        CACHE_NORMAL,</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        CACHE_ALWAYS,</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;};</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keyword">struct </span>lo_data {</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        pthread_mutex_t mutex;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="keywordtype">int</span> debug;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        <span class="keywordtype">int</span> writeback;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordtype">int</span> flock;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keywordtype">int</span> xattr;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *source;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keywordtype">double</span> timeout;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <span class="keywordtype">int</span> cache;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <span class="keywordtype">int</span> timeout_set;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <span class="keyword">struct </span>lo_inode root; <span class="comment">/* protected by lo-&gt;mutex */</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;};</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structfuse__opt.html">fuse_opt</a> lo_opts[] = {</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        { <span class="stringliteral">&quot;writeback&quot;</span>,</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, writeback), 1 },</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        { <span class="stringliteral">&quot;no_writeback&quot;</span>,</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, writeback), 0 },</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        { <span class="stringliteral">&quot;source=%s&quot;</span>,</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, source), 0 },</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        { <span class="stringliteral">&quot;flock&quot;</span>,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, flock), 1 },</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        { <span class="stringliteral">&quot;no_flock&quot;</span>,</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, flock), 0 },</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        { <span class="stringliteral">&quot;xattr&quot;</span>,</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, xattr), 1 },</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        { <span class="stringliteral">&quot;no_xattr&quot;</span>,</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, xattr), 0 },</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        { <span class="stringliteral">&quot;timeout=%lf&quot;</span>,</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, timeout), 0 },</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        { <span class="stringliteral">&quot;timeout=&quot;</span>,</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, timeout_set), 1 },</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        { <span class="stringliteral">&quot;cache=never&quot;</span>,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, cache), CACHE_NEVER },</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        { <span class="stringliteral">&quot;cache=auto&quot;</span>,</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, cache), CACHE_NORMAL },</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        { <span class="stringliteral">&quot;cache=always&quot;</span>,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;          offsetof(<span class="keyword">struct</span> lo_data, cache), CACHE_ALWAYS },</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        <a class="code" href="fuse__opt_8h.html#aca35962e17d189ceb5447f8eea11bd33">FUSE_OPT_END</a></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;};</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>lo_data *lo_data(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req)</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;{</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keywordflow">return</span> (<span class="keyword">struct</span> lo_data *) <a class="code" href="fuse__lowlevel_8h.html#aab00273c65d124e44abcf2374f9c504b">fuse_req_userdata</a>(req);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;}</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>lo_inode *lo_inode(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino)</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;{</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordflow">if</span> (ino == <a class="code" href="fuse__lowlevel_8h.html#a14d7299559cf05272b838cfc6388ef91">FUSE_ROOT_ID</a>)</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;                <span class="keywordflow">return</span> &amp;lo_data(req)-&gt;root;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;                <span class="keywordflow">return</span> (<span class="keyword">struct</span> lo_inode *) (uintptr_t) ino;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;}</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> lo_fd(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino)</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;{</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keywordflow">return</span> lo_inode(req, ino)-&gt;fd;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;}</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="keyword">static</span> <span class="keywordtype">bool</span> lo_debug(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req)</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        <span class="keywordflow">return</span> lo_data(req)-&gt;debug != 0;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;}</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_init(<span class="keywordtype">void</span> *userdata,</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;                    <span class="keyword">struct</span> <a class="code" href="structfuse__conn__info.html">fuse_conn_info</a> *conn)</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;{</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        <span class="keyword">struct </span>lo_data *lo = (<span class="keyword">struct </span>lo_data*) userdata;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        <span class="keywordflow">if</span>(conn-&gt;<a class="code" href="structfuse__conn__info.html#a8a1c61f5d7cc14249fb6971165bb958e">capable</a> &amp; <a class="code" href="fuse__common_8h.html#a7686c11aaf80382189927b10b848d8c8">FUSE_CAP_EXPORT_SUPPORT</a>)</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;                conn-&gt;<a class="code" href="structfuse__conn__info.html#af45de81548b591f3004353a324e4e04d">want</a> |= <a class="code" href="fuse__common_8h.html#a7686c11aaf80382189927b10b848d8c8">FUSE_CAP_EXPORT_SUPPORT</a>;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="keywordflow">if</span> (lo-&gt;writeback &amp;&amp;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;            conn-&gt;<a class="code" href="structfuse__conn__info.html#a8a1c61f5d7cc14249fb6971165bb958e">capable</a> &amp; <a class="code" href="fuse__common_8h.html#a4839fce31097f4b4da7a1f01169228fa">FUSE_CAP_WRITEBACK_CACHE</a>) {</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                <span class="keywordflow">if</span> (lo-&gt;debug)</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                        fprintf(stderr, <span class="stringliteral">&quot;lo_init: activating writeback\n&quot;</span>);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                conn-&gt;<a class="code" href="structfuse__conn__info.html#af45de81548b591f3004353a324e4e04d">want</a> |= <a class="code" href="fuse__common_8h.html#a4839fce31097f4b4da7a1f01169228fa">FUSE_CAP_WRITEBACK_CACHE</a>;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        }</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        <span class="keywordflow">if</span> (lo-&gt;flock &amp;&amp; conn-&gt;<a class="code" href="structfuse__conn__info.html#a8a1c61f5d7cc14249fb6971165bb958e">capable</a> &amp; <a class="code" href="fuse__common_8h.html#afd06393448dbb60668f5a3bf0006f536">FUSE_CAP_FLOCK_LOCKS</a>) {</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;                <span class="keywordflow">if</span> (lo-&gt;debug)</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                        fprintf(stderr, <span class="stringliteral">&quot;lo_init: activating flock locks\n&quot;</span>);</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                conn-&gt;<a class="code" href="structfuse__conn__info.html#af45de81548b591f3004353a324e4e04d">want</a> |= <a class="code" href="fuse__common_8h.html#afd06393448dbb60668f5a3bf0006f536">FUSE_CAP_FLOCK_LOCKS</a>;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        }</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;}</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_getattr(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino,</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                             <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;{</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="keyword">struct </span>stat buf;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        <span class="keyword">struct </span>lo_data *lo = lo_data(req);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        (void) fi;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        res = fstatat(lo_fd(req, ino), <span class="stringliteral">&quot;&quot;</span>, &amp;buf, AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                <span class="keywordflow">return</span> (<span class="keywordtype">void</span>) <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, errno);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#ad28378dc569019c32acdb4995d70be18">fuse_reply_attr</a>(req, &amp;buf, lo-&gt;timeout);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;}</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> utimensat_empty_nofollow(<span class="keyword">struct</span> lo_inode *inode,</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                                    <span class="keyword">const</span> <span class="keyword">struct</span> timespec *tv)</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;{</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        <span class="keywordtype">char</span> procname[64];</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        <span class="keywordflow">if</span> (inode-&gt;is_symlink) {</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                res = utimensat(inode-&gt;fd, <span class="stringliteral">&quot;&quot;</span>, tv,</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                                AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;                <span class="keywordflow">if</span> (res == -1 &amp;&amp; errno == EINVAL) {</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;                        <span class="comment">/* Sorry, no race free way to set times on symlink. */</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;                        errno = EPERM;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;                }</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;                <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        }</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, inode-&gt;fd);</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;        <span class="keywordflow">return</span> utimensat(AT_FDCWD, procname, tv, 0);</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;}</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_setattr(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">struct</span> stat *attr,</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                       <span class="keywordtype">int</span> valid, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;{</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        <span class="keywordtype">char</span> procname[64];</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        <span class="keyword">struct </span>lo_inode *inode = lo_inode(req, ino);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="keywordtype">int</span> ifd = inode-&gt;fd;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        <span class="keywordflow">if</span> (valid &amp; FUSE_SET_ATTR_MODE) {</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                <span class="keywordflow">if</span> (fi) {</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                        res = fchmod(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, attr-&gt;st_mode);</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, ifd);</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                        res = chmod(procname, attr-&gt;st_mode);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;                }</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="keywordflow">if</span> (valid &amp; (FUSE_SET_ATTR_UID | FUSE_SET_ATTR_GID)) {</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;                uid_t uid = (valid &amp; FUSE_SET_ATTR_UID) ?</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;                        attr-&gt;st_uid : (uid_t) -1;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;                gid_t gid = (valid &amp; FUSE_SET_ATTR_GID) ?</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;                        attr-&gt;st_gid : (gid_t) -1;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                res = fchownat(ifd, <span class="stringliteral">&quot;&quot;</span>, uid, gid,</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;                               AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        }</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        <span class="keywordflow">if</span> (valid &amp; FUSE_SET_ATTR_SIZE) {</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                <span class="keywordflow">if</span> (fi) {</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                        res = ftruncate(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, attr-&gt;st_size);</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, ifd);</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                        res = truncate(procname, attr-&gt;st_size);</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                }</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        }</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="keywordflow">if</span> (valid &amp; (FUSE_SET_ATTR_ATIME | FUSE_SET_ATTR_MTIME)) {</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;                <span class="keyword">struct </span>timespec tv[2];</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;                tv[0].tv_sec = 0;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;                tv[1].tv_sec = 0;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;                tv[0].tv_nsec = UTIME_OMIT;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;                tv[1].tv_nsec = UTIME_OMIT;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;                <span class="keywordflow">if</span> (valid &amp; FUSE_SET_ATTR_ATIME_NOW)</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;                        tv[0].tv_nsec = UTIME_NOW;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (valid &amp; FUSE_SET_ATTR_ATIME)</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;                        tv[0] = attr-&gt;st_atim;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                <span class="keywordflow">if</span> (valid &amp; FUSE_SET_ATTR_MTIME_NOW)</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;                        tv[1].tv_nsec = UTIME_NOW;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (valid &amp; FUSE_SET_ATTR_MTIME)</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                        tv[1] = attr-&gt;st_mtim;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                <span class="keywordflow">if</span> (fi)</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;                        res = futimens(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, tv);</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                <span class="keywordflow">else</span></div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;                        res = utimensat_empty_nofollow(inode, tv);</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;        }</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        <span class="keywordflow">return</span> lo_getattr(req, ino, fi);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;out_err:</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        saverr = errno;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, saverr);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;}</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>lo_inode *lo_find(<span class="keyword">struct</span> lo_data *lo, <span class="keyword">struct</span> stat *st)</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;{</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        <span class="keyword">struct </span>lo_inode *p;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        <span class="keyword">struct </span>lo_inode *ret = NULL;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        pthread_mutex_lock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        <span class="keywordflow">for</span> (p = lo-&gt;root.next; p != &amp;lo-&gt;root; p = p-&gt;next) {</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;                <span class="keywordflow">if</span> (p-&gt;ino == st-&gt;st_ino &amp;&amp; p-&gt;dev == st-&gt;st_dev) {</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;                        assert(p-&gt;refcount &gt; 0);</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;                        ret = p;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;                        ret-&gt;refcount++;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;                }</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        }</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        pthread_mutex_unlock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;}</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> lo_do_lookup(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;                         <span class="keyword">struct</span> <a class="code" href="structfuse__entry__param.html">fuse_entry_param</a> *e)</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;{</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;        <span class="keywordtype">int</span> newfd;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="keyword">struct </span>lo_data *lo = lo_data(req);</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        <span class="keyword">struct </span>lo_inode *inode;</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        memset(e, 0, <span class="keyword">sizeof</span>(*e));</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        e-&gt;<a class="code" href="structfuse__entry__param.html#aa797a9f4152cae506ba479af8bbe2eb7">attr_timeout</a> = lo-&gt;timeout;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        e-&gt;<a class="code" href="structfuse__entry__param.html#a281b39b72e7ec574ba40d7341fd22c1d">entry_timeout</a> = lo-&gt;timeout;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        newfd = openat(lo_fd(req, parent), name, O_PATH | O_NOFOLLOW);</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="keywordflow">if</span> (newfd == -1)</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;                <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        res = fstatat(newfd, <span class="stringliteral">&quot;&quot;</span>, &amp;e-&gt;<a class="code" href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">attr</a>, AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        inode = lo_find(lo_data(req), &amp;e-&gt;<a class="code" href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">attr</a>);</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="keywordflow">if</span> (inode) {</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;                close(newfd);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;                newfd = -1;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;                <span class="keyword">struct </span>lo_inode *prev, *next;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;                saverr = ENOMEM;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;                inode = calloc(1, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> lo_inode));</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;                <span class="keywordflow">if</span> (!inode)</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;                inode-&gt;is_symlink = S_ISLNK(e-&gt;<a class="code" href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">attr</a>.st_mode);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;                inode-&gt;refcount = 1;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                inode-&gt;fd = newfd;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;                inode-&gt;ino = e-&gt;<a class="code" href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">attr</a>.st_ino;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                inode-&gt;dev = e-&gt;<a class="code" href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">attr</a>.st_dev;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;                pthread_mutex_lock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;                prev = &amp;lo-&gt;root;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;                next = prev-&gt;next;</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                next-&gt;prev = inode;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                inode-&gt;next = next;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;                inode-&gt;prev = prev;</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                prev-&gt;next = inode;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                pthread_mutex_unlock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        }</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        e-&gt;<a class="code" href="structfuse__entry__param.html#a285ba89754871772d940fa4fb736bce3">ino</a> = (uintptr_t) inode;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;  %lli/%s -&gt; %lli\n&quot;</span>,</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;                        (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>) parent, name, (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long) e-&gt;<a class="code" href="structfuse__entry__param.html#a285ba89754871772d940fa4fb736bce3">ino</a>);</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;out_err:</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        saverr = errno;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="keywordflow">if</span> (newfd != -1)</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;                close(newfd);</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        <span class="keywordflow">return</span> saverr;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;}</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_lookup(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;{</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <span class="keyword">struct </span><a class="code" href="structfuse__entry__param.html">fuse_entry_param</a> e;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        <span class="keywordtype">int</span> err;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_lookup(parent=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, name=%s)\n&quot;</span>,</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;                        parent, name);</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        err = lo_do_lookup(req, parent, name, &amp;e);</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, err);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a672c45e126cd240f4bcd59bf9b7e3708">fuse_reply_entry</a>(req, &amp;e);</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;}</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_mknod_symlink(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent,</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                             <span class="keyword">const</span> <span class="keywordtype">char</span> *name, mode_t mode, dev_t rdev,</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                             <span class="keyword">const</span> <span class="keywordtype">char</span> *link)</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;{</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        <span class="keywordtype">int</span> newfd = -1;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;        <span class="keyword">struct </span>lo_inode *inode;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;        <span class="keyword">struct </span>lo_inode *dir = lo_inode(req, parent);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        <span class="keyword">struct </span><a class="code" href="structfuse__entry__param.html">fuse_entry_param</a> e;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;        saverr = ENOMEM;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;        inode = calloc(1, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> lo_inode));</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        <span class="keywordflow">if</span> (!inode)</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        <span class="keywordflow">if</span> (S_ISDIR(mode))</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                res = mkdirat(dir-&gt;fd, name, mode);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (S_ISLNK(mode))</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                res = symlinkat(link, dir-&gt;fd, name);</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                res = mknodat(dir-&gt;fd, name, mode, rdev);</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        saverr = errno;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;        saverr = lo_do_lookup(req, parent, name, &amp;e);</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        <span class="keywordflow">if</span> (saverr)</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;  %lli/%s -&gt; %lli\n&quot;</span>,</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                        (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>) parent, name, (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>) e.<a class="code" href="structfuse__entry__param.html#a285ba89754871772d940fa4fb736bce3">ino</a>);</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a672c45e126cd240f4bcd59bf9b7e3708">fuse_reply_entry</a>(req, &amp;e);</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;out:</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        <span class="keywordflow">if</span> (newfd != -1)</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;                close(newfd);</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        free(inode);</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, saverr);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;}</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_mknod(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent,</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                     <span class="keyword">const</span> <span class="keywordtype">char</span> *name, mode_t mode, dev_t rdev)</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;{</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;        lo_mknod_symlink(req, parent, name, mode, rdev, NULL);</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;}</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_mkdir(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                     mode_t mode)</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;{</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        lo_mknod_symlink(req, parent, name, S_IFDIR | mode, 0, NULL);</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;}</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_symlink(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <span class="keyword">const</span> <span class="keywordtype">char</span> *link,</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                       <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;{</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        lo_mknod_symlink(req, parent, name, S_IFLNK, 0, link);</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;}</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> linkat_empty_nofollow(<span class="keyword">struct</span> lo_inode *inode, <span class="keywordtype">int</span> dfd,</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                                 <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        <span class="keywordtype">char</span> procname[64];</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        <span class="keywordflow">if</span> (inode-&gt;is_symlink) {</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                res = linkat(inode-&gt;fd, <span class="stringliteral">&quot;&quot;</span>, dfd, name, AT_EMPTY_PATH);</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                <span class="keywordflow">if</span> (res == -1 &amp;&amp; (errno == ENOENT || errno == EINVAL)) {</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;                        <span class="comment">/* Sorry, no race free way to hard-link a symlink. */</span></div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                        errno = EPERM;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;                }</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;                <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        }</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, inode-&gt;fd);</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        <span class="keywordflow">return</span> linkat(AT_FDCWD, procname, dfd, name, AT_SYMLINK_FOLLOW);</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;}</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_link(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent,</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                    <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;{</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        <span class="keyword">struct </span>lo_data *lo = lo_data(req);</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;        <span class="keyword">struct </span>lo_inode *inode = lo_inode(req, ino);</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;        <span class="keyword">struct </span><a class="code" href="structfuse__entry__param.html">fuse_entry_param</a> e;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;        memset(&amp;e, 0, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structfuse__entry__param.html">fuse_entry_param</a>));</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;        e.<a class="code" href="structfuse__entry__param.html#aa797a9f4152cae506ba479af8bbe2eb7">attr_timeout</a> = lo-&gt;timeout;</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        e.<a class="code" href="structfuse__entry__param.html#a281b39b72e7ec574ba40d7341fd22c1d">entry_timeout</a> = lo-&gt;timeout;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        res = linkat_empty_nofollow(inode, lo_fd(req, parent), name);</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;        res = fstatat(inode-&gt;fd, <span class="stringliteral">&quot;&quot;</span>, &amp;e.<a class="code" href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">attr</a>, AT_EMPTY_PATH | AT_SYMLINK_NOFOLLOW);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;        pthread_mutex_lock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;        inode-&gt;refcount++;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        pthread_mutex_unlock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        e.<a class="code" href="structfuse__entry__param.html#a285ba89754871772d940fa4fb736bce3">ino</a> = (uintptr_t) inode;</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;  %lli/%s -&gt; %lli\n&quot;</span>,</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;                        (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>) parent, name,</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;                        (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long) e.<a class="code" href="structfuse__entry__param.html#a285ba89754871772d940fa4fb736bce3">ino</a>);</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a672c45e126cd240f4bcd59bf9b7e3708">fuse_reply_entry</a>(req, &amp;e);</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;out_err:</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;        saverr = errno;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, saverr);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;}</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_rmdir(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        res = unlinkat(lo_fd(req, parent), name, AT_REMOVEDIR);</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, res == -1 ? errno : 0);</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;}</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_rename(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;                      <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> newparent, <span class="keyword">const</span> <span class="keywordtype">char</span> *newname,</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;                      <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags)</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;{</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        <span class="keywordflow">if</span> (flags) {</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, EINVAL);</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        }</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;        res = renameat(lo_fd(req, parent), name,</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;                        lo_fd(req, newparent), newname);</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, res == -1 ? errno : 0);</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;}</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_unlink(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;{</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;        res = unlinkat(lo_fd(req, parent), name, 0);</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, res == -1 ? errno : 0);</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;}</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> unref_inode(<span class="keyword">struct</span> lo_data *lo, <span class="keyword">struct</span> lo_inode *inode, uint64_t n)</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;{</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        <span class="keywordflow">if</span> (!inode)</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;        pthread_mutex_lock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;        assert(inode-&gt;refcount &gt;= n);</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;        inode-&gt;refcount -= n;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;        <span class="keywordflow">if</span> (!inode-&gt;refcount) {</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;                <span class="keyword">struct </span>lo_inode *prev, *next;</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;                prev = inode-&gt;prev;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;                next = inode-&gt;next;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;                next-&gt;prev = prev;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;                prev-&gt;next = next;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;                pthread_mutex_unlock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;                close(inode-&gt;fd);</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;                free(inode);</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;                pthread_mutex_unlock(&amp;lo-&gt;mutex);</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;        }</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;}</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_forget_one(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, uint64_t nlookup)</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;{</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;        <span class="keyword">struct </span>lo_data *lo = lo_data(req);</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        <span class="keyword">struct </span>lo_inode *inode = lo_inode(req, ino);</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req)) {</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;  forget %lli %lli -%lli\n&quot;</span>,</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;                        (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>) ino,</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;                        (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>) inode-&gt;refcount,</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;                        (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>) nlookup);</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        }</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;        unref_inode(lo, inode, nlookup);</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;}</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_forget(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, uint64_t nlookup)</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;{</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;        lo_forget_one(req, ino, nlookup);</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a85ae91390a6704dc26f8d80fed7d5678">fuse_reply_none</a>(req);</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;}</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_forget_multi(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <span class="keywordtype">size_t</span> count,</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;                                <span class="keyword">struct</span> fuse_forget_data *forgets)</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;{</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        <span class="keywordflow">for</span> (i = 0; i &lt; count; i++)</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;                lo_forget_one(req, forgets[i].ino, forgets[i].nlookup);</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a85ae91390a6704dc26f8d80fed7d5678">fuse_reply_none</a>(req);</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;}</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_readlink(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino)</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;{</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;        <span class="keywordtype">char</span> buf[PATH_MAX + 1];</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;        res = readlinkat(lo_fd(req, ino), <span class="stringliteral">&quot;&quot;</span>, buf, <span class="keyword">sizeof</span>(buf));</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;                <span class="keywordflow">return</span> (<span class="keywordtype">void</span>) <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, errno);</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;        <span class="keywordflow">if</span> (res == <span class="keyword">sizeof</span>(buf))</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;                <span class="keywordflow">return</span> (<span class="keywordtype">void</span>) <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, ENAMETOOLONG);</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;        buf[res] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a5a5872d7f73f0bd593e00788a4c7bbb7">fuse_reply_readlink</a>(req, buf);</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;}</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;<span class="keyword">struct </span>lo_dirp {</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        DIR *dp;</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;        <span class="keyword">struct </span>dirent *entry;</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;        off_t offset;</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;};</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>lo_dirp *lo_dirp(<span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;{</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;        <span class="keywordflow">return</span> (<span class="keyword">struct</span> lo_dirp *) (uintptr_t) fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>;</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;}</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_opendir(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;{</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;        <span class="keywordtype">int</span> error = ENOMEM;</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;        <span class="keyword">struct </span>lo_data *lo = lo_data(req);</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;        <span class="keyword">struct </span>lo_dirp *d = calloc(1, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> lo_dirp));</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;        <span class="keywordflow">if</span> (d == NULL)</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;                <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;        d-&gt;fd = openat(lo_fd(req, ino), <span class="stringliteral">&quot;.&quot;</span>, O_RDONLY);</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;        <span class="keywordflow">if</span> (d-&gt;fd == -1)</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;                <span class="keywordflow">goto</span> out_errno;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;        d-&gt;dp = fdopendir(d-&gt;fd);</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;        <span class="keywordflow">if</span> (d-&gt;dp == NULL)</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;                <span class="keywordflow">goto</span> out_errno;</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;        d-&gt;offset = 0;</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        d-&gt;entry = NULL;</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;        fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a> = (uintptr_t) d;</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;        <span class="keywordflow">if</span> (lo-&gt;cache == CACHE_ALWAYS)</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;                fi-&gt;<a class="code" href="structfuse__file__info.html#a23a64eaecbf83f99aba8ee79e6de2780">keep_cache</a> = 1;</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a170f8c6b953d70928e83bcecee43bfdc">fuse_reply_open</a>(req, fi);</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;out_errno:</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;        error = errno;</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;out_err:</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;        <span class="keywordflow">if</span> (d) {</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;                <span class="keywordflow">if</span> (d-&gt;fd != -1)</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;                        close(d-&gt;fd);</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;                free(d);</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;        }</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, error);</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;}</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> is_dot_or_dotdot(<span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;{</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;        <span class="keywordflow">return</span> name[0] == <span class="charliteral">&#39;.&#39;</span> &amp;&amp; (name[1] == <span class="charliteral">&#39;\0&#39;</span> ||</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;                                  (name[1] == <span class="charliteral">&#39;.&#39;</span> &amp;&amp; name[2] == <span class="charliteral">&#39;\0&#39;</span>));</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;}</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_do_readdir(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">size_t</span> size,</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;                          off_t offset, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi, <span class="keywordtype">int</span> plus)</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;{</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;        <span class="keyword">struct </span>lo_dirp *d = lo_dirp(fi);</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        <span class="keywordtype">char</span> *buf;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;        <span class="keywordtype">char</span> *p;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;        <span class="keywordtype">size_t</span> rem = size;</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;        <span class="keywordtype">int</span> err;</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;        (void) ino;</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        buf = calloc(1, size);</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;        <span class="keywordflow">if</span> (!buf) {</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;                err = ENOMEM;</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;                <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;        }</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;        p = buf;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;        <span class="keywordflow">if</span> (offset != d-&gt;offset) {</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;                seekdir(d-&gt;dp, offset);</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;                d-&gt;entry = NULL;</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                d-&gt;offset = offset;</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;        }</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;        <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;                <span class="keywordtype">size_t</span> entsize;</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                off_t nextoff;</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">char</span> *name;</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;                <span class="keywordflow">if</span> (!d-&gt;entry) {</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;                        errno = 0;</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;                        d-&gt;entry = readdir(d-&gt;dp);</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;                        <span class="keywordflow">if</span> (!d-&gt;entry) {</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;                                <span class="keywordflow">if</span> (errno) {  <span class="comment">// Error</span></div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;                                        err = errno;</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;                                        <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;                                } <span class="keywordflow">else</span> {  <span class="comment">// End of stream</span></div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;                                        <span class="keywordflow">break</span>; </div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;                                }</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;                        }</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;                }</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;                nextoff = d-&gt;entry-&gt;d_off;</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;                name = d-&gt;entry-&gt;d_name;</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> entry_ino = 0;</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;                <span class="keywordflow">if</span> (plus) {</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;                        <span class="keyword">struct </span><a class="code" href="structfuse__entry__param.html">fuse_entry_param</a> e;</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;                        <span class="keywordflow">if</span> (is_dot_or_dotdot(name)) {</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;                                e = (<span class="keyword">struct </span><a class="code" href="structfuse__entry__param.html">fuse_entry_param</a>) {</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;                                        .<a class="code" href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">attr</a>.st_ino = d-&gt;entry-&gt;d_ino,</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;                                        .attr.st_mode = d-&gt;entry-&gt;d_type &lt;&lt; 12,</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;                                };</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;                                err = lo_do_lookup(req, ino, name, &amp;e);</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;                                <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;                                        <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;                                entry_ino = e.<a class="code" href="structfuse__entry__param.html#a285ba89754871772d940fa4fb736bce3">ino</a>;</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;                        }</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;                        entsize = <a class="code" href="fuse__lowlevel_8h.html#a34f3f1beebacab5f717d95baf832a8a5">fuse_add_direntry_plus</a>(req, p, rem, name,</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;                                                         &amp;e, nextoff);</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;                        <span class="keyword">struct </span>stat st = {</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;                                .st_ino = d-&gt;entry-&gt;d_ino,</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;                                .st_mode = d-&gt;entry-&gt;d_type &lt;&lt; 12,</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;                        };</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;                        entsize = <a class="code" href="fuse__lowlevel_8h.html#ad1957bcc8ece8c90f16c42c4daf3053f">fuse_add_direntry</a>(req, p, rem, name,</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;                                                    &amp;st, nextoff);</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;                }</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;                <span class="keywordflow">if</span> (entsize &gt; rem) {</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;                        <span class="keywordflow">if</span> (entry_ino != 0) </div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;                                lo_forget_one(req, entry_ino, 1);</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;                }</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;                </div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;                p += entsize;</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;                rem -= entsize;</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;                d-&gt;entry = NULL;</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;                d-&gt;offset = nextoff;</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;        }</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;    err = 0;</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;error:</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    <span class="comment">// If there&#39;s an error, we can only signal it if we haven&#39;t stored</span></div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;    <span class="comment">// any entries yet - otherwise we&#39;d end up with wrong lookup</span></div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;    <span class="comment">// counts for the entries that are already in the buffer. So we</span></div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;    <span class="comment">// return what we&#39;ve collected until that point.</span></div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;    <span class="keywordflow">if</span> (err &amp;&amp; rem == size)</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;            <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, err);</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;            <a class="code" href="fuse__lowlevel_8h.html#a300a88b63ab7c8ca92853a97486448c0">fuse_reply_buf</a>(req, buf, size - rem);</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    free(buf);</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;}</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_readdir(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">size_t</span> size,</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;                       off_t offset, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;{</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;        lo_do_readdir(req, ino, size, offset, fi, 0);</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;}</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_readdirplus(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">size_t</span> size,</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;                           off_t offset, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;{</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;        lo_do_readdir(req, ino, size, offset, fi, 1);</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;}</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_releasedir(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;{</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;        <span class="keyword">struct </span>lo_dirp *d = lo_dirp(fi);</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;        (void) ino;</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;        closedir(d-&gt;dp);</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;        free(d);</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, 0);</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;}</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_create(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> parent, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;                      mode_t mode, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;{</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;        <span class="keyword">struct </span><a class="code" href="structfuse__entry__param.html">fuse_entry_param</a> e;</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;        <span class="keywordtype">int</span> err;</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_create(parent=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, name=%s)\n&quot;</span>,</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;                        parent, name);</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;        fd = openat(lo_fd(req, parent), name,</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;                    (fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a> | O_CREAT) &amp; ~O_NOFOLLOW, mode);</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;        <span class="keywordflow">if</span> (fd == -1)</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;                <span class="keywordflow">return</span> (<span class="keywordtype">void</span>) <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, errno);</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;        fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a> = fd;</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;        err = lo_do_lookup(req, parent, name, &amp;e);</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, err);</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#abea78d22349198f8370d7cb91fbf05ed">fuse_reply_create</a>(req, &amp;e, fi);</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;}</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_fsyncdir(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">int</span> datasync,</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;                        <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;{</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;        <span class="keywordtype">int</span> fd = dirfd(lo_dirp(fi)-&gt;dp);</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;        (void) ino;</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;        <span class="keywordflow">if</span> (datasync)</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;                res = fdatasync(fd);</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;                res = fsync(fd);</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, res == -1 ? errno : 0);</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;}</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_open(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;{</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;        <span class="keywordtype">char</span> buf[64];</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;        <span class="keyword">struct </span>lo_data *lo = lo_data(req);</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_open(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, flags=%d)\n&quot;</span>,</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;                        ino, fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a>);</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;        <span class="comment">/* With writeback cache, kernel may send read requests even</span></div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;<span class="comment">           when userspace opened write-only */</span></div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;        <span class="keywordflow">if</span> (lo-&gt;writeback &amp;&amp; (fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a> &amp; O_ACCMODE) == O_WRONLY) {</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;                fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a> &amp;= ~O_ACCMODE;</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;                fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a> |= O_RDWR;</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;        }</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;        <span class="comment">/* With writeback cache, O_APPEND is handled by the kernel.</span></div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;<span class="comment">           This breaks atomicity (since the file may change in the</span></div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;<span class="comment">           underlying filesystem, so that the kernel&#39;s idea of the</span></div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;<span class="comment">           end of the file isn&#39;t accurate anymore). In this example,</span></div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;<span class="comment">           we just accept that. A more rigorous filesystem may want</span></div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;<span class="comment">           to return an error here */</span></div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;        <span class="keywordflow">if</span> (lo-&gt;writeback &amp;&amp; (fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a> &amp; O_APPEND))</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;                fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a> &amp;= ~O_APPEND;</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;        sprintf(buf, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, lo_fd(req, ino));</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;        fd = open(buf, fi-&gt;<a class="code" href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">flags</a> &amp; ~O_NOFOLLOW);</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;        <span class="keywordflow">if</span> (fd == -1)</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;                <span class="keywordflow">return</span> (<span class="keywordtype">void</span>) <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, errno);</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;        fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a> = fd;</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;        <span class="keywordflow">if</span> (lo-&gt;cache == CACHE_NEVER)</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;                fi-&gt;<a class="code" href="structfuse__file__info.html#a03b59a10e62963d9affa34ad78bd144a">direct_io</a> = 1;</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lo-&gt;cache == CACHE_ALWAYS)</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;                fi-&gt;<a class="code" href="structfuse__file__info.html#a23a64eaecbf83f99aba8ee79e6de2780">keep_cache</a> = 1;</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a170f8c6b953d70928e83bcecee43bfdc">fuse_reply_open</a>(req, fi);</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;}</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_release(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;{</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;        (void) ino;</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;        close(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>);</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, 0);</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;}</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_flush(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;{</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;        (void) ino;</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;        res = close(dup(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>));</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, res == -1 ? errno : 0);</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;}</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_fsync(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">int</span> datasync,</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;                     <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;{</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;        (void) ino;</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;        <span class="keywordflow">if</span> (datasync)</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;                res = fdatasync(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>);</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;                res = fsync(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>);</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, res == -1 ? errno : 0);</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;}</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;</div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_read(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">size_t</span> size,</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;                    off_t offset, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;{</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;        <span class="keyword">struct </span><a class="code" href="structfuse__bufvec.html">fuse_bufvec</a> buf = FUSE_BUFVEC_INIT(size);</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_read(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, size=%zd, &quot;</span></div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;                        <span class="stringliteral">&quot;off=%lu)\n&quot;</span>, ino, size, (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>) offset);</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;        buf.<a class="code" href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">buf</a>[0].<a class="code" href="structfuse__buf.html#a1928e204554f2d37cb8dac28a8a2f28c">flags</a> = <a class="code" href="fuse__common_8h.html#a5e36b839c4dbf0439bd85b61c7213a58affd5b3b7e9cdd5f89b3126eea96e033b">FUSE_BUF_IS_FD</a> | <a class="code" href="fuse__common_8h.html#a5e36b839c4dbf0439bd85b61c7213a58ad67d5c6075febad0594f06d46d02bfa9">FUSE_BUF_FD_SEEK</a>;</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;        buf.<a class="code" href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">buf</a>[0].<a class="code" href="structfuse__buf.html#a62b2ae82904ac4355142984b9dd90d68">fd</a> = fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>;</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;        buf.<a class="code" href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">buf</a>[0].<a class="code" href="structfuse__buf.html#a8de23b7869b06b9a9caef6beb7c9e88e">pos</a> = offset;</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a1242694fe0fb6e253a88b57795987302">fuse_reply_data</a>(req, &amp;buf, <a class="code" href="fuse__common_8h.html#aec0ad71a3e8c357ebe7e87cdecbdbe18af239e556066a5d73b3ff542216b157b9">FUSE_BUF_SPLICE_MOVE</a>);</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;}</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_write_buf(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino,</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;                         <span class="keyword">struct</span> <a class="code" href="structfuse__bufvec.html">fuse_bufvec</a> *in_buf, off_t <a class="code" href="structfuse__bufvec.html#a0fbb583168d52562f0f848562ecf63bc">off</a>,</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;                         <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;{</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;        (void) ino;</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;        ssize_t res;</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        <span class="keyword">struct </span><a class="code" href="structfuse__bufvec.html">fuse_bufvec</a> out_buf = FUSE_BUFVEC_INIT(<a class="code" href="fuse__common_8h.html#a4327f41b2fe1ca84151b407169bd86c0">fuse_buf_size</a>(in_buf));</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        out_buf.<a class="code" href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">buf</a>[0].<a class="code" href="structfuse__buf.html#a1928e204554f2d37cb8dac28a8a2f28c">flags</a> = <a class="code" href="fuse__common_8h.html#a5e36b839c4dbf0439bd85b61c7213a58affd5b3b7e9cdd5f89b3126eea96e033b">FUSE_BUF_IS_FD</a> | <a class="code" href="fuse__common_8h.html#a5e36b839c4dbf0439bd85b61c7213a58ad67d5c6075febad0594f06d46d02bfa9">FUSE_BUF_FD_SEEK</a>;</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        out_buf.<a class="code" href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">buf</a>[0].<a class="code" href="structfuse__buf.html#a62b2ae82904ac4355142984b9dd90d68">fd</a> = fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>;</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;        out_buf.<a class="code" href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">buf</a>[0].<a class="code" href="structfuse__buf.html#a8de23b7869b06b9a9caef6beb7c9e88e">pos</a> = <a class="code" href="structfuse__bufvec.html#a0fbb583168d52562f0f848562ecf63bc">off</a>;</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_write(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, size=%zd, off=%lu)\n&quot;</span>,</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;                        ino, out_buf.<a class="code" href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">buf</a>[0].<a class="code" href="structfuse__buf.html#afb58c1e18f434d1d4edb784d00e2e13d">size</a>, (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>) off);</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;</div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;        res = <a class="code" href="fuse__common_8h.html#a9ca301390fb5e85b85153abb1891a3f7">fuse_buf_copy</a>(&amp;out_buf, in_buf, 0);</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;        <span class="keywordflow">if</span>(res &lt; 0)</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, -res);</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#aa3cfa73f61d6ef461ab5a3fbf859eb97">fuse_reply_write</a>(req, (<span class="keywordtype">size_t</span>) res);</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;}</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_statfs(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino)</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;{</div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;        <span class="keyword">struct </span>statvfs stbuf;</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;        res = fstatvfs(lo_fd(req, ino), &amp;stbuf);</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, errno);</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#aa1d95ec3ca674253baac3639ea10f0ff">fuse_reply_statfs</a>(req, &amp;stbuf);</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;}</div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_fallocate(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">int</span> mode,</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;                         off_t offset, off_t length, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;{</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;        <span class="keywordtype">int</span> err;</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;        (void) ino;</div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;        <span class="keywordflow">if</span> (mode) {</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, EOPNOTSUPP);</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;        }</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;        err = posix_fallocate(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, offset, length);</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, err);</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;}</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_flock(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi,</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;                     <span class="keywordtype">int</span> op)</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;{</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;        (void) ino;</div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;        res = flock(fi-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, op);</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, res == -1 ? errno : 0);</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;}</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_getxattr(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;                        <span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;{</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;        <span class="keywordtype">char</span> *value = NULL;</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;        <span class="keywordtype">char</span> procname[64];</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;        <span class="keyword">struct </span>lo_inode *inode = lo_inode(req, ino);</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;        ssize_t ret;</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;        saverr = ENOSYS;</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;        <span class="keywordflow">if</span> (!lo_data(req)-&gt;xattr)</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req)) {</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_getxattr(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, name=%s size=%zd)\n&quot;</span>,</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;                        ino, name, size);</div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;        }</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;        <span class="keywordflow">if</span> (inode-&gt;is_symlink) {</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;                <span class="comment">/* Sorry, no race free way to getxattr on symlink. */</span></div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;                saverr = EPERM;</div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;        }</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, inode-&gt;fd);</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;</div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;        <span class="keywordflow">if</span> (size) {</div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;                value = malloc(size);</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;                <span class="keywordflow">if</span> (!value)</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;                ret = getxattr(procname, name, value, size);</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;                <span class="keywordflow">if</span> (ret == -1)</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;                saverr = 0;</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;                <span class="keywordflow">if</span> (ret == 0)</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;                        <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;</div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a300a88b63ab7c8ca92853a97486448c0">fuse_reply_buf</a>(req, value, ret);</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;                ret = getxattr(procname, name, NULL, 0);</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;                <span class="keywordflow">if</span> (ret == -1)</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#afed32e5d3e1f54d390103f79ebb8bd42">fuse_reply_xattr</a>(req, ret);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;        }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;out_free:</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;        free(value);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;out_err:</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;        saverr = errno;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;out:</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, saverr);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;        <span class="keywordflow">goto</span> out_free;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;}</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_listxattr(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;{</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;        <span class="keywordtype">char</span> *value = NULL;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;        <span class="keywordtype">char</span> procname[64];</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;        <span class="keyword">struct </span>lo_inode *inode = lo_inode(req, ino);</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;        ssize_t ret;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;        saverr = ENOSYS;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;        <span class="keywordflow">if</span> (!lo_data(req)-&gt;xattr)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req)) {</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_listxattr(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, size=%zd)\n&quot;</span>,</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;                        ino, size);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;        }</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;        <span class="keywordflow">if</span> (inode-&gt;is_symlink) {</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;                <span class="comment">/* Sorry, no race free way to listxattr on symlink. */</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;                saverr = EPERM;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;        }</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, inode-&gt;fd);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;        <span class="keywordflow">if</span> (size) {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;                value = malloc(size);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;                <span class="keywordflow">if</span> (!value)</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;                ret = listxattr(procname, value, size);</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;                <span class="keywordflow">if</span> (ret == -1)</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;                saverr = 0;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;                <span class="keywordflow">if</span> (ret == 0)</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;                        <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a300a88b63ab7c8ca92853a97486448c0">fuse_reply_buf</a>(req, value, ret);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;                ret = listxattr(procname, NULL, 0);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;                <span class="keywordflow">if</span> (ret == -1)</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;                        <span class="keywordflow">goto</span> out_err;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#afed32e5d3e1f54d390103f79ebb8bd42">fuse_reply_xattr</a>(req, ret);</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;        }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;out_free:</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;        free(value);</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;out_err:</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;        saverr = errno;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;out:</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, saverr);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;        <span class="keywordflow">goto</span> out_free;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;}</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_setxattr(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;                        <span class="keyword">const</span> <span class="keywordtype">char</span> *value, <span class="keywordtype">size_t</span> size, <span class="keywordtype">int</span> flags)</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;{</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;        <span class="keywordtype">char</span> procname[64];</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;        <span class="keyword">struct </span>lo_inode *inode = lo_inode(req, ino);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;        ssize_t ret;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;        saverr = ENOSYS;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;        <span class="keywordflow">if</span> (!lo_data(req)-&gt;xattr)</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req)) {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_setxattr(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, name=%s value=%s size=%zd)\n&quot;</span>,</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;                        ino, name, value, size);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;        }</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;        <span class="keywordflow">if</span> (inode-&gt;is_symlink) {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;                <span class="comment">/* Sorry, no race free way to setxattr on symlink. */</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;                saverr = EPERM;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;        }</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, inode-&gt;fd);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;        ret = setxattr(procname, name, value, size, flags);</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;        saverr = ret == -1 ? errno : 0;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;out:</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, saverr);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;}</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_removexattr(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;{</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;        <span class="keywordtype">char</span> procname[64];</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;        <span class="keyword">struct </span>lo_inode *inode = lo_inode(req, ino);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;        ssize_t ret;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;        <span class="keywordtype">int</span> saverr;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;        saverr = ENOSYS;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;        <span class="keywordflow">if</span> (!lo_data(req)-&gt;xattr)</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req)) {</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_removexattr(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;, name=%s)\n&quot;</span>,</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;                        ino, name);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;        }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;        <span class="keywordflow">if</span> (inode-&gt;is_symlink) {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;                <span class="comment">/* Sorry, no race free way to setxattr on symlink. */</span></div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;                saverr = EPERM;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;                <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;        }</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;        sprintf(procname, <span class="stringliteral">&quot;/proc/self/fd/%i&quot;</span>, inode-&gt;fd);</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;        ret = removexattr(procname, name);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;        saverr = ret == -1 ? errno : 0;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;out:</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, saverr);</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;}</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="preprocessor">#ifdef HAVE_COPY_FILE_RANGE</span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> lo_copy_file_range(<a class="code" href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a> req, <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino_in, off_t off_in,</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;                               <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi_in,</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;                               <a class="code" href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a> ino_out, off_t off_out,</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;                               <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi_out, <span class="keywordtype">size_t</span> len,</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;                               <span class="keywordtype">int</span> flags)</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;{</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;        ssize_t res;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;        <span class="keywordflow">if</span> (lo_debug(req))</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;lo_copy_file_range(ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;/fd=%lu, &quot;</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;                                <span class="stringliteral">&quot;off=%lu, ino=%&quot;</span> PRIu64 <span class="stringliteral">&quot;/fd=%lu, &quot;</span></div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;                                <span class="stringliteral">&quot;off=%lu, size=%zd, flags=0x%x)\n&quot;</span>,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;                        ino_in, fi_in-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, off_in, ino_out, fi_out-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, off_out,</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;                        len, flags);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;        res = copy_file_range(fi_in-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, &amp;off_in, fi_out-&gt;<a class="code" href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fh</a>, &amp;off_out, len,</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;                              flags);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;        <span class="keywordflow">if</span> (res &lt; 0)</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a>(req, -errno);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#aa3cfa73f61d6ef461ab5a3fbf859eb97">fuse_reply_write</a>(req, res);</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;}</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structfuse__lowlevel__ops.html">fuse_lowlevel_ops</a> lo_oper = {</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;        .<a class="code" href="structfuse__lowlevel__ops.html#aa8ed20e1d06c42a386404fba0d3e56b5">init</a>           = lo_init,</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;        .lookup         = lo_lookup,</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;        .mkdir          = lo_mkdir,</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;        .mknod          = lo_mknod,</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;        .symlink        = lo_symlink,</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;        .link           = lo_link,</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;        .unlink         = lo_unlink,</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;        .rmdir          = lo_rmdir,</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;        .rename         = lo_rename,</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;        .forget         = lo_forget,</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;        .forget_multi   = lo_forget_multi,</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;        .getattr        = lo_getattr,</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;        .setattr        = lo_setattr,</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;        .readlink       = lo_readlink,</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;        .opendir        = lo_opendir,</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;        .readdir        = lo_readdir,</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;        .readdirplus    = lo_readdirplus,</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;        .releasedir     = lo_releasedir,</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;        .fsyncdir       = lo_fsyncdir,</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;        .create         = lo_create,</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;        .open           = lo_open,</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;        .release        = lo_release,</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;        .flush          = lo_flush,</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;        .fsync          = lo_fsync,</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;        .read           = lo_read,</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;        .write_buf      = lo_write_buf,</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;        .statfs         = lo_statfs,</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;        .fallocate      = lo_fallocate,</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;        .flock          = lo_flock,</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;        .getxattr       = lo_getxattr,</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;        .listxattr      = lo_listxattr,</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;        .setxattr       = lo_setxattr,</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;        .removexattr    = lo_removexattr,</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;<span class="preprocessor">#ifdef HAVE_COPY_FILE_RANGE</span></div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;        .copy_file_range = lo_copy_file_range,</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;};</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;{</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;        <span class="keyword">struct </span><a class="code" href="structfuse__args.html">fuse_args</a> args = <a class="code" href="fuse__opt_8h.html#a9bea40fe56b18be9aa110185ab7387ed">FUSE_ARGS_INIT</a>(argc, argv);</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;        <span class="keyword">struct </span>fuse_session *se;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;        <span class="keyword">struct </span>fuse_cmdline_opts opts;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;        <span class="keyword">struct </span>lo_data lo = { .debug = 0,</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;                              .writeback = 0 };</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;        <span class="keywordtype">int</span> ret = -1;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;        <span class="comment">/* Don&#39;t mask creation mode, kernel already did that */</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;        umask(0);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;        pthread_mutex_init(&amp;lo.mutex, NULL);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;        lo.root.next = lo.root.prev = &amp;lo.root;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;        lo.root.fd = -1;</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;        lo.cache = CACHE_NORMAL;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="fuse__lowlevel_8h.html#a8421a0cb3b6fb7013c7272c6997d1e08">fuse_parse_cmdline</a>(&amp;args, &amp;opts) != 0)</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;        <span class="keywordflow">if</span> (opts.show_help) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;                printf(<span class="stringliteral">&quot;usage: %s [options] &lt;mountpoint&gt;\n\n&quot;</span>, argv[0]);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a7235e3a2d1c780d5e0beaee13c81529f">fuse_cmdline_help</a>();</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#a990af0becaba1b5e45781d399720f85e">fuse_lowlevel_help</a>();</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;                ret = 0;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;                <span class="keywordflow">goto</span> err_out1;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (opts.show_version) {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;                printf(<span class="stringliteral">&quot;FUSE library version %s\n&quot;</span>, <a class="code" href="fuse__common_8h.html#ac52e27388a7c16eb509173908e5eebd0">fuse_pkgversion</a>());</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;                <a class="code" href="fuse__lowlevel_8h.html#ac6e2d0fde62dcf4f0e57afeabeefd7b1">fuse_lowlevel_version</a>();</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;                ret = 0;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;                <span class="keywordflow">goto</span> err_out1;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;        }</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;        <span class="keywordflow">if</span>(opts.mountpoint == NULL) {</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;                printf(<span class="stringliteral">&quot;usage: %s [options] &lt;mountpoint&gt;\n&quot;</span>, argv[0]);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;                printf(<span class="stringliteral">&quot;       %s --help\n&quot;</span>, argv[0]);</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;                ret = 1;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;                <span class="keywordflow">goto</span> err_out1;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;        }</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="fuse__opt_8h.html#a539ef1f571c34f516c60c4cbe2901c0e">fuse_opt_parse</a>(&amp;args, &amp;lo, lo_opts, NULL)== -1)</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;        lo.debug = opts.debug;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;        lo.root.refcount = 2;</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;        <span class="keywordflow">if</span> (lo.source) {</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;                <span class="keyword">struct </span>stat stat;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;                <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;                res = lstat(lo.source, &amp;stat);</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;                        err(1, <span class="stringliteral">&quot;failed to stat source (\&quot;%s\&quot;)&quot;</span>, lo.source);</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;                <span class="keywordflow">if</span> (!S_ISDIR(stat.st_mode))</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;                        errx(1, <span class="stringliteral">&quot;source is not a directory&quot;</span>);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;                lo.source = <span class="stringliteral">&quot;/&quot;</span>;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;        }</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;        lo.root.is_symlink = <span class="keyword">false</span>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;        <span class="keywordflow">if</span> (!lo.timeout_set) {</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;                <span class="keywordflow">switch</span> (lo.cache) {</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;                <span class="keywordflow">case</span> CACHE_NEVER:</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;                        lo.timeout = 0.0;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;                <span class="keywordflow">case</span> CACHE_NORMAL:</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;                        lo.timeout = 1.0;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;                <span class="keywordflow">case</span> CACHE_ALWAYS:</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;                        lo.timeout = 86400.0;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;                }</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lo.timeout &lt; 0) {</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;                errx(1, <span class="stringliteral">&quot;timeout is negative (%lf)&quot;</span>, lo.timeout);</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;        }</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;        lo.root.fd = open(lo.source, O_PATH);</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;        <span class="keywordflow">if</span> (lo.root.fd == -1)</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;                err(1, <span class="stringliteral">&quot;open(\&quot;%s\&quot;, O_PATH)&quot;</span>, lo.source);</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;        se = <a class="code" href="fuse__lowlevel_8h.html#a9ee52f81d0c63d9bd46b11314ba596cf">fuse_session_new</a>(&amp;args, &amp;lo_oper, <span class="keyword">sizeof</span>(lo_oper), &amp;lo);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;        <span class="keywordflow">if</span> (se == NULL)</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;            <span class="keywordflow">goto</span> err_out1;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="fuse__common_8h.html#a292dccc3c7b1799cb054efa2ba0c774b">fuse_set_signal_handlers</a>(se) != 0)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;            <span class="keywordflow">goto</span> err_out2;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="fuse__lowlevel_8h.html#aa6d77679a110582684e9ca2da623bbc2">fuse_session_mount</a>(se, opts.mountpoint) != 0)</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;            <span class="keywordflow">goto</span> err_out3;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;        <a class="code" href="fuse__common_8h.html#af1857d2209952f49a762aff39f3cd8bd">fuse_daemonize</a>(opts.foreground);</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;        <span class="comment">/* Block until ctrl+c or fusermount -u */</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;        <span class="keywordflow">if</span> (opts.singlethread)</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;                ret = <a class="code" href="fuse__lowlevel_8h.html#a5f1e538aa3287e251afbe985438c4249">fuse_session_loop</a>(se);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;                ret = fuse_session_loop_mt(se, opts.clone_fd);</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a6c10d942751ddb214863a8b5e53de5e8">fuse_session_unmount</a>(se);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;err_out3:</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;        <a class="code" href="fuse__common_8h.html#aeb674bbc11074c4fe520b952d6bfdd30">fuse_remove_signal_handlers</a>(se);</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;err_out2:</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;        <a class="code" href="fuse__lowlevel_8h.html#a08b5503c4e9656f9c4bc88331233cc65">fuse_session_destroy</a>(se);</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;err_out1:</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;        free(opts.mountpoint);</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;        <a class="code" href="fuse__opt_8h.html#a2cdf272429ab3869a5162976141b287d">fuse_opt_free_args</a>(&amp;args);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;        <span class="keywordflow">if</span> (lo.root.fd &gt;= 0)</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;                close(lo.root.fd);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;        <span class="keywordflow">return</span> ret ? 1 : 0;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;}</div><div class="ttc" id="fuse__lowlevel_8h_html_a08b5503c4e9656f9c4bc88331233cc65"><div class="ttname"><a href="fuse__lowlevel_8h.html#a08b5503c4e9656f9c4bc88331233cc65">fuse_session_destroy</a></div><div class="ttdeci">void fuse_session_destroy(struct fuse_session *se)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l02621">fuse_lowlevel.c:2621</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a2553c03f9a63c75e609e67f90a3a5d88"><div class="ttname"><a href="fuse__lowlevel_8h.html#a2553c03f9a63c75e609e67f90a3a5d88">fuse_reply_err</a></div><div class="ttdeci">int fuse_reply_err(fuse_req_t req, int err)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00312">fuse_lowlevel.c:312</a></div></div>
<div class="ttc" id="structfuse__bufvec_html_a0fbb583168d52562f0f848562ecf63bc"><div class="ttname"><a href="structfuse__bufvec.html#a0fbb583168d52562f0f848562ecf63bc">fuse_bufvec::off</a></div><div class="ttdeci">size_t off</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00679">fuse_common.h:679</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a9ee52f81d0c63d9bd46b11314ba596cf"><div class="ttname"><a href="fuse__lowlevel_8h.html#a9ee52f81d0c63d9bd46b11314ba596cf">fuse_session_new</a></div><div class="ttdeci">struct fuse_session * fuse_session_new(struct fuse_args *args, const struct fuse_lowlevel_ops *op, size_t op_size, void *userdata)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l02809">fuse_lowlevel.c:2809</a></div></div>
<div class="ttc" id="structfuse__conn__info_html_a8a1c61f5d7cc14249fb6971165bb958e"><div class="ttname"><a href="structfuse__conn__info.html#a8a1c61f5d7cc14249fb6971165bb958e">fuse_conn_info::capable</a></div><div class="ttdeci">unsigned capable</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00381">fuse_common.h:381</a></div></div>
<div class="ttc" id="structfuse__file__info_html_a45314d0b92a8d4c9de33d996aa59ada8"><div class="ttname"><a href="structfuse__file__info.html#a45314d0b92a8d4c9de33d996aa59ada8">fuse_file_info::fh</a></div><div class="ttdeci">uint64_t fh</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00072">fuse_common.h:72</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a5f1e538aa3287e251afbe985438c4249"><div class="ttname"><a href="fuse__lowlevel_8h.html#a5f1e538aa3287e251afbe985438c4249">fuse_session_loop</a></div><div class="ttdeci">int fuse_session_loop(struct fuse_session *se)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__loop_8c_source.html#l00019">fuse_loop.c:19</a></div></div>
<div class="ttc" id="structfuse__conn__info_html"><div class="ttname"><a href="structfuse__conn__info.html">fuse_conn_info</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00343">fuse_common.h:343</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a990af0becaba1b5e45781d399720f85e"><div class="ttname"><a href="fuse__lowlevel_8h.html#a990af0becaba1b5e45781d399720f85e">fuse_lowlevel_help</a></div><div class="ttdeci">void fuse_lowlevel_help(void)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l02611">fuse_lowlevel.c:2611</a></div></div>
<div class="ttc" id="structfuse__file__info_html_a03b59a10e62963d9affa34ad78bd144a"><div class="ttname"><a href="structfuse__file__info.html#a03b59a10e62963d9affa34ad78bd144a">fuse_file_info::direct_io</a></div><div class="ttdeci">unsigned int direct_io</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00046">fuse_common.h:46</a></div></div>
<div class="ttc" id="fuse__common_8h_html_a5e36b839c4dbf0439bd85b61c7213a58affd5b3b7e9cdd5f89b3126eea96e033b"><div class="ttname"><a href="fuse__common_8h.html#a5e36b839c4dbf0439bd85b61c7213a58affd5b3b7e9cdd5f89b3126eea96e033b">FUSE_BUF_IS_FD</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00555">fuse_common.h:555</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a34f3f1beebacab5f717d95baf832a8a5"><div class="ttname"><a href="fuse__lowlevel_8h.html#a34f3f1beebacab5f717d95baf832a8a5">fuse_add_direntry_plus</a></div><div class="ttdeci">size_t fuse_add_direntry_plus(fuse_req_t req, char *buf, size_t bufsize, const char *name, const struct fuse_entry_param *e, off_t off)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00357">fuse_lowlevel.c:357</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a1242694fe0fb6e253a88b57795987302"><div class="ttname"><a href="fuse__lowlevel_8h.html#a1242694fe0fb6e253a88b57795987302">fuse_reply_data</a></div><div class="ttdeci">int fuse_reply_data(fuse_req_t req, struct fuse_bufvec *bufv, enum fuse_buf_copy_flags flags)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00820">fuse_lowlevel.c:820</a></div></div>
<div class="ttc" id="fuse__common_8h_html_af1857d2209952f49a762aff39f3cd8bd"><div class="ttname"><a href="fuse__common_8h.html#af1857d2209952f49a762aff39f3cd8bd">fuse_daemonize</a></div><div class="ttdeci">int fuse_daemonize(int foreground)</div><div class="ttdef"><b>Definition:</b> <a href="helper_8c_source.html#l00225">helper.c:225</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_aa6d77679a110582684e9ca2da623bbc2"><div class="ttname"><a href="fuse__lowlevel_8h.html#aa6d77679a110582684e9ca2da623bbc2">fuse_session_mount</a></div><div class="ttdeci">int fuse_session_mount(struct fuse_session *se, const char *mountpoint)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l02903">fuse_lowlevel.c:2903</a></div></div>
<div class="ttc" id="fuse__opt_8h_html_a539ef1f571c34f516c60c4cbe2901c0e"><div class="ttname"><a href="fuse__opt_8h.html#a539ef1f571c34f516c60c4cbe2901c0e">fuse_opt_parse</a></div><div class="ttdeci">int fuse_opt_parse(struct fuse_args *args, void *data, const struct fuse_opt opts[], fuse_opt_proc_t proc)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8c_source.html#l00397">fuse_opt.c:397</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a33e2aa4a8905a05397292ae047cd2257"><div class="ttname"><a href="fuse__lowlevel_8h.html#a33e2aa4a8905a05397292ae047cd2257">fuse_req_t</a></div><div class="ttdeci">struct fuse_req * fuse_req_t</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00049">fuse_lowlevel.h:49</a></div></div>
<div class="ttc" id="structfuse__entry__param_html_adcdee37c96ad18380a47cdbe96a323b9"><div class="ttname"><a href="structfuse__entry__param.html#adcdee37c96ad18380a47cdbe96a323b9">fuse_entry_param::attr</a></div><div class="ttdeci">struct stat attr</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00091">fuse_lowlevel.h:91</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_ad1957bcc8ece8c90f16c42c4daf3053f"><div class="ttname"><a href="fuse__lowlevel_8h.html#ad1957bcc8ece8c90f16c42c4daf3053f">fuse_add_direntry</a></div><div class="ttdeci">size_t fuse_add_direntry(fuse_req_t req, char *buf, size_t bufsize, const char *name, const struct stat *stbuf, off_t off)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00267">fuse_lowlevel.c:267</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_aab00273c65d124e44abcf2374f9c504b"><div class="ttname"><a href="fuse__lowlevel_8h.html#aab00273c65d124e44abcf2374f9c504b">fuse_req_userdata</a></div><div class="ttdeci">void * fuse_req_userdata(fuse_req_t req)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l02338">fuse_lowlevel.c:2338</a></div></div>
<div class="ttc" id="fuse__common_8h_html_aec0ad71a3e8c357ebe7e87cdecbdbe18af239e556066a5d73b3ff542216b157b9"><div class="ttname"><a href="fuse__common_8h.html#aec0ad71a3e8c357ebe7e87cdecbdbe18af239e556066a5d73b3ff542216b157b9">FUSE_BUF_SPLICE_MOVE</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00606">fuse_common.h:606</a></div></div>
<div class="ttc" id="structfuse__file__info_html_a23a64eaecbf83f99aba8ee79e6de2780"><div class="ttname"><a href="structfuse__file__info.html#a23a64eaecbf83f99aba8ee79e6de2780">fuse_file_info::keep_cache</a></div><div class="ttdeci">unsigned int keep_cache</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00051">fuse_common.h:51</a></div></div>
<div class="ttc" id="structfuse__entry__param_html"><div class="ttname"><a href="structfuse__entry__param.html">fuse_entry_param</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00059">fuse_lowlevel.h:59</a></div></div>
<div class="ttc" id="fuse__common_8h_html_a7686c11aaf80382189927b10b848d8c8"><div class="ttname"><a href="fuse__common_8h.html#a7686c11aaf80382189927b10b848d8c8">FUSE_CAP_EXPORT_SUPPORT</a></div><div class="ttdeci">#define FUSE_CAP_EXPORT_SUPPORT</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00144">fuse_common.h:144</a></div></div>
<div class="ttc" id="structfuse__entry__param_html_a285ba89754871772d940fa4fb736bce3"><div class="ttname"><a href="structfuse__entry__param.html#a285ba89754871772d940fa4fb736bce3">fuse_entry_param::ino</a></div><div class="ttdeci">fuse_ino_t ino</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00067">fuse_lowlevel.h:67</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a8421a0cb3b6fb7013c7272c6997d1e08"><div class="ttname"><a href="fuse__lowlevel_8h.html#a8421a0cb3b6fb7013c7272c6997d1e08">fuse_parse_cmdline</a></div><div class="ttdeci">int fuse_parse_cmdline(struct fuse_args *args, struct fuse_cmdline_opts *opts)</div><div class="ttdef"><b>Definition:</b> <a href="helper_8c_source.html#l00202">helper.c:202</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_afed32e5d3e1f54d390103f79ebb8bd42"><div class="ttname"><a href="fuse__lowlevel_8h.html#afed32e5d3e1f54d390103f79ebb8bd42">fuse_reply_xattr</a></div><div class="ttdeci">int fuse_reply_xattr(fuse_req_t req, size_t count)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00854">fuse_lowlevel.c:854</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a7235e3a2d1c780d5e0beaee13c81529f"><div class="ttname"><a href="fuse__lowlevel_8h.html#a7235e3a2d1c780d5e0beaee13c81529f">fuse_cmdline_help</a></div><div class="ttdeci">void fuse_cmdline_help(void)</div><div class="ttdef"><b>Definition:</b> <a href="helper_8c_source.html#l00129">helper.c:129</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a672c45e126cd240f4bcd59bf9b7e3708"><div class="ttname"><a href="fuse__lowlevel_8h.html#a672c45e126cd240f4bcd59bf9b7e3708">fuse_reply_entry</a></div><div class="ttdeci">int fuse_reply_entry(fuse_req_t req, const struct fuse_entry_param *e)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00399">fuse_lowlevel.c:399</a></div></div>
<div class="ttc" id="fuse__common_8h_html_a292dccc3c7b1799cb054efa2ba0c774b"><div class="ttname"><a href="fuse__common_8h.html#a292dccc3c7b1799cb054efa2ba0c774b">fuse_set_signal_handlers</a></div><div class="ttdeci">int fuse_set_signal_handlers(struct fuse_session *se)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__signals_8c_source.html#l00062">fuse_signals.c:62</a></div></div>
<div class="ttc" id="structfuse__buf_html_a8de23b7869b06b9a9caef6beb7c9e88e"><div class="ttname"><a href="structfuse__buf.html#a8de23b7869b06b9a9caef6beb7c9e88e">fuse_buf::pos</a></div><div class="ttdeci">off_t pos</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00654">fuse_common.h:654</a></div></div>
<div class="ttc" id="fuse__common_8h_html_aeb674bbc11074c4fe520b952d6bfdd30"><div class="ttname"><a href="fuse__common_8h.html#aeb674bbc11074c4fe520b952d6bfdd30">fuse_remove_signal_handlers</a></div><div class="ttdeci">void fuse_remove_signal_handlers(struct fuse_session *se)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__signals_8c_source.html#l00079">fuse_signals.c:79</a></div></div>
<div class="ttc" id="structfuse__file__info_html"><div class="ttname"><a href="structfuse__file__info.html">fuse_file_info</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00037">fuse_common.h:37</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_ac6e2d0fde62dcf4f0e57afeabeefd7b1"><div class="ttname"><a href="fuse__lowlevel_8h.html#ac6e2d0fde62dcf4f0e57afeabeefd7b1">fuse_lowlevel_version</a></div><div class="ttdeci">void fuse_lowlevel_version(void)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l02604">fuse_lowlevel.c:2604</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a85ae91390a6704dc26f8d80fed7d5678"><div class="ttname"><a href="fuse__lowlevel_8h.html#a85ae91390a6704dc26f8d80fed7d5678">fuse_reply_none</a></div><div class="ttdeci">void fuse_reply_none(fuse_req_t req)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00317">fuse_lowlevel.c:317</a></div></div>
<div class="ttc" id="structfuse__file__info_html_ae7d31802727be19670193a411647bca5"><div class="ttname"><a href="structfuse__file__info.html#ae7d31802727be19670193a411647bca5">fuse_file_info::flags</a></div><div class="ttdeci">int flags</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00039">fuse_common.h:39</a></div></div>
<div class="ttc" id="structfuse__bufvec_html"><div class="ttname"><a href="structfuse__bufvec.html">fuse_bufvec</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00665">fuse_common.h:665</a></div></div>
<div class="ttc" id="fuse__opt_8h_html_a2cdf272429ab3869a5162976141b287d"><div class="ttname"><a href="fuse__opt_8h.html#a2cdf272429ab3869a5162976141b287d">fuse_opt_free_args</a></div><div class="ttdeci">void fuse_opt_free_args(struct fuse_args *args)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8c_source.html#l00033">fuse_opt.c:33</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_ad28378dc569019c32acdb4995d70be18"><div class="ttname"><a href="fuse__lowlevel_8h.html#ad28378dc569019c32acdb4995d70be18">fuse_reply_attr</a></div><div class="ttdeci">int fuse_reply_attr(fuse_req_t req, const struct stat *attr, double attr_timeout)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00431">fuse_lowlevel.c:431</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a6c10d942751ddb214863a8b5e53de5e8"><div class="ttname"><a href="fuse__lowlevel_8h.html#a6c10d942751ddb214863a8b5e53de5e8">fuse_session_unmount</a></div><div class="ttdeci">void fuse_session_unmount(struct fuse_session *se)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l02958">fuse_lowlevel.c:2958</a></div></div>
<div class="ttc" id="fuse__opt_8h_html_aca35962e17d189ceb5447f8eea11bd33"><div class="ttname"><a href="fuse__opt_8h.html#aca35962e17d189ceb5447f8eea11bd33">FUSE_OPT_END</a></div><div class="ttdeci">#define FUSE_OPT_END</div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00104">fuse_opt.h:104</a></div></div>
<div class="ttc" id="structfuse__buf_html_a1928e204554f2d37cb8dac28a8a2f28c"><div class="ttname"><a href="structfuse__buf.html#a1928e204554f2d37cb8dac28a8a2f28c">fuse_buf::flags</a></div><div class="ttdeci">enum fuse_buf_flags flags</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00633">fuse_common.h:633</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_aa1d95ec3ca674253baac3639ea10f0ff"><div class="ttname"><a href="fuse__lowlevel_8h.html#aa1d95ec3ca674253baac3639ea10f0ff">fuse_reply_statfs</a></div><div class="ttdeci">int fuse_reply_statfs(fuse_req_t req, const struct statvfs *stbuf)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00842">fuse_lowlevel.c:842</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a14d7299559cf05272b838cfc6388ef91"><div class="ttname"><a href="fuse__lowlevel_8h.html#a14d7299559cf05272b838cfc6388ef91">FUSE_ROOT_ID</a></div><div class="ttdeci">#define FUSE_ROOT_ID</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00043">fuse_lowlevel.h:43</a></div></div>
<div class="ttc" id="fuse__common_8h_html_afd06393448dbb60668f5a3bf0006f536"><div class="ttname"><a href="fuse__common_8h.html#afd06393448dbb60668f5a3bf0006f536">FUSE_CAP_FLOCK_LOCKS</a></div><div class="ttdeci">#define FUSE_CAP_FLOCK_LOCKS</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00190">fuse_common.h:190</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_ad119a72f00b4cd2e4a500fd3364ae1e2"><div class="ttname"><a href="fuse__lowlevel_8h.html#ad119a72f00b4cd2e4a500fd3364ae1e2">fuse_ino_t</a></div><div class="ttdeci">uint64_t fuse_ino_t</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00046">fuse_lowlevel.h:46</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_abea78d22349198f8370d7cb91fbf05ed"><div class="ttname"><a href="fuse__lowlevel_8h.html#abea78d22349198f8370d7cb91fbf05ed">fuse_reply_create</a></div><div class="ttdeci">int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e, const struct fuse_file_info *fi)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00415">fuse_lowlevel.c:415</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_aa3cfa73f61d6ef461ab5a3fbf859eb97"><div class="ttname"><a href="fuse__lowlevel_8h.html#aa3cfa73f61d6ef461ab5a3fbf859eb97">fuse_reply_write</a></div><div class="ttdeci">int fuse_reply_write(fuse_req_t req, size_t count)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00460">fuse_lowlevel.c:460</a></div></div>
<div class="ttc" id="fuse__common_8h_html_a4839fce31097f4b4da7a1f01169228fa"><div class="ttname"><a href="fuse__common_8h.html#a4839fce31097f4b4da7a1f01169228fa">FUSE_CAP_WRITEBACK_CACHE</a></div><div class="ttdeci">#define FUSE_CAP_WRITEBACK_CACHE</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00266">fuse_common.h:266</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a170f8c6b953d70928e83bcecee43bfdc"><div class="ttname"><a href="fuse__lowlevel_8h.html#a170f8c6b953d70928e83bcecee43bfdc">fuse_reply_open</a></div><div class="ttdeci">int fuse_reply_open(fuse_req_t req, const struct fuse_file_info *fi)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00451">fuse_lowlevel.c:451</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html"><div class="ttname"><a href="fuse__lowlevel_8h.html">fuse_lowlevel.h</a></div></div>
<div class="ttc" id="structfuse__lowlevel__ops_html"><div class="ttname"><a href="structfuse__lowlevel__ops.html">fuse_lowlevel_ops</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00175">fuse_lowlevel.h:175</a></div></div>
<div class="ttc" id="structfuse__bufvec_html_a754caca61fdf8107d28b510505a033bb"><div class="ttname"><a href="structfuse__bufvec.html#a754caca61fdf8107d28b510505a033bb">fuse_bufvec::buf</a></div><div class="ttdeci">struct fuse_buf buf[1]</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00684">fuse_common.h:684</a></div></div>
<div class="ttc" id="structfuse__opt_html"><div class="ttname"><a href="structfuse__opt.html">fuse_opt</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00077">fuse_opt.h:77</a></div></div>
<div class="ttc" id="structfuse__conn__info_html_af45de81548b591f3004353a324e4e04d"><div class="ttname"><a href="structfuse__conn__info.html#af45de81548b591f3004353a324e4e04d">fuse_conn_info::want</a></div><div class="ttdeci">unsigned want</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00389">fuse_common.h:389</a></div></div>
<div class="ttc" id="structfuse__args_html"><div class="ttname"><a href="structfuse__args.html">fuse_args</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00109">fuse_opt.h:109</a></div></div>
<div class="ttc" id="fuse__common_8h_html_ac52e27388a7c16eb509173908e5eebd0"><div class="ttname"><a href="fuse__common_8h.html#ac52e27388a7c16eb509173908e5eebd0">fuse_pkgversion</a></div><div class="ttdeci">const char * fuse_pkgversion(void)</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8c_source.html#l05071">fuse.c:5071</a></div></div>
<div class="ttc" id="fuse__opt_8h_html_a9bea40fe56b18be9aa110185ab7387ed"><div class="ttname"><a href="fuse__opt_8h.html#a9bea40fe56b18be9aa110185ab7387ed">FUSE_ARGS_INIT</a></div><div class="ttdeci">#define FUSE_ARGS_INIT(argc, argv)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00123">fuse_opt.h:123</a></div></div>
<div class="ttc" id="fuse__common_8h_html_a5e36b839c4dbf0439bd85b61c7213a58ad67d5c6075febad0594f06d46d02bfa9"><div class="ttname"><a href="fuse__common_8h.html#a5e36b839c4dbf0439bd85b61c7213a58ad67d5c6075febad0594f06d46d02bfa9">FUSE_BUF_FD_SEEK</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00564">fuse_common.h:564</a></div></div>
<div class="ttc" id="fuse__common_8h_html_a4327f41b2fe1ca84151b407169bd86c0"><div class="ttname"><a href="fuse__common_8h.html#a4327f41b2fe1ca84151b407169bd86c0">fuse_buf_size</a></div><div class="ttdeci">size_t fuse_buf_size(const struct fuse_bufvec *bufv)</div><div class="ttdef"><b>Definition:</b> <a href="buffer_8c_source.html#l00022">buffer.c:22</a></div></div>
<div class="ttc" id="fuse__common_8h_html_a9ca301390fb5e85b85153abb1891a3f7"><div class="ttname"><a href="fuse__common_8h.html#a9ca301390fb5e85b85153abb1891a3f7">fuse_buf_copy</a></div><div class="ttdeci">ssize_t fuse_buf_copy(struct fuse_bufvec *dst, struct fuse_bufvec *src, enum fuse_buf_copy_flags flags)</div><div class="ttdef"><b>Definition:</b> <a href="buffer_8c_source.html#l00281">buffer.c:281</a></div></div>
<div class="ttc" id="structfuse__buf_html_afb58c1e18f434d1d4edb784d00e2e13d"><div class="ttname"><a href="structfuse__buf.html#afb58c1e18f434d1d4edb784d00e2e13d">fuse_buf::size</a></div><div class="ttdeci">size_t size</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00628">fuse_common.h:628</a></div></div>
<div class="ttc" id="structfuse__entry__param_html_a281b39b72e7ec574ba40d7341fd22c1d"><div class="ttname"><a href="structfuse__entry__param.html#a281b39b72e7ec574ba40d7341fd22c1d">fuse_entry_param::entry_timeout</a></div><div class="ttdeci">double entry_timeout</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00103">fuse_lowlevel.h:103</a></div></div>
<div class="ttc" id="structfuse__buf_html_a62b2ae82904ac4355142984b9dd90d68"><div class="ttname"><a href="structfuse__buf.html#a62b2ae82904ac4355142984b9dd90d68">fuse_buf::fd</a></div><div class="ttdeci">int fd</div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00647">fuse_common.h:647</a></div></div>
<div class="ttc" id="structfuse__entry__param_html_aa797a9f4152cae506ba479af8bbe2eb7"><div class="ttname"><a href="structfuse__entry__param.html#aa797a9f4152cae506ba479af8bbe2eb7">fuse_entry_param::attr_timeout</a></div><div class="ttdeci">double attr_timeout</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00097">fuse_lowlevel.h:97</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a5a5872d7f73f0bd593e00788a4c7bbb7"><div class="ttname"><a href="fuse__lowlevel_8h.html#a5a5872d7f73f0bd593e00788a4c7bbb7">fuse_reply_readlink</a></div><div class="ttdeci">int fuse_reply_readlink(fuse_req_t req, const char *link)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00446">fuse_lowlevel.c:446</a></div></div>
<div class="ttc" id="fuse__lowlevel_8h_html_a300a88b63ab7c8ca92853a97486448c0"><div class="ttname"><a href="fuse__lowlevel_8h.html#a300a88b63ab7c8ca92853a97486448c0">fuse_reply_buf</a></div><div class="ttdeci">int fuse_reply_buf(fuse_req_t req, const char *buf, size_t size)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8c_source.html#l00470">fuse_lowlevel.c:470</a></div></div>
<div class="ttc" id="structfuse__lowlevel__ops_html_aa8ed20e1d06c42a386404fba0d3e56b5"><div class="ttname"><a href="structfuse__lowlevel__ops.html#aa8ed20e1d06c42a386404fba0d3e56b5">fuse_lowlevel_ops::init</a></div><div class="ttdeci">void(* init)(void *userdata, struct fuse_conn_info *conn)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__lowlevel_8h_source.html#l00192">fuse_lowlevel.h:192</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libfuse: lib/modules/subdir.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>
<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 style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libfuse
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li><li class="navelem"><a class="el" href="dir_e1dbc8ba94a86723d4c32227b7c46099.html">modules</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">subdir.c</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">  fuse subdir module: offset paths with a base directory</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">  Copyright (C) 2007  Miklos Szeredi &lt;miklos@szeredi.hu&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">  This program can be distributed under the terms of the GNU LGPLv2.</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">  See the file COPYING.LIB</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;config.h&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="fuse_8h.html">fuse.h</a>&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;stddef.h&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">struct </span>subdir {</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;        <span class="keywordtype">char</span> *base;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;        <span class="keywordtype">size_t</span> baselen;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;        <span class="keywordtype">int</span> rellinks;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;        <span class="keyword">struct </span>fuse_fs *next;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;};</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>subdir *subdir_get(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="fuse_8h.html#a9a0f2a6603cb1e21f5e4c1aec84a3bcc">fuse_get_context</a>()-&gt;<a class="code" href="structfuse__context.html#a198911619cb8ee1a0b11302b94b6027e">private_data</a>;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;}</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_addpath(<span class="keyword">struct</span> subdir *d, <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">char</span> **newpathp)</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        <span class="keywordtype">char</span> *newpath = NULL;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        <span class="keywordflow">if</span> (path != NULL) {</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;                <span class="keywordtype">unsigned</span> newlen = d-&gt;baselen + strlen(path);</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;                newpath = malloc(newlen + 2);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;                <span class="keywordflow">if</span> (!newpath)</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;                        <span class="keywordflow">return</span> -ENOMEM;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;                <span class="keywordflow">if</span> (path[0] == <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;                        path++;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;                strcpy(newpath, d-&gt;base);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;                strcpy(newpath + d-&gt;baselen, path);</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;                <span class="keywordflow">if</span> (!newpath[0])</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;                        strcpy(newpath, <span class="stringliteral">&quot;.&quot;</span>);</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        }</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        *newpathp = newpath;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;}</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_getattr(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> stat *stbuf,</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;                          <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;                err = fuse_fs_getattr(d-&gt;next, newpath, stbuf, fi);</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;                free(newpath);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        }</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_access(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> mask)</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;                err = fuse_fs_access(d-&gt;next, newpath, mask);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;                free(newpath);</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        }</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;}</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> count_components(<span class="keyword">const</span> <span class="keywordtype">char</span> *p)</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <span class="keywordtype">int</span> ctr;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        <span class="keywordflow">for</span> (; *p == <span class="charliteral">&#39;/&#39;</span>; p++);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="keywordflow">for</span> (ctr = 0; *p; ctr++) {</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;                <span class="keywordflow">for</span> (; *p &amp;&amp; *p != <span class="charliteral">&#39;/&#39;</span>; p++);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                <span class="keywordflow">for</span> (; *p == <span class="charliteral">&#39;/&#39;</span>; p++);</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        }</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        <span class="keywordflow">return</span> ctr;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;}</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> strip_common(<span class="keyword">const</span> <span class="keywordtype">char</span> **sp, <span class="keyword">const</span> <span class="keywordtype">char</span> **tp)</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *s = *sp;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *t = *tp;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <span class="keywordflow">do</span> {</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                <span class="keywordflow">for</span> (; *s == <span class="charliteral">&#39;/&#39;</span>; s++);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;                <span class="keywordflow">for</span> (; *t == <span class="charliteral">&#39;/&#39;</span>; t++);</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;                *tp = t;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;                *sp = s;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;                <span class="keywordflow">for</span> (; *s == *t &amp;&amp; *s &amp;&amp; *s != <span class="charliteral">&#39;/&#39;</span>; s++, t++);</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        } <span class="keywordflow">while</span> ((*s == *t &amp;&amp; *s) || (!*s &amp;&amp; *t == <span class="charliteral">&#39;/&#39;</span>) || (*s == <span class="charliteral">&#39;/&#39;</span> &amp;&amp; !*t));</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;}</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> transform_symlink(<span class="keyword">struct</span> subdir *d, <span class="keyword">const</span> <span class="keywordtype">char</span> *path,</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                              <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;{</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *l = buf;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="keywordtype">size_t</span> llen;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <span class="keywordtype">char</span> *s;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <span class="keywordtype">int</span> dotdots;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="keywordflow">if</span> (l[0] != <span class="charliteral">&#39;/&#39;</span> || d-&gt;base[0] != <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        strip_common(&amp;l, &amp;path);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <span class="keywordflow">if</span> (l - buf &lt; (<span class="keywordtype">long</span>) d-&gt;baselen)</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        dotdots = count_components(path);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keywordflow">if</span> (!dotdots)</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        dotdots--;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        llen = strlen(l);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="keywordflow">if</span> (dotdots * 3 + llen + 2 &gt; size)</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;                <span class="keywordflow">return</span>;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        s = buf + dotdots * 3;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <span class="keywordflow">if</span> (llen)</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;                memmove(s, l, llen + 1);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!dotdots)</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;                strcpy(s, <span class="stringliteral">&quot;.&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;                *s = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <span class="keywordflow">for</span> (s = buf, i = 0; i &lt; dotdots; i++, s += 3)</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;                memcpy(s, <span class="stringliteral">&quot;../&quot;</span>, 3);</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_readlink(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                err = fuse_fs_readlink(d-&gt;next, newpath, buf, size);</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;                <span class="keywordflow">if</span> (!err &amp;&amp; d-&gt;rellinks)</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;                        transform_symlink(d, newpath, buf, size);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;                free(newpath);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;}</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_opendir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;{</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;                err = fuse_fs_opendir(d-&gt;next, newpath, fi);</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                free(newpath);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;}</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_readdir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">void</span> *buf,</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                          <a class="code" href="fuse_8h.html#a7dd132de66a5cc2add2a4eff5d435660">fuse_fill_dir_t</a> filler, off_t offset,</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                          <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi,</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;                          <span class="keyword">enum</span> <a class="code" href="fuse_8h.html#af2bcf2a473b41b3cc8da8c079656a074">fuse_readdir_flags</a> flags)</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;{</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;                err = fuse_fs_readdir(d-&gt;next, newpath, buf, filler, offset,</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                                      fi, flags);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                free(newpath);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        }</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;}</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_releasedir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;{</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                err = fuse_fs_releasedir(d-&gt;next, newpath, fi);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                free(newpath);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        }</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;}</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_mknod(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, mode_t mode, dev_t rdev)</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;{</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;                err = fuse_fs_mknod(d-&gt;next, newpath, mode, rdev);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;                free(newpath);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        }</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;}</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_mkdir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, mode_t mode)</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;{</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                err = fuse_fs_mkdir(d-&gt;next, newpath, mode);</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                free(newpath);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        }</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;}</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_unlink(<span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                err = fuse_fs_unlink(d-&gt;next, newpath);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                free(newpath);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;}</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_rmdir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;{</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;                err = fuse_fs_rmdir(d-&gt;next, newpath);</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;                free(newpath);</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        }</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;}</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_symlink(<span class="keyword">const</span> <span class="keywordtype">char</span> *from, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;                err = fuse_fs_symlink(d-&gt;next, from, newpath);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;                free(newpath);</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        }</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;}</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_rename(<span class="keyword">const</span> <span class="keywordtype">char</span> *from, <span class="keyword">const</span> <span class="keywordtype">char</span> *to, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags)</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;{</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        <span class="keywordtype">char</span> *newfrom;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        <span class="keywordtype">char</span> *newto;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, from, &amp;newfrom);</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                err = subdir_addpath(d, to, &amp;newto);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;                <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                        err = fuse_fs_rename(d-&gt;next, newfrom, newto, flags);</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                        free(newto);</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;                }</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                free(newfrom);</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;        }</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;}</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_link(<span class="keyword">const</span> <span class="keywordtype">char</span> *from, <span class="keyword">const</span> <span class="keywordtype">char</span> *to)</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;{</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        <span class="keywordtype">char</span> *newfrom;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;        <span class="keywordtype">char</span> *newto;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, from, &amp;newfrom);</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;                err = subdir_addpath(d, to, &amp;newto);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;                <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                        err = fuse_fs_link(d-&gt;next, newfrom, newto);</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;                        free(newto);</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;                }</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;                free(newfrom);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        }</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;}</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_chmod(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, mode_t mode,</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;                        <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                err = fuse_fs_chmod(d-&gt;next, newpath, mode, fi);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;                free(newpath);</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        }</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;}</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_chown(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, uid_t uid, gid_t gid,</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;                        <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;                err = fuse_fs_chown(d-&gt;next, newpath, uid, gid, fi);</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;                free(newpath);</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        }</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;}</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_truncate(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, off_t size,</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;                           <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;{</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;                err = fuse_fs_truncate(d-&gt;next, newpath, size, fi);</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;                free(newpath);</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        }</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;}</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_utimens(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keyword">struct</span> timespec ts[2],</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;                          <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;{</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                err = fuse_fs_utimens(d-&gt;next, newpath, ts, fi);</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;                free(newpath);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        }</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;}</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_create(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, mode_t mode,</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                         <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;{</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;                err = fuse_fs_create(d-&gt;next, newpath, mode, fi);</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                free(newpath);</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        }</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;}</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_open(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;{</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;                err = fuse_fs_open(d-&gt;next, newpath, fi);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;                free(newpath);</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        }</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;}</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_read_buf(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__bufvec.html">fuse_bufvec</a> **bufp,</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;                           <span class="keywordtype">size_t</span> size, off_t offset, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;{</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                err = fuse_fs_read_buf(d-&gt;next, newpath, bufp, size, offset, fi);</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                free(newpath);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        }</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;}</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_write_buf(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__bufvec.html">fuse_bufvec</a> *buf,</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                        off_t offset, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;{</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                err = fuse_fs_write_buf(d-&gt;next, newpath, buf, offset, fi);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                free(newpath);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        }</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;}</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_statfs(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> statvfs *stbuf)</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;{</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                err = fuse_fs_statfs(d-&gt;next, newpath, stbuf);</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                free(newpath);</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;        }</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;}</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_flush(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;{</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                err = fuse_fs_flush(d-&gt;next, newpath, fi);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                free(newpath);</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;        }</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;}</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_release(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;{</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                err = fuse_fs_release(d-&gt;next, newpath, fi);</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                free(newpath);</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;        }</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;}</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_fsync(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> isdatasync,</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                        <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;{</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;                err = fuse_fs_fsync(d-&gt;next, newpath, isdatasync, fi);</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                free(newpath);</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        }</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;}</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_fsyncdir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> isdatasync,</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                           <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi)</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                err = fuse_fs_fsyncdir(d-&gt;next, newpath, isdatasync, fi);</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                free(newpath);</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        }</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;}</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_setxattr(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;                           <span class="keyword">const</span> <span class="keywordtype">char</span> *value, <span class="keywordtype">size_t</span> size, <span class="keywordtype">int</span> flags)</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;{</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;                err = fuse_fs_setxattr(d-&gt;next, newpath, name, value, size,</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                                       flags);</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;                free(newpath);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        }</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;}</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_getxattr(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keywordtype">char</span> *value,</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                           <span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;{</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                err = fuse_fs_getxattr(d-&gt;next, newpath, name, value, size);</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;                free(newpath);</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        }</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;}</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_listxattr(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">char</span> *list, <span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;{</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;                err = fuse_fs_listxattr(d-&gt;next, newpath, list, size);</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                free(newpath);</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        }</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;}</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_removexattr(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;{</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;                err = fuse_fs_removexattr(d-&gt;next, newpath, name);</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;                free(newpath);</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;        }</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;}</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_lock(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi, <span class="keywordtype">int</span> cmd,</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;                       <span class="keyword">struct</span> flock *lock)</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;{</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;                err = fuse_fs_lock(d-&gt;next, newpath, fi, cmd, lock);</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;                free(newpath);</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        }</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;}</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_flock(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">struct</span> <a class="code" href="structfuse__file__info.html">fuse_file_info</a> *fi, <span class="keywordtype">int</span> op)</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;{</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;                err = fuse_fs_flock(d-&gt;next, newpath, fi, op);</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;                free(newpath);</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;        }</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;}</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_bmap(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">size_t</span> blocksize, uint64_t *idx)</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;{</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        <span class="keywordtype">char</span> *newpath;</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;        <span class="keywordtype">int</span> err = subdir_addpath(d, path, &amp;newpath);</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        <span class="keywordflow">if</span> (!err) {</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;                err = fuse_fs_bmap(d-&gt;next, newpath, blocksize, idx);</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;                free(newpath);</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;        }</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        <span class="keywordflow">return</span> err;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;}</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *subdir_init(<span class="keyword">struct</span> <a class="code" href="structfuse__conn__info.html">fuse_conn_info</a> *conn,</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;                         <span class="keyword">struct</span> <a class="code" href="structfuse__config.html">fuse_config</a> *cfg)</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;{</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        <span class="keyword">struct </span>subdir *d = subdir_get();</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;        fuse_fs_init(d-&gt;next, conn, cfg);</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        <span class="comment">/* Don&#39;t touch cfg-&gt;nullpath_ok, we can work with</span></div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;<span class="comment">           either */</span></div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        <span class="keywordflow">return</span> d;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;}</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> subdir_destroy(<span class="keywordtype">void</span> *data)</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;{</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        <span class="keyword">struct </span>subdir *d = data;</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        fuse_fs_destroy(d-&gt;next);</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;        free(d-&gt;base);</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;        free(d);</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;}</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structfuse__operations.html">fuse_operations</a> subdir_oper = {</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        .<a class="code" href="structfuse__operations.html#af7485db1c9c6d402323f7a24e1b7db82">destroy</a>        = subdir_destroy,</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;        .init           = subdir_init,</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        .getattr        = subdir_getattr,</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;        .access         = subdir_access,</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;        .readlink       = subdir_readlink,</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;        .opendir        = subdir_opendir,</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;        .readdir        = subdir_readdir,</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;        .releasedir     = subdir_releasedir,</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;        .mknod          = subdir_mknod,</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        .mkdir          = subdir_mkdir,</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;        .symlink        = subdir_symlink,</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;        .unlink         = subdir_unlink,</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        .rmdir          = subdir_rmdir,</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;        .rename         = subdir_rename,</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;        .link           = subdir_link,</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;        .chmod          = subdir_chmod,</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;        .chown          = subdir_chown,</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        .truncate       = subdir_truncate,</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;        .utimens        = subdir_utimens,</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;        .create         = subdir_create,</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;        .open           = subdir_open,</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        .read_buf       = subdir_read_buf,</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        .write_buf      = subdir_write_buf,</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        .statfs         = subdir_statfs,</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        .flush          = subdir_flush,</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        .release        = subdir_release,</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;        .fsync          = subdir_fsync,</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        .fsyncdir       = subdir_fsyncdir,</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;        .setxattr       = subdir_setxattr,</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;        .getxattr       = subdir_getxattr,</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;        .listxattr      = subdir_listxattr,</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;        .removexattr    = subdir_removexattr,</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;        .lock           = subdir_lock,</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;        .flock          = subdir_flock,</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;        .bmap           = subdir_bmap,</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;};</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct </span><a class="code" href="structfuse__opt.html">fuse_opt</a> subdir_opts[] = {</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;        <a class="code" href="fuse__opt_8h.html#a371d830a8aedd9e3f96d9bb31876a8f1">FUSE_OPT_KEY</a>(<span class="stringliteral">&quot;-h&quot;</span>, 0),</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;        <a class="code" href="fuse__opt_8h.html#a371d830a8aedd9e3f96d9bb31876a8f1">FUSE_OPT_KEY</a>(<span class="stringliteral">&quot;--help&quot;</span>, 0),</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;        { <span class="stringliteral">&quot;subdir=%s&quot;</span>, offsetof(<span class="keyword">struct</span> subdir, base), 0 },</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;        { <span class="stringliteral">&quot;rellinks&quot;</span>, offsetof(<span class="keyword">struct</span> subdir, rellinks), 1 },</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;        { <span class="stringliteral">&quot;norellinks&quot;</span>, offsetof(<span class="keyword">struct</span> subdir, rellinks), 0 },</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;        <a class="code" href="fuse__opt_8h.html#aca35962e17d189ceb5447f8eea11bd33">FUSE_OPT_END</a></div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;};</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> subdir_help(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;{</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        printf(</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;<span class="stringliteral">&quot;    -o subdir=DIR          prepend this directory to all paths (mandatory)\n&quot;</span></div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;<span class="stringliteral">&quot;    -o [no]rellinks        transform absolute symlinks to relative\n&quot;</span>);</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;}</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> subdir_opt_proc(<span class="keywordtype">void</span> *data, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg, <span class="keywordtype">int</span> key,</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;                           <span class="keyword">struct</span> <a class="code" href="structfuse__args.html">fuse_args</a> *outargs)</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;{</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;        (void) data; (void) arg; (void) outargs;</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        <span class="keywordflow">if</span> (!key) {</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;                subdir_help();</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;        }</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;        <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;}</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>fuse_fs *subdir_new(<span class="keyword">struct</span> <a class="code" href="structfuse__args.html">fuse_args</a> *args,</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;                                  <span class="keyword">struct</span> fuse_fs *next[])</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;{</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;        <span class="keyword">struct </span>fuse_fs *fs;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        <span class="keyword">struct </span>subdir *d;</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;        d = calloc(1, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> subdir));</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;        <span class="keywordflow">if</span> (d == NULL) {</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;fuse-subdir: memory allocation failed\n&quot;</span>);</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;                <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        }</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="fuse__opt_8h.html#a539ef1f571c34f516c60c4cbe2901c0e">fuse_opt_parse</a>(args, d, subdir_opts, subdir_opt_proc) == -1)</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;                <span class="keywordflow">goto</span> out_free;</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;        <span class="keywordflow">if</span> (!next[0] || next[1]) {</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;fuse-subdir: exactly one next filesystem required\n&quot;</span>);</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;                <span class="keywordflow">goto</span> out_free;</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        }</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;        <span class="keywordflow">if</span> (!d-&gt;base) {</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;fuse-subdir: missing &#39;subdir&#39; option\n&quot;</span>);</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;                <span class="keywordflow">goto</span> out_free;</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;        }</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;        <span class="keywordflow">if</span> (d-&gt;base[0] &amp;&amp; d-&gt;base[strlen(d-&gt;base)-1] != <span class="charliteral">&#39;/&#39;</span>) {</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;                <span class="keywordtype">char</span> *tmp = realloc(d-&gt;base, strlen(d-&gt;base) + 2);</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;                <span class="keywordflow">if</span> (!tmp) {</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;                        fprintf(stderr, <span class="stringliteral">&quot;fuse-subdir: memory allocation failed\n&quot;</span>);</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;                        <span class="keywordflow">goto</span> out_free;</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;                }</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;                d-&gt;base = tmp;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;                strcat(d-&gt;base, <span class="stringliteral">&quot;/&quot;</span>);</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;        }</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;        d-&gt;baselen = strlen(d-&gt;base);</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;        d-&gt;next = next[0];</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;        fs = <a class="code" href="fuse_8h.html#a74883ac07b1794da7affbd95251d25d7">fuse_fs_new</a>(&amp;subdir_oper, <span class="keyword">sizeof</span>(subdir_oper), d);</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;        <span class="keywordflow">if</span> (!fs)</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;                <span class="keywordflow">goto</span> out_free;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        <span class="keywordflow">return</span> fs;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;out_free:</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;        free(d-&gt;base);</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;        free(d);</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;}</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;<a class="code" href="fuse_8h.html#af335784cf29289c7583f3312d98d2bcd">FUSE_REGISTER_MODULE</a>(subdir, subdir_new);</div><div class="ttc" id="structfuse__conn__info_html"><div class="ttname"><a href="structfuse__conn__info.html">fuse_conn_info</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00343">fuse_common.h:343</a></div></div>
<div class="ttc" id="fuse__opt_8h_html_a539ef1f571c34f516c60c4cbe2901c0e"><div class="ttname"><a href="fuse__opt_8h.html#a539ef1f571c34f516c60c4cbe2901c0e">fuse_opt_parse</a></div><div class="ttdeci">int fuse_opt_parse(struct fuse_args *args, void *data, const struct fuse_opt opts[], fuse_opt_proc_t proc)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8c_source.html#l00397">fuse_opt.c:397</a></div></div>
<div class="ttc" id="fuse_8h_html_af2bcf2a473b41b3cc8da8c079656a074"><div class="ttname"><a href="fuse_8h.html#af2bcf2a473b41b3cc8da8c079656a074">fuse_readdir_flags</a></div><div class="ttdeci">fuse_readdir_flags</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8h_source.html#l00042">fuse.h:42</a></div></div>
<div class="ttc" id="structfuse__file__info_html"><div class="ttname"><a href="structfuse__file__info.html">fuse_file_info</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00037">fuse_common.h:37</a></div></div>
<div class="ttc" id="structfuse__operations_html"><div class="ttname"><a href="structfuse__operations.html">fuse_operations</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse_8h_source.html#l00299">fuse.h:299</a></div></div>
<div class="ttc" id="structfuse__bufvec_html"><div class="ttname"><a href="structfuse__bufvec.html">fuse_bufvec</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__common_8h_source.html#l00665">fuse_common.h:665</a></div></div>
<div class="ttc" id="fuse__opt_8h_html_a371d830a8aedd9e3f96d9bb31876a8f1"><div class="ttname"><a href="fuse__opt_8h.html#a371d830a8aedd9e3f96d9bb31876a8f1">FUSE_OPT_KEY</a></div><div class="ttdeci">#define FUSE_OPT_KEY(templ, key)</div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00098">fuse_opt.h:98</a></div></div>
<div class="ttc" id="fuse_8h_html_af335784cf29289c7583f3312d98d2bcd"><div class="ttname"><a href="fuse_8h.html#af335784cf29289c7583f3312d98d2bcd">FUSE_REGISTER_MODULE</a></div><div class="ttdeci">#define FUSE_REGISTER_MODULE(name_, factory_)</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8h_source.html#l01238">fuse.h:1238</a></div></div>
<div class="ttc" id="fuse__opt_8h_html_aca35962e17d189ceb5447f8eea11bd33"><div class="ttname"><a href="fuse__opt_8h.html#aca35962e17d189ceb5447f8eea11bd33">FUSE_OPT_END</a></div><div class="ttdeci">#define FUSE_OPT_END</div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00104">fuse_opt.h:104</a></div></div>
<div class="ttc" id="structfuse__context_html_a198911619cb8ee1a0b11302b94b6027e"><div class="ttname"><a href="structfuse__context.html#a198911619cb8ee1a0b11302b94b6027e">fuse_context::private_data</a></div><div class="ttdeci">void * private_data</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8h_source.html#l00791">fuse.h:791</a></div></div>
<div class="ttc" id="fuse_8h_html_a74883ac07b1794da7affbd95251d25d7"><div class="ttname"><a href="fuse_8h.html#a74883ac07b1794da7affbd95251d25d7">fuse_fs_new</a></div><div class="ttdeci">struct fuse_fs * fuse_fs_new(const struct fuse_operations *op, size_t op_size, void *private_data)</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8c_source.html#l04760">fuse.c:4760</a></div></div>
<div class="ttc" id="fuse_8h_html"><div class="ttname"><a href="fuse_8h.html">fuse.h</a></div></div>
<div class="ttc" id="fuse_8h_html_a7dd132de66a5cc2add2a4eff5d435660"><div class="ttname"><a href="fuse_8h.html#a7dd132de66a5cc2add2a4eff5d435660">fuse_fill_dir_t</a></div><div class="ttdeci">int(* fuse_fill_dir_t)(void *buf, const char *name, const struct stat *stbuf, off_t off, enum fuse_fill_dir_flags flags)</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8h_source.html#l00082">fuse.h:82</a></div></div>
<div class="ttc" id="structfuse__config_html"><div class="ttname"><a href="structfuse__config.html">fuse_config</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse_8h_source.html#l00093">fuse.h:93</a></div></div>
<div class="ttc" id="structfuse__opt_html"><div class="ttname"><a href="structfuse__opt.html">fuse_opt</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00077">fuse_opt.h:77</a></div></div>
<div class="ttc" id="structfuse__args_html"><div class="ttname"><a href="structfuse__args.html">fuse_args</a></div><div class="ttdef"><b>Definition:</b> <a href="fuse__opt_8h_source.html#l00109">fuse_opt.h:109</a></div></div>
<div class="ttc" id="fuse_8h_html_a9a0f2a6603cb1e21f5e4c1aec84a3bcc"><div class="ttname"><a href="fuse_8h.html#a9a0f2a6603cb1e21f5e4c1aec84a3bcc">fuse_get_context</a></div><div class="ttdeci">struct fuse_context * fuse_get_context(void)</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8c_source.html#l04557">fuse.c:4557</a></div></div>
<div class="ttc" id="structfuse__operations_html_af7485db1c9c6d402323f7a24e1b7db82"><div class="ttname"><a href="structfuse__operations.html#af7485db1c9c6d402323f7a24e1b7db82">fuse_operations::destroy</a></div><div class="ttdeci">void(* destroy)(void *private_data)</div><div class="ttdef"><b>Definition:</b> <a href="fuse_8h_source.html#l00580">fuse.h:580</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       a     $    ,6      0H  .   1H  7   `H  _   H  1   H  &   *I     QI  9   nI  Q   I  9   I  +   4J     `J     ~J  &   J     J     J     J     J     J     J     J     J     J     K     K     K     K     'K     8K     DK     LK  Y   ]K  _   K  a   L     yL     L     L     L  )   L  <   M  *   MM     xM  !   M  "   M     M     M  #   N  !   4N  [   VN  &   N  4   N  a   O  "   pO  5   O  J   O  8   P  &   MP  $   tP     P  B   P  !   P     Q  K   4Q  1   Q  )   Q     Q  U   Q  8   GR     R  +   R     R  +   R  (   R      "S     CS  4   _S     S  )   S  #   S  #   S     T     (T  2   @T  9   sT  !   T  4   T  /   U     4U  6   KU  +   U  1   U  -   U  /   V  #   >V     bV      wV  *   V     V  (   V  =   W  ,   FW  &   sW     W  ^   W  a   X  B   xX     X  +   NY  %   zY  &   Y     Y  "   Y  &   Z  1   ,Z  0   ^Z  $   Z  "   Z  )   Z  !   [      #[  A   D[     [     %\     >\  "   ^\  "   \  #   \    \     ]     ^     (_     G_     b_     |_     _  )   _  .   _     	`  ;   )`  4   e`  4   `  0   `  \    a     ]a  &   wa     a  "   a  $   a     a  #   b  *   =b  .   hb  '   b  '   b  '   b     c  *   (c  	   Sc  &   ]c     c  $   c     c  4   c  $   d  &   >d  a   ed  F   d  4   e  2   Ce  :   ve  A   e  @   e  ;   4f  W   pf  W   f  1    g  /   Rg  0   g  4   g  %   g  A   h  ?   Ph  5   h  )   h  $   h  $   i     :i  I   Ii     i     i     i     Zj      j     
k     "k     Ak     Xk  )   uk  7   k  +   k  !   l     %l     <l     Ul     nl     l     l  !   l     l  !   l  '   m  M   Fm     m     m     m  !   m  9   n  B   Jn  G   n  7   n  B   
o  j   Po  !   o     o  !   o     p     >p     Tp     op      p     p     p  (   p  (   q  !   *q  $   Lq     qq  ,   q     q  /   q  ,   r     3r     Mr  &   ir     r     r  =   r  &   s     /s     Hs     ds  "   |s     s     s     s  !   s     t     )t  #   Bt     ft      t     t     t     t     t  I   u  !   Uu  )   wu  -   u     u     u  <   v     Bv  ,   \v  "   v     v     v     v  Q   v  "   Hw  5   kw  0   w  6   w  :   	x  %   Dx  .   jx  0   x  9   x  4   y  $   9y  $   ^y     y     y  
   y  (   y  %   y  %   z  *   9z  $   dz  #   z  $   z  $   z  "   z  0   {     K{  M   i{  >   {  9   {  $   0|     U|  #   |     
}  M   +}  !   y}     }  	   }     }  '   }  .   }     
~  ?   ,~     l~  )   ~  $   ~  %   ~  -         .  !   B  ?   d  9     -     *     )   7  9   a       -     +          &     +   ā  3     #   $  !   H  )   j  8     9   ͂  %     .   -  -   \  .          .   Ѓ  )     !   )     K  *   j       L     5     *   (     S     f     |                 .   ȅ       K        \  D   s       
   ͆     ۆ  (     &     .   <  .   k  "              އ  &     #     #   >  &   b       $        Έ                 3   ,  -   `  (     (     (     )   	     3  R   K               ϊ                 7         X     x       $     0   ˋ       +     !   H     j       #     ;   Ȍ  1     .   6  V   e  H     =     L   C  +     !        ގ  -     $   ,  O   Q  (     !   ʏ  =     G   *  v   r       1        ё  ,     &        A     Y  ;   t  ;     "     3     9   C     }  <     "   ד  @     N   ;  A     R   ̔  @     1   `            h   ĕ     -  !   F  '   h            *     ,   ߖ  1         >      _       2     <   ȗ           $  &   E  9   l       ~        =     O  +   f  H        ۙ  B        0     D     Z  (   o       )        ܚ       #        %  )   E     o               Ǜ  L   ޛ  N   +     z  z   +               ԝ  -     *     %   E     k  2   p  8     -   ܞ  *   
  5   5  <   k  2     0   ۟  ;     *   H  !   s       0     H     	   /  
   9     G  
   c     n       %     4   С  '     /   -     ]  1   q  +        Ϣ  *          
   ,     :     L     d     x        %     A   ǣ  a   	  ]   k  *   ɤ  @     *   5  1   `  5     <   ȥ  4     M   :  !          /   Ǧ       "     h   8               ɧ  D        (     =     V     v  !              Ψ               !     4  !   O  $   q  0     "   ǩ  F     :   1  -   l  R     *     3     2   L       ;        ӫ  N         ;     \  '   w  -     "   ͬ  )     1     #   L  )   p  '     )   ­  )     )     2   @  #   s  Y               "        ;  $   O  %   t        ?     .        *  8   A     z       !     '   ˰  3     .   '  (   V  0     +     "   ܱ            <   =     z       *        ܲ  O     C   K  9     0   ɳ  8        3  &   S  !   z               ʹ  *        
     &     C  6   U               ʵ  C   ׵       H   #  *   l            "     p  ܶ  6   M  3    )     6     0     .   J  3   y  -         ۼ  R     H   O  W               +     &   D  	   k     u                 &        Ӿ       )     _   1  ?     ?   ѿ  %     1   7     i                                   &     A     \     w       #     #     #     #     #   =  #   a  #     #     #     #     #     #   9     ]     z                           ?   (     h  *     D          
     %     /   A  0   q  
     1                        4     I  B   f                      5     )   5     _     }       M     6     S   =                                        2     G     ]     q                      !     !         ?     `     ~            !           "        >     W     p                      4        *  !   E     g            "     !     $          *   0  j   [  )     ;     @   ,  C   m  (          "     !        ;  !   S     u  )     %          9     !   5  !   W  =   y  -     9     :        Z     r                 %           
        *  ^   F  c     2   	  %   <     b     z  &     $               
          3   /     c     |  %     =           +     (   H     q                 
          $     &         <      ]  "   ~       6          )        @    _  .   6  G   e  u     +   #      O      p  @     U     <   (  7   e             &                             "     *     3     ;     D     L     U     ]     f     n                 `     k     n   x       %        +     K  2   a  C     ;          $   *  0   O       #                b     $   d  A     c        /  ?   O  N     E     (   $  #   M  2   q  C     ,          Y   0  5     2          g     8   v       9          3     5   D  %   z  8     ;          1     +   O  *   {  !     $     F     R   4  8     J     E        Q  D   q  9     ?     ;   0  =   l  1          )     =   !  $   _  0     F     K     :   H  $     h     u     \          7   |  .     /     "     4   6  =   k  I     U     (   I  %   r  %     &     %     C        O  $     +     +   E  (   q  0     5              -                         7   5  9   m  &     M     >     7   [  4     u        >  1   ^       (     *     (     -   (  4   V  9     A     6     9   >     x  &          5     %     0   #      T  A   u  .     '     u     S     @     @     S   Z  T     :     A   >  k     X     B   E  >     0     7     .   0  F   _  R     C     1   =  /   o  -          O     "   / ,   R        * -        4    7   = 4   u =    P    O   9 >    /    1    .   * 1   Y )    <    6    /   ) B   Y K    q    !   Z 2   | 4    L    O   1 [    y    M   W	 Y   	    	 >   
 5   
 >   
 8   > .   w ,    !    5    5   + .   a O    P    T   1
 =   
 1   
 G   
 7   > L   v I    1   
 5   ? ?   u 4    2    w    T    /    1    1   L M   ~ 8    <    2   B ;   u +    .    ;    3   H ?   | 1    3    /   " 1   R o    :    B   / E   r 5    3    k   " :    [    @   % -   f >    0    v    H   { H    H   
 P   V P    5    D   . @   s Y    l    Z   { C    4    6   O 
    @    >    =    @   O 5    A    A    B   J C    O    7   ! T   Y K    L    (   G     p  3   !! '   U! S   }! (   !    !    "    " .   !" <   P" (   " W   " *   # 1   9# *   k# .   # C   # #   	$ ,   -$ Q   Z$ K   $ 7   $ .   0% @   _% H   % '   % ;   & 9   M&    & 2   *' :   ]' G   ' .   ' -   ( 0   =( D   n( J   ( 8   ( >   7) =   v) >   )    ) 2   * 8   F* %   * /   * 2   *    + ]   !+ C   + 8   +    +    ,    ,    -,    6,    9, /   <,     l, [   ,    , T   -    X-    q-    - :   - 8   - A   	. A   K. *   . .   .    . -   / +   4/ *   `/ /   / )   / >   / #   $0 #   H0    l0 (   0 E   0 6   0 1   *1 -   \1 -   1 D   1    1 a   2 '   {2    2    2    2    2    3 R   83 ,   3     3    3 1   3 9   (4 !   b4 5   4 !   4 -   4 !   
5 (   ,5 G   U5 C   5 B   5 j   $6 X   6 P   6 Z   97 A   7 )   7 (    8 :   )8 ,   d8 Z   8 7   8 .   $9 M   S9 a   9    :    : <   q;    ; -   ; (   ;    #< "   @< @   c< A   < *   < <   = B   N= !   = H   = 3   = Q   0> h   > R   > c   >? >   ? >   ?     @    ?@    X@    @ 4   A 7   :A    rA    A 2   A :   A 6   B 1   ?B 4   qB    B =   B G   C *   JC 5   uC :   C E   C )   ,D    VD    E     E 8   >E U   wE    E c   E    JF    dF    F .   F )   F O   F    FG    _G 1   zG '   G :   G /   H &   ?H 1   fH !   H o   H g   *I    I    jJ    K    !K    9K +   TK -   K ,   K    K 8   K D   L 2   ^L .   L C   L J   M ?   OM <   M K   M A   N )   ZN &   N 3   N V   N    6O    FO "   YO    |O    O !   O +   O G   O .   CP 9   rP    P .   P /   P 1   (Q K   ZQ    Q    Q    Q    Q    Q    R %   R %   BR F   hR h   R d   S *   }S W   S 6    T 2   7T 9   jT >   T 8   T ]   U $   zU    U K   U "   V %   .V c   TV !   V    V    V \   W    sW    W    W    W    W '   W    %X    =X !   ]X    X #   X -   X %   X A   Y '   XY ]   Y G   Y 7   &Z K   ^Z 1   Z <   Z 3   [    M[ A   g[    [ T   [ $   \    ;\ -   [\ 8   \ !   \ 0   \ 2   ]    H] /   f] %   ] +   ] +   ] -   ^ 7   B^ (   z^ d   ^     _ $   )_ -   N_ !   |_ ,   _ (   _ '   _ ;   ` *   X`    ` B   `    ` "   ` 2   a B   Ga P   a O   a 5   +b ?   ab @   b .   b )   c +   ;c ?   gc (   c 3   c .   d %   3d c   Yd U   d J   e 8   ^e >   e ,   e 8   f *   <f 7   gf    f    f E   f 1   g )   Pg    zg >   g '   g )   g    #h P   5h 
   h R   h 6   h    i    :i     ?i   `i :   j   'k F   n G   o F   No 7   o E   o 5   p +   Ip s   up Q   p d   ;q    q     q 8   q 8   r 	   Kr    Ur    br    ir    zr 0   r    r    r (   r n   "s J   s M   s ,   *t A   Wt    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    t    u    u    	u    
u    u =   u ,   Su 2   u F   u *   u    %v 7   <v =   tv >   v    v -   
w    8w )   Jw *   tw    w %   w ?   w    !x %   7x    ]x #   lx ?   x )   x !   x    y    :y    Xy F   y V   %z    |z    z    z    z    z    z    z    z    z    z 	   z    z 	   z    z    z     {    {    {    {    {    &{    ,{ 	   1{    ;{ 	   C{    M{    U{    Z{    a{    i{    q{    x{ D   { !   { )   {    |    .|    L| !   l| '   | 2   |    | 4   } |   9} 2   } L   } K   6~ E   ~ 8   ~     *     %   K    q /        ,    -    :   4 s   o :    <    r   [ D   ΁ M    B   a     )            (    .   <    k     3    z   ҃    M >   Ԅ ,    &   @    g 5   | &    %   م )    
   )    4 >   N %    (    (   ܆ E        K -   l $           ԇ !    !   
    /     B 3   c +    &   È &    $    %   6 D   \ !    *   É %       e  	                Q              Y                     ?     Z              z  +  *     8                                 ,     [  o          ?  )                    k  m     h  K     $    A                            ]     j  p   =             ]   `             W                Q  |    @           N                            s                    -             v               n             4          $           )  i  <                 Z  L         a         s         J           !   G           '             D     w  +        	          S   $         H  F   #   P                  d                   ;                                             b                                   V          w      8         f                              i           "         c      m  H          P          *                     7     u  A   ~         +   z                         J  D  *                z              q                          N               q              :        )  Q     v    .             U  N                V    @             -      L                        B   0              >  b           _  ^       %  u    q        p     =   &        5   T           ?  G         &             8      #       d        ,  ,              f  G  B      V                C   U       K                        P                    b         =        K       S  \          t          j   B                 >  :                         O  X          c     ;      7                    f   K      0                      5  '    ^               !  Y        !    
      e                 9               ~  J  0   3       C                     !  .   7             H    a  Z                                p                 
   6  4                I  &  x     r  @           o      _    O  m      r   ~       R   	     P          A    /   <        H             Q     9  l     G    2  k  U     7            r        X  g  -    [              _  }            >  1        y   '            |           x            (    M  }      2    *   4      L          C         -  (                                     Y  V  6                  t     O         I        T        1    u                       s         k       J            #                     R                   >       E  I            D    L   1  ^  U   5              E  T      O  i     :                           E        F    T      ,            W  %        <           a             ]                                           D  S          Z   n  
     o     Y                     3                    `              (           N  X   F  g   0                     a           g  E      `                      B               _        .                       6  M                               X         v  I  y     t                       '  9               `      h  /  
                     5      A  %      R  <   \  
    :       {  9              )        3            "            /      h     x  2                    w        #      l             &                          8    /                 =  M        ]     |        \      W        @  ^             $       R    .          M       {             d        3  y  ;              {   "  	    c                +                1       \                      W       2                      S  
                 C       [         
       j        l             "   }     n   ;               %                  4            (        F    e  ?           
  6         [                 COMMAND   The (optional) command to explain
   FILE      An elf file (a binary or a shared library)
   FILE      An elf file (a binary or a shared library)
            or a compiled resource file
   KEY       The (optional) key within the schema
   KEY       The key within the schema
   PATH      A resource path
   PATH      An (optional) resource path (may be partial)
   SCHEMA    The name of the schema
  PATH      The path, for relocatable schemas
   SCHEMADIR A directory to search for additional schemas
   SECTION   An (optional) elf section name
   VALUE     The value to set
  (invalid encoding)  and --strict was specified; exiting.
 %.1f EB %.1f EiB %.1f GB %.1f GiB %.1f KB %.1f KiB %.1f MB %.1f MiB %.1f PB %.1f PiB %.1f TB %.1f TiB %.1f kB %s byte %s bytes %s filetype %s type %u byte %u bytes '%s' is not a valid character following a '<' character; it may not begin an element name '%s' is not a valid character following the characters '</'; '%s' may not begin an element name '%s' is not a valid character following the close element name '%s'; the allowed character is '>' '%s' is not a valid name '%s' is not a valid name: '%c' (*MARK) must have an argument (*VERB) not recognized (?R or (?[+-]digits must be followed by ) (Additionally, releasing the lock for '%s' also failed: %s)  (Type any character to close this window)
 ) without opening ( --strict was specified; exiting.
 ; ignoring override for this key.
 <%s id='%s'> already specified <%s id='%s'> not (yet) defined. <child name='%s'> already specified <key name='%s'> already specified <key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> to modify value <override name='%s'> already specified <override> given but schema isn't extending anything <schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' does not extend '%s' <schema id='%s'> already specified <schema id='%s'> extends not-yet-existing schema '%s' <schema id='%s'> is a list, extending <schema id='%s'> which is not a list <schema id='%s'> is list of not-yet-existing schema '%s' A bookmark for URI '%s' already exists A subtree is already exported for %s Abort on any errors in schemas Abstract UNIX domain socket addresses not supported on this system Abstract name space not supported Added socket is closed Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys) Address element '%s' does not contain a colon (:) Address has bits set beyond prefix length Address to listen on Amount of memory required to process the write is larger than available address space An object is already exported for the interface %s at %s Application Options: Application information lacks an identifier Arguments:
 Association creation not supported on win32 Attribute '%s' of element '%s' not found Attribute value must be non-NULL Backup file creation failed C identifier name used for the generated source code COMMAND Can not be a list of a schema with a path Can not extend a schema with a path Can't copy directory over directory Can't copy over directory Can't copy special file Can't create user MIME configuration folder %s: %s Can't create user application configuration folder %s: %s Can't create user desktop file %s Can't do a raw read in g_io_channel_read_line_string Can't do a raw read in g_io_channel_read_to_end Can't find application Can't handle the supplied version of the icon encoding Can't handle version %d of GEmblem encoding Can't handle version %d of GEmblemedIcon encoding Can't handle version %d of GFileIcon encoding Can't handle version %d of GThemedIcon encoding Can't move directory over directory Can't open directory Can't recursively copy directory Can't rename file, filename already exists Can't rename root directory Cancellable initialization not supported Cancelled via GDBusAuthObserver::authorize-authenticated-peer Cannot convert fallback '%s' to codeset '%s' Cannot decrypt PEM-encoded private key Cannot deserialize message:  Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment variable is not set Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable - unknown value '%s' Cannot determine session bus address (not implemented for this OS) Cannot invoke method; proxy is for a well-known name without an owner and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag Cannot listen on unsupported transport '%s' Cannot parse double value '%s' for %s Cannot parse integer value '%s' for %s Cannot serialize message:  Cannot set permissions on symlinks Cannot spawn a message bus when setuid Cannot spawn a message bus without a machine-id:  Cannot specify nonce file when creating a server Cannot truncate GBufferedInputStream Cannot truncate GMemoryInputStream Channel terminates in a partial character Character out of range for UTF-16 Character out of range for UTF-8 Character reference '%-.*s' does not encode a permitted character Character reference did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp; Check if KEY is writable Child process exited abnormally Child process exited with code %ld Child process killed by signal %ld Child process stopped by signal %ld Commands:
  help         Shows this information
  introspect   Introspect a remote object
  monitor      Monitor a remote object
  call         Invoke a method on a remote object
  emit         Emit a signal

Use "%s COMMAND --help" to get help on each command.
 Compile a resource specification into a resource file.
Resource specification files have the extension .gresource.xml,
and the resource file have the extension called .gresource. Compile all GSettings schema files into a schema cache.
Schema files are required to have the extension .gschema.xml,
and the cache file is called gschemas.compiled. Connect to given D-Bus address Connect to the session bus Connect to the system bus Connection Endpoint Options: Connection in progress Connection refused through SOCKSv5 proxy. Connection through SOCKSv4 server was rejected Containing mount does not exist Conversion from character set '%s' to '%s' is not supported Copy (reflink/clone) between mounts is not supported Copy (reflink/clone) is not supported or didn't work Copy (reflink/clone) is not supported or invalid Could not allocate %lu byte to read file "%s" Could not allocate %lu bytes to read file "%s" Could not connect to %s:  Could not connect to proxy server %s:  Could not connect:  Could not create network monitor:  Could not create network monitor: %s Could not get network status:  Could not load schemas from %s: %s
 Could not open converter from '%s' to '%s' Could not open converter from '%s' to '%s': %s Could not parse '%s' as IP address mask Could not parse PEM-encoded certificate Could not parse PEM-encoded private key Custom definition for %s DEFINE group contains more than one branch DIRECTORY Desktop file didn't specify Exec field Destination name to introspect Destination name to invoke method on Destination name to monitor Didn't find cookie with id %d in the keyring at '%s' Do not enforce key name restrictions Do not write the gschema.compiled file Document ended unexpectedly after the equals sign following an attribute name; no attribute value Document ended unexpectedly inside a comment or processing instruction Document ended unexpectedly inside an attribute name Document ended unexpectedly inside an element name Document ended unexpectedly inside an element-opening tag. Document ended unexpectedly inside the close tag for element '%s' Document ended unexpectedly just after an open angle bracket '<' Document ended unexpectedly while inside an attribute value Document ended unexpectedly with elements still open - '%s' was the last element opened Document ended unexpectedly, expected to see a close angle bracket ending the tag <%s/> Document must begin with an element (e.g. <book>) Document was empty or contained only whitespace Don't automatically create and register resource Don't export functions; declare them G_GNUC_INTERNAL Double value '%s' for %s out of range ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing Element '%s' was closed, but the currently open element is '%s' Element '%s' was closed, no element is currently open Element <%s> not allowed at the top level Element <%s> not allowed at toplevel Element <%s> not allowed inside <%s> Emit a signal. Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos; Empty path given.
 Empty schema name given
 Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB). Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB). Entity did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp; Entity name '%-.*s' is not known Enumerator is closed Error accepting connection: %s Error auto-launching:  Error binding to address: %s Error calling StartServiceByName for %s:  Error checking if SO_PASSCRED is enabled for socket: %s Error closing (unlinked) lock file '%s': %s Error closing file descriptor: %s Error closing file: %s Error closing handle: %s Error closing socket: %s Error compressing file %s Error connecting: %s
 Error creating backup copy: %s Error creating directory '%s': %s Error creating directory: %s Error creating lock file '%s': %s Error deleting stale lock file '%s': %s Error deserializing GVariant with type string '%s' from the D-Bus wire format Error during conversion: %s Error enabling SO_PASSCRED: %s Error flushing connection: %s
 Error getting filesystem info: %s Error in address '%s' - the family attribute is malformed Error in address '%s' - the host attribute is missing or malformed Error in address '%s' - the noncefile attribute is missing or malformed Error in address '%s' - the port attribute is malformed Error in address '%s' - the port attribute is missing or malformed Error in address '%s' - the unix transport requires exactly one of the keys 'path' or 'abstract' to be set Error joining multicast group: %s Error launching application: %s Error leaving multicast group: %s Error making symbolic link: %s Error moving file: %s Error on line %d char %d:  Error on line %d: %s Error opening directory '%s': %s Error opening file '%s': %s Error opening file: %s Error opening keyring '%s' for reading:  Error opening keyring '%s' for writing:  Error opening nonce file '%s': %s Error parsing introspection XML: %s
 Error parsing option %s Error parsing parameter %d of type '%s': %s
 Error parsing parameter %d: %s
 Error processing input file with to-pixdata:
%s Error processing input file with xmllint:
%s Error reading file %s: %s Error reading file '%s': %s Error reading from file descriptor: %s Error reading from file: %s Error reading from handle: %s Error reading from nonce file '%s', expected 16 bytes, got %d Error reading from nonce file '%s': %s Error receiving data: %s Error receiving message: %s Error removing file: %s Error removing old backup link: %s Error removing old file: %s Error removing target file: %s Error renaming file: %s Error renaming temporary file: %s Error resolving '%s' Error resolving '%s': %s Error return with body of type '%s' Error return with empty body Error reverse-resolving '%s': %s Error seeking in file: %s Error sending credentials:  Error sending data: %s Error sending message: %s Error serializing GVariant with type string '%s' to the D-Bus wire format Error setting SELinux context: %s Error setting extended attribute '%s': %s Error setting modification or access time: %s Error setting owner: %s Error setting permissions: %s Error setting property '%s': Expected type '%s' but got '%s' Error setting symlink: %s Error setting symlink: file is not a symlink Error spawning command line '%s':  Error splicing file: %s Error trashing file: %s Error truncating file: %s Error unescaping key or value in Key/Value pair %d, '%s', in address element '%s' Error unlinking lock file '%s': %s Error when getting information for directory '%s': %s Error when getting information for file '%s': %s Error when getting information for file descriptor: %s Error while compiling regular expression %s at char %d: %s Error while disabling SO_PASSCRED: %s Error while matching regular expression %s: %s Error while optimizing regular expression %s: %s Error while parsing replacement text "%s" at char %lu: %s Error writing contents of nonce file '%s' to stream: Error writing nonce file at '%s': %s Error writing to file descriptor: %s Error writing to file: %s Error writing to handle: %s Error: %s
 Error: %s is not a valid interface name
 Error: %s is not a valid member name
 Error: %s is not a valid object path
 Error: %s is not a valid unique bus name.
 Error: Destination is not specified
 Error: Method name '%s' is invalid
 Error: Method name is not specified
 Error: Object path is not specified
 Error: object path not specified.
 Error: signal must be the fully-qualified name.
 Error: signal not specified.
 Exhausted all available authentication mechanisms (tried: %s) (available: %s) Existing file '%s' could not be removed: g_unlink() failed: %s Expected NUL byte after the string '%s' but found byte %d Expected a GEmblem for GEmblemedIcon Expected valid UTF-8 string but found invalid bytes at byte offset %d (length of string is %d). The valid UTF-8 string up until that point was '%s' Expecting 1 control message, got %d Expecting one fd, but got %d
 Expecting to read a single byte for receiving credentials but read zero bytes Extract a resource file to stdout FILE FILE PATH FILE [PATH] Failed to change to directory '%s' (%s) Failed to close file '%s': fclose() failed: %s Failed to create file '%s': %s Failed to create pipe for communicating with child process (%s) Failed to create temp file: %s Failed to execute child process "%s" (%s) Failed to execute child process (%s) Failed to execute helper program (%s) Failed to expand exec line '%s' with URI '%s' Failed to fork (%s) Failed to fork child process (%s) Failed to get attributes of file '%s%s%s%s': fstat() failed: %s Failed to get attributes of file '%s': fstat() failed: %s Failed to locate '%s' in any source directory Failed to locate '%s' in current directory Failed to map %s%s%s%s: mmap() failed: %s Failed to open file '%s' for writing: fdopen() failed: %s Failed to open file '%s': %s Failed to open file '%s': fdopen() failed: %s Failed to open file '%s': open() failed: %s Failed to parse '%-.*s', which should have been a digit inside a character reference (&#234; for example) - perhaps the digit is too large Failed to read data from child process Failed to read data from child process (%s) Failed to read enough data from child pid pipe (%s) Failed to read from child pipe (%s) Failed to read from file '%s': %s Failed to read the symbolic link '%s': %s Failed to redirect output or input of child process (%s) Failed to rename file '%s' to '%s': g_rename() failed: %s Failed to resize memory output stream Failed to write file '%s': fflush() failed: %s Failed to write file '%s': fsync() failed: %s Failed to write file '%s': fwrite() failed: %s File "%s" is too large File %s appears multiple times in the resource File enumerator has outstanding operation File enumerator is already closed File names cannot contain '%c' Filesystem does not support symbolic links Filesystem root First token of line %d of the keyring at '%s' with content '%s' is malformed GCredentials does not contain a process ID on this OS GCredentials is not implemented on this OS GDateTime%H:%M:%S GDateTime%I:%M:%S %p GDateTime%a %b %e %H:%M:%S %Y GDateTime%m/%d/%y GDateTimeAM GDateTimePM GSocketControlMessage not supported on Windows Generate dependency list Generate output in the format selected for by the target filename extension Generate source header Generate sourcecode used to link in the resource file into your code Get the value of KEY Help Options: Host unreachable Host unreachable through SOCKSv5 server. Hostname '%s' contains '[' but not ']' Hostname '%s' is too long for SOCKSv4 protocol Hostname '%s' is too long for SOCKSv5 protocol Ignored, for compat with GTestDbus Ignoring override for this key.
 Ignoring this file.
 Incomplete multibyte sequence in input Input stream doesn't implement read Input stream doesn't implement seek Integer value '%s' for %s out of range Integer value '%s' out of range Internal SOCKSv5 proxy server error. Internal error: %s Introspect a remote object. Introspect children Invalid GSeekType supplied Invalid UTF-8 encoded text in name - not valid '%s' Invalid attribute type (byte string expected) Invalid attribute type (string expected) Invalid attribute type (uint32 expected) Invalid attribute type (uint64 expected) Invalid byte sequence in conversion input Invalid compressed data Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value 0x%02x Invalid extended attribute name Invalid filename Invalid filename %s Invalid group name: %s Invalid hostname Invalid key name: %s Invalid major protocol version. Expected 1 but found %d Invalid object, not initialized Invalid program name: %s Invalid seek request Invalid sequence in conversion input Invalid socket, initialization failed due to: %s Invalid socket, not initialized Invalid string in argument vector at %d: %s Invalid string in environment: %s Invalid symlink value given Invalid working directory: %s Invoke a method on a remote object. Key '%s' in group '%s' has value '%s' where %s was expected Key file contains escape character at end of line Key file contains invalid escape sequence '%s' Key file contains key '%s' in group '%s' which has a value that cannot be interpreted. Key file contains key '%s' which has a value that cannot be interpreted. Key file contains key '%s' with value '%s' which is not UTF-8 Key file contains line '%s' which is not a key-value pair, group, or comment Key file contains unsupported encoding '%s' Key file does not have group '%s' Key file does not have key '%s' Key file does not have key '%s' in group '%s' Key file does not start with a group Key/Value pair %d, '%s', in address element '%s' does not contain an equal sign Leftover unconverted data in read buffer Length %u is too long for address Line %d of the keyring at '%s' with content '%s' is malformed List keys and values, recursively
If no SCHEMA is given, list all keys
 List resources
If SECTION is given, only list resources in this section
If PATH is given, only list matching resources List resources with details
If SECTION is given, only list resources in this section
If PATH is given, only list matching resources
Details include the section, size and compression List sections containing resources in an elf FILE List the children of SCHEMA List the installed (non-relocatable) schemas List the installed relocatable schemas List the keys in SCHEMA Listener is already closed METHOD_CALL message: PATH or MEMBER header field is missing METHOD_RETURN message: REPLY_SERIAL header field is missing Malformed input data for GFileIcon Malformed number of tokens (%d) in GEmblem encoding Malformed number of tokens (%d) in GEmblemedIcon encoding Malformed version number: %s Meaningless key/value pair combination in address entry '%s' Memory output stream not resizable Message body has signature '%s' but there is no signature header Message body has type signature '%s' but signature in the header field is '%s' Message body is empty but signature in the header field is '(%s)' Message has %d file descriptors but the header field indicates %d file descriptors Method '%s' on interface '%s' with signature '%s' does not exist Method '%s' returned type '%s', but expected '%s' Method and interface name Missing argument for %s Monitor KEY for changes.
If no KEY is specified, monitor all keys in SCHEMA.
Use ^C to stop monitoring.
 Monitor a remote object. Move between mounts not supported Multiple connection endpoints specified Need more input Network unreachable Network unreachable through SOCKSv5 proxy. No DNS record of the requested type for '%s' No MIME type defined in the bookmark for URI '%s' No PEM-encoded certificate found No PEM-encoded private key found No address specified No application is registered as handling this file No application with name '%s' registered a bookmark for '%s' No bookmark found for URI '%s' No connection endpoint specified No groups set in bookmark for URI '%s' No private flag has been defined in bookmark for URI '%s' No schema files found:  No signature header in message but the message body is %u byte No signature header in message but the message body is %u bytes No such interface No such interface '%s' No such interface '%s' on object at path %s No such interface 'org.freedesktop.DBus.Properties' on object at path %s No such key '%s'
 No such key '%s' in schema '%s' as specified in override file '%s' No such method '%s' No such property '%s' No such schema '%s'
 No support for source-specific multicast No type for class name %s No valid bookmark file found in data dirs Not a regular file Not enough memory Not enough space for socket address Not enough space in destination Not expecting control message, but got %d Object path to emit signal on Object path to introspect Object path to invoke method on Object path to monitor Odd character '%s', expected a '=' after attribute name '%s' of element '%s' Odd character '%s', expected a '>' character to end the empty-element tag '%s' Odd character '%s', expected a '>' or '/' character to end the start tag of element '%s', or optionally an attribute; perhaps you used an invalid character in an attribute name Odd character '%s', expected an open quote mark after the equals sign when giving value for attribute '%s' of element '%s' Only print properties Operation not supported Operation was cancelled Optional destination for signal (unique name) Options specifying the connection endpoint Output stream doesn't implement write PATH PCRE library is compiled with incompatible options PCRE library is compiled without UTF8 properties support PCRE library is compiled without UTF8 support POSIX collating elements are not supported POSIX named classes are supported only within a class Parsed value '%s' for variant is not a valid D-Bus signature Parsed value '%s' is not a valid D-Bus object path Parsed value '%s' is not a valid D-Bus signature Parsed value '%s' is not a valid D-Bus signature (for body) Partial character sequence at end of input Path must begin with a slash (/)
 Path must end with a slash (/)
 Path must not contain two adjacent slashes (//)
 Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o Print XML Print address Print address in shell mode Print help Property '%s' is not readable Property '%s' is not writable Proxy protocol '%s' is not supported. Proxying over a non-TCP connection is not supported. Query the range of valid values for KEY Quoted text doesn't begin with a quotation mark Received invalid fd Requested seek before the beginning of the stream Requested seek beyond the end of the stream Reset KEY to its default value Reset all keys in SCHEMA to their defaults Run a dbus service SCHEMA[:PATH] SCHEMA[:PATH] KEY SCHEMA[:PATH] KEY VALUE SCHEMA[:PATH] [KEY] SECTION SELinux context must be non-NULL SELinux is not enabled on this system SIGNAL message: PATH, INTERFACE or MEMBER header field is missing SIGNAL message: The INTERFACE header field is using the reserved value org.freedesktop.DBus.Local SIGNAL message: The PATH header field is using the reserved value /org/freedesktop/DBus/Local SOCKSv4 does not support IPv6 address '%s' SOCKSv5 authentication failed due to wrong username or password. SOCKSv5 connection not allowed by ruleset. SOCKSv5 proxy does not support 'connect' command. SOCKSv5 proxy does not support provided address type. Schema '%s' is not relocatable (path must not be specified)
 Schema '%s' is relocatable (path must be specified)
 Second token of line %d of the keyring at '%s' with content '%s' is malformed Seek not supported on base stream Seek not supported on stream Session dbus not running, and autolaunch failed Set the value of KEY to VALUE Setting attribute %s not supported Several password entered have been incorrect, and your access will be locked out after further failures. Show all help options Show help options Signal and interface name Signature header with signature '%s' found but message body is empty Socket I/O timed out Socket is already closed Source stream is already closed Splice not supported Stream doesn't support query_info Stream has outstanding operation Stream is already closed Symbolic links not supported TLS support is not available Target file exists Target file is a directory Target file is not a regular file Template '%s' doesn't contain XXXXXX Template '%s' invalid, should not contain a '%s' Temporarily unable to resolve '%s' Text ended before matching quote was found for %c. (The text was '%s') Text ended just after a '\' character. (The text was '%s') Text was empty (or contained only whitespace) The SOCKSv5 proxy requires an authentication method that is not supported by GLib. The SOCKSv5 proxy requires authentication. The SOCKSv5 proxy server uses unknown address type. The URI '%s' contains invalidly escaped characters The URI '%s' is invalid The URI '%s' is not an absolute URI using the "file" scheme The connection is closed The directories where files are to be read from (default to current directory) The file was externally modified The given address is empty The hostname of the URI '%s' is invalid The local file URI '%s' may not include a '#' The password entered is incorrect. The pathname '%s' is not an absolute path The provided value is outside of the valid range
 The resource at '%s' does not exist The resource at '%s' failed to decompress The resource at '%s' is not a directory The server is not a SOCKSv4 proxy server. The server is not a SOCKSv5 proxy server. The string '%s' is not a valid D-Bus GUID There is no GCredentials support for your platform This entire file has been ignored.
 This is the last chance to enter the password correctly before your access is locked out. Timeout in seconds Timeout was reached Too large count value passed to %s Trash not supported Truncate not allowed on input stream Truncate not supported on base stream Truncate not supported on stream Type %s does not implement from_tokens() on the GIcon interface Type %s does not implement the GIcon interface Type %s is not classed Type of message, '%s', does not match expected type '%s' URIs not supported Unable to create socket: %s Unable to create trash dir %s: %s Unable to create trashing info file: %s Unable to find default local directory monitor type Unable to find default local file monitor type Unable to find or create trash directory Unable to find terminal required for application Unable to find toplevel directory for trash Unable to get Hardware profile: %s Unable to get pending error:  Unable to get pending error: %s Unable to load /var/lib/dbus/machine-id or /etc/machine-id:  Unable to shutdown socket: %s Unable to trash file: %s Unexpected attribute '%s' for element '%s' Unexpected early end-of-stream Unexpected error in g_io_channel_win32_poll() reading data from a child process Unexpected error in select() reading data from a child process (%s) Unexpected lack of content trying to (safely) read a line Unexpected lack of content trying to read a line Unexpected reply %d from StartServiceByName("%s") method Unexpected tag '%s' inside '%s' Unexpected tag '%s', tag '%s' expected Unexpected type of ancillary data Unknown SOCKSv5 proxy error. Unknown bus type %d Unknown command %s

 Unknown error executing child process "%s" Unknown error on connect Unknown family was specified Unknown option %s Unknown or unsupported transport '%s' for address '%s' Unknown processing option "%s" Unknown protocol was specified Unknown type Unmatched quotation mark in command line or other shell-quoted text Unnamed Unsupported flags encountered when constructing a client-side connection Unsupported key '%s' in address entry '%s' Unsupported socket address Usage: Usage:
  gresource %s%s%s %s

%s

 Usage:
  gresource [--section SECTION] COMMAND [ARGS...]

Commands:
  help                      Show this information
  sections                  List resource sections
  list                      List resources
  details                   List resources with details
  extract                   Extract a resource

Use 'gresource help COMMAND' to get detailed help.

 Usage:
  gsettings [--schemadir SCHEMADIR] %s %s

%s

 Usage:
  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]

Commands:
  help                      Show this information
  list-schemas              List installed schemas
  list-relocatable-schemas  List relocatable schemas
  list-keys                 List keys in a schema
  list-children             List children of a schema
  list-recursively          List keys and values, recursively
  range                     Queries the range of a key
  get                       Get the value of a key
  set                       Set the value of a key
  reset                     Reset the value of a key
  reset-recursively         Reset all values in a given schema
  writable                  Check if a key is writable
  monitor                   Watch for changes

Use 'gsettings help COMMAND' to get detailed help.

 Username is too long for SOCKSv4 protocol Username or password is too long for SOCKSv5 protocol. Valid key file could not be found in search dirs Value '%s' cannot be interpreted as a boolean. Value '%s' cannot be interpreted as a float number. Value '%s' cannot be interpreted as a number. Waiting for socket condition: %s Wanted to read %lu byte but only got %lu Wanted to read %lu bytes but only got %lu Warning: According to introspection data, interface '%s' does not exist
 Warning: According to introspection data, method '%s' does not exist on interface '%s'
 Wrong args
 Wrong number of tokens (%d) You should give exactly one directory name
 You should give exactly one file name
 [COMMAND] [OPTION...] [PATH] [SCHEMA[:PATH]] \ at end of pattern \C not allowed in lookbehind assertion \N is not supported in a class \c at end of pattern \c must be followed by an ASCII character \g is not followed by a braced, angle-bracketed, or quoted name or number, or by a plain number \k is not followed by a braced, angle-bracketed, or quoted name ] is an invalid data character in JavaScript compatibility mode a numbered reference must not be zero a path, if given, must begin and end with a slash abbreviated month nameApr abbreviated month nameAug abbreviated month nameDec abbreviated month nameFeb abbreviated month nameJan abbreviated month nameJul abbreviated month nameJun abbreviated month nameMar abbreviated month nameMay abbreviated month nameNov abbreviated month nameOct abbreviated month nameSep abbreviated month name with dayApr abbreviated month name with dayAug abbreviated month name with dayDec abbreviated month name with dayFeb abbreviated month name with dayJan abbreviated month name with dayJul abbreviated month name with dayJun abbreviated month name with dayMar abbreviated month name with dayMay abbreviated month name with dayNov abbreviated month name with dayOct abbreviated month name with daySep abbreviated weekday nameFri abbreviated weekday nameMon abbreviated weekday nameSat abbreviated weekday nameSun abbreviated weekday nameThu abbreviated weekday nameTue abbreviated weekday nameWed an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) assertion expected after (?( association changes not supported on win32 back references as conditions are not supported for partial matching backtracking limit reached bad offset cannot add keys to a 'list-of' schema character value in \u.... sequence is too large character value in \x{...} sequence is too large code overflow conditional group contains more than two branches corrupted object could not get local address: %s could not get remote address: %s could not listen: %s creating GSocket from fd: %s different names for subpatterns of the same number are not allowed digit expected digit expected after (?+ doing nothing.
 drive doesn't implement eject drive doesn't implement eject or eject_with_operation drive doesn't implement polling for media drive doesn't implement start drive doesn't implement stop empty names are not permitted error parsing key '%s' in schema '%s' as specified in override file '%s': %s. escapes \L, \l, \N{name}, \U, and \u are not supported exactly one of 'type', 'enum' or 'flags' must be specified as an attribute to <key> failed to get memory full month nameApril full month nameAugust full month nameDecember full month nameFebruary full month nameJanuary full month nameJuly full month nameJune full month nameMarch full month nameMay full month nameNovember full month nameOctober full month nameSeptember full month name with dayApril full month name with dayAugust full month name with dayDecember full month name with dayFebruary full month name with dayJanuary full month name with dayJuly full month name with dayJune full month name with dayMarch full month name with dayMay full month name with dayNovember full month name with dayOctober full month name with daySeptember full weekday nameFriday full weekday nameMonday full weekday nameSaturday full weekday nameSunday full weekday nameThursday full weekday nameTuesday full weekday nameWednesday g_socket_get_credentials not implemented for this OS hexadecimal digit expected hexadecimal digit or '}' expected illegal symbolic reference inconsistent NEWLINE options internal error internal error or corrupted object invalid GVariant type string '%s' invalid combination of newline flags invalid condition (?(0) invalid escape sequence in character class invalid name '%s': invalid character '%c'; only lowercase letters, numbers and hyphen ('-') are permitted. invalid name '%s': maximum length is 1024 invalid name '%s': names must begin with a lowercase letter invalid name '%s': the last character may not be a hyphen ('-'). invalid name '%s': two successive hyphens ('--') are not permitted. lookbehind assertion is not fixed length malformed \P or \p sequence malformed number or name after (?( missing '<' in symbolic reference missing ) after comment missing subpattern name after (?& missing terminating ) missing terminating ] for character class missing terminator in subpattern name mount doesn't implement "eject" mount doesn't implement "eject" or "eject_with_operation" mount doesn't implement "remount" mount doesn't implement "unmount" mount doesn't implement "unmount" or "unmount_with_operation" mount doesn't implement content type guessing mount doesn't implement synchronous content type guessing name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) name of the output file no <key name='%s'> to override nothing to repeat number is too big number too big in {} quantifier numbers out of order in {} quantifier octal value is greater than \377 out of memory overran compiling workspace override for key '%s' in schema '%s' in override file '%s' is not in the list of valid choices override for key '%s' in schema '%s' in override file '%s' is outside the range given in the schema previously-checked referenced subpattern not found range out of order in character class recursion limit reached recursion loop recursive call could loop indefinitely reference to non-existent subpattern regular expression is too large removed existing output file.
 short utf8 stray final '\' subpattern name is too long (maximum 32 characters) symlink must be non-NULL text may not appear inside <%s> the path of a list must end with ':/' the pattern contains items not supported for partial matching too many forward references too many named subpatterns (maximum 10,000) two named subpatterns have the same name type is INVALID unexpected repeat unfinished symbolic reference unknown POSIX class name unknown error unknown escape sequence unknown property name after \P or \p unrecognized character after (? or (?- unrecognized character after (?< unrecognized character after (?P unrecognized character following \ volume doesn't implement eject volume doesn't implement eject or eject_with_operation volume doesn't implement mount where to store the gschemas.compiled file zero-length symbolic reference Project-Id-Version: glib master
Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general
PO-Revision-Date: 2013-04-27 22:36+0100
Last-Translator: Jorge Pérez Pérez <jorgtum@gmail.com>
Language-Team: Aragonese <softaragones@googlegroups.com>
Language: an
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Plural-Forms: nplurals=2; plural=(n != 1);
X-Generator: Poedit 1.5.4
   COMANDO   O comando (opcional) que explicar
   FICHERO      Un fichero elf (un binario u una biblioteca compartida)
   FICHERO      Un fichero elf (un binario u una biblioteca compartida)
            u un fichero de recursos compilau
   CLAU      A clau (opcional) ta l'esquema
   CLAU      A clau ta l'esquema
   ROTA      A rota d'un recurso
   ROTA      A rota (opcional) d'un recurso (puet estar parcial)
   SCHEMA      O nombre d'o esquema
  ROTA        A rota, ta los esquemas reubicables
   CARPETA_ESQUEMA: una carpeta ta mirar esquemas adicionals
   SECCIÓN   O nombre d'a sección (opcional) d'un elf
   VALOR     A valor ta establir
  (codificación no valida) y s'ha especificau --strict; salindo.
 %.1f EB %.1f EiB %.1f GB %.1f GiB %.1f KB %.1f KiB %.1f MB %.1f MiB %.1f PB %.1f PiB %.1f TB %.1f TiB %.1f kB %s byte %s bytes Mena de fichero %s mena %s %u byte %u bytes «%s» no ye un caracter valido a l'arreu d'o caracter '<'; no debe encetar un nombre d'elemento «%s» no ye un caracter valido a l'arreu d'os caracters '</'; «%s»  no debe encetar un nombre d'elemento «%s» no ye un caracter valido a l'arreu d'o nombre de l'elemento de zarre «%s»; o caracter permitiu ye '>' «%s» no ye un nombre valido «%s» no ye un nombre valido: «%c» (*MARK) debe tener un argumento (*VERB) no reconoixiu (?R u os dichitos (?[+-] han d'estar seguius por ) (Amás, tamién ha fallau a liberación d'o bloqueyo ta «%s»: %s) (Escribe un caracter qualsiquiera ta zarrar ista finestra)
 ) sin ( que lo ubrise s'ha especificau --strict; salindo.
 ; Se ye ignorando a sobrescritura ta ista clau.
 <%s it='%s'> ya especificau <%s it='%s'> encara no especificau. <child name='%s'> ya especificau <key name='%s'> ya especificada <key name='%s'> eclipsa a <key name='%s'> en <schema it='%s'>; usa <override> ta modificar a valor <override name='%s'> ya especificada S'ha proporcionau <override> pero o esquema no ye extendendo cosa <schema it='%s' list-of='%s'> extiende <schema it='%s' list-of='%s'> pero «%s» no extiende «%s» <schema it='%s'> ya especificau <schema it='%s'> extiende o esquema «%s» que encara no existe <schema it='%s'> ye una lista, extendendo <schema it='%s'> que no ye una lista <schema it='%s'> ye una lista d'o esquema «%s» que encara no existe Ya bi existe un marcador ta l'URI «%s» Ya s'ha exportau un subárbol ta %s Abortar debant de qualsiquier error en os esquemas Iste sistema no suporta adrezas de socket de dominio UNIX abstracto No se suporta o espacio de nombres abstracto O socket adhibiu ye zarrau L'adreza «%s» no ye valida (s'ameneste exactament una rota, dirtemp u claus abstractas) L'elemento d'adreza «%s» no contién dos puntos (:) L'adreza tien bits dillá d'a longaria d'o prefixo Adreza en a quala escuitar A cantidat de memoria necesaria ta procesar o escrito ye mayor que o espacio d'adrezas libre disponible Ya existe un obchecto exportau ta la interficie %s en %s Opcions de l'aplicación: A información de l'aplicación careix d'un identificador Argumentos:
 A creyación d'asociación no ye suportada en win32 L'atributo «%s» de l'elemento «%s» no s'ha trobau A valor de l'atributo d'estar no nulo Ha fallau a creyación d'o fichero de copia de seguranza Nombre de l'identificador C usau ta o codigo fuent chenerau COMANDO No puet estar una lista d'un esquema con una rota No se puet extender un esquema con una rota No se puet copiar una carpeta sobre unatra No se puet copiar sobre a carpeta No se puet copiar o fichero especial No se puet creyar a carpeta de configuración MIME %s de l'usuario: %s No se puet creyar a carpeta de configuración de l'aplicación %s de l'usuario: %s No se puet creyar o fichero d'escritorio %s de l'usuario No se puet fer una lectura en bruto (raw) en g_io_channel_read_line_string No se puet fer una lectura en bruto (raw) en g_io_channel_read_to_end No se puet trobar l'aplicación No se puet maniar a versión proporcionada d'a codificación d'icono No se puet maniar a versión %d d'a codificación GEmblem No se puet maniar a versión %d d'a codificación GEmblemedIcon No se puet maniar a versión %d d'a codificación GFileIcon No se puet maniar a versión %d d'a codificación GThemedIcon No se puet mover una carpeta sobre unatra carpeta No se puet ubrir a carpeta No se puet copiar a carpeta recursivament No se puet renombrar o fichero, o nombre de fichero ya existe No se puet renombrar a carpeta radiz A inicialización cancelable no eestá suportada Cancelau a traviés de GDBusAuthObserver::authorize-authenticated-peer No se puet convertir l'alternativa «%s» ta lo conchunto de codigos «%s» No s'ha puesto deszifrar a clau privada codificada con PEM No se puet deserializar o mensache:  No se puet determinar l'adreza d'o bus porque a variable d'entorno DBUS_STARTER_BUS_TYPE no ye establida No se puet determinar l'adreza d'o bus dende a variable d'entorno DBUS_STARTER_BUS_TYPE; variable «%s» desconoixida No se puet determinar l'adreza d'o bus de sesión (no implementau ta iste sistema operativo) No se puet invocar a lo metodo; o proxy no tien duenyo ta un nombre conoixiu y o proxy se construyó con a opción G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START No se puet escuitar en un transporte no suportau «%s» No se puet analisar a valor dople «%s» ta %s No se puet analisar a valor entera «%s» ta %s No se puet serializar o mensache:  No se pueden establir permisos en vinclos simbolicos No se puet lanzar («spawn») un mensache a lo bus con setuid No se puet lanzar («spawn») un mensache a lo bus sin un IT de maquina:  No se puet especificar o fichero de numero usau una sola vegada en creyar un servidor No se puede truncar GBufferedInputStream No se puet truncar GMemoryInputStream A canal remata en un caracter parcial O caracter se sale d'o rango ta UTF-16 O caracter se sale d'o rango ta UTF-8 O caracter de referencia «%-.*s» no codifica un caracter permitiu O caracter de referencia no remata con punto y coma; prebablement has utilizau un caracter «&» sin pretender encetar una entidat, escape o caracter "&" como &amp; Comprebar si a CLAU se puet escribir O proceso fillo HA REMATAU de TRAZA anormal O proceso fillo ha rematau con o codigo %ld O proceso fillo rematau por o sinyal %ld O proceso fillo ye estau aturau por o sinyal %ld Comandos:
  help         Amostrar ista información
  introspect   Introspeccionar un obchecto remoto
  monitor      Monitorizar un obchecto remoto
  call         Invocar un metodo sobre un obchecto remoto
  emit         Emitir un sinyal

Usa «%s COMANDO --help» ta obtener aduya d'os comandos individuals.
 Compilar a especificación d'un recurso en un fichero de recurso.
Os fichers d'especificación de recursos han de tener a extensión .gresource.xml,
y o fichero d'o recurso debe tener a extensión se diz .gresource. Compilar totz os fichers d'esquema de GSettings en una caché de esquemas.
Os fichers d'esquema han de tener a extensión .gschema.xml,
y o fichero de caché se diz gschemas.compiled. Connectar con l'adreza de D-Bus proporcionada Connectar con o bus de sesión Connectar con o bus d'o sistema Opcions de connexión d'o cabo: Connexión en progreso S'ha refusau a connexión a traviés d'o proxy SOCKSv5. S'ha refusau a connexión a traviés d'o servidor SOCKSv4 O punto de montache conteniu no existe A conversión dende o conchunto de caracters «%s» ta «%s» no ye suportada Copiar (reflink/clone) entre puntos de montache no ye suportau Copiar (reflink/clone) no ye suportau u no ha funcionau Copiar (reflink/clone) no ye suportau u no ye valido No s'ha puesto asignar %lu byte ta leyer o fichero «%s» No s'han puesto asignar %lu bytes ta leyer o fichero «%s» No s'ha puesto connectar a %s:  No s'ha puesto connectar a lo servidor proxy %s:  No s'ha puesto connectar:  No s'ha puesto creyar o monitor de ret:  No s'ha puesto creyar o monitor de ret: %s No s'ha puesto obtener l'estau d'o ret:  No s'han puesto cargar os esquemas de %s: %s
 No s'ha puesto ubrir o conversor de «%s» ta «%s» No s'ha puesto ubrir o convertidor de «%s» a «%s»: %s No s'ha puesto analisar «%s» como una mascareta d'una adreza IP No s'ha puesto analisar o certificau codificau con PEM No s'ha puesto analisar a clau privada codificada con PEM Definición presonalizada ta %s o grupo DEFINE contién mas d'una rama CARPETA O fichero d'escritorio no ha especificau o campo Exec Nombre de destín que introspeccionar Nombre d'o destín sobre o qual invocar o metodo Nombre de destín ta monitorizar No s'ha trobau a cookie con IT %d en l'aniello de claus en «%s» No forzar as restriccions de nombre d'as claus No escribir o fichero gschemas.compiled O documento remata inasperadament dimpués d'os sinyals igual que siguen a lo nombre d'atributo; sin valor d'atributo O documento remata inasperadament adentro d'un comentario u instrucción de proceso O documento remata inasperadament adentro d'un nombre d'atributo O documento remata inasperadament adentro d'un nombre d'elemento O documento ha rematau inasperadament adentro d'una etiqueta d'obridura d'elemento. O documento remata inasperadament adentro d'a etiqueta de zarre de l'elemento «%s» O documento remata inasperadament chusto dimpués d'un '<' O documento remata inasperadament adentro d'a valor d'un atributo O documento remata inasperadament con elementos encara ubiertos - «%s» ye estau o zaguer elemento ubierto O documento remata inasperadament, s'asperaba un caracter '>' rematando a etiqueta <%s/> O documento debe prencipiar con un elemento (por eixemplo: <book>) O documento yera vuedo u solament conteneba espacios en blanco No creyar y rechistrar automaticament un recurso No exportar funcions; declarar-las como G_GNUC_INTERNAL A valor dople «%s» ta %s ye difuera de rango Mensache d'ERROR: falta o campo de capitero REPLY_SERRIAL u ERROR_NAME S'ha zarrau l'elemento «%s», pero l'elemento que ye ubierto actualment ye «%s» L'elemento «%s» ye estau zarrau, no existe garra elemento ubierto No se permite l'elemento <%s> en o libel superior No se permite l'elemento <%s> en o ran superior No se permite l'elemento <%s> adentro de <%s> Emitir un sinyal. A entidat '&;' ye vueda; as entidatz validas son: &amp; &quot; &lt; &gt; &apos; S'ha proporcionau una rota vueda.
 S'ha proporcionau un nombre d'esquema vuedo
 S'ha trobau un array de longaria %u byte. A longaria maxima ye 2<<26 bytes (64 MiB). S'ha trobau un array de longaria %u bytes. A longaria maxima ye 2<<26 bytes (64 MiB). A entidat no remata con un punto y coma; prebablement has utilizau o caracter "&" sin a intención d'indicar una entidat, escape u sinyal "&" como &amp; O nombre d'a entidat «%-.*s» ye desconoixiu O enumerador ye zarrau S'ha produciu una error en acceptar a connexión: %s S'ha produciu una error a lo lanzar-ne automaticament:  S'ha produciu una error en vincular con l'adreza: %s S'ha produciu una error en clamar StartSereviceByName ta %s:  S'ha produciu una error en comprebar si SO_PASSCRED ye activada ta lo socket: %s S'ha produciu una error en zarrar (desenlazar) o fichero de bloqueyo «%s»: %s S'ha produciu una error en zarrar o descriptor d'o fichero: %s S'ha produciu una error en zarrar o fichero: %s S'ha produciu una error en zarrar o maneyador: %s S'ha produciu una error en zarrar o socket: %s S'ha produciu una error en comprimir o fichero %s S'ha produciu una error en connectar: %s
 S'ha produciu una error en creyar una copia de seguranza: %s S'ha produciu una error en creyar a carpeta «%s»: %s S'ha produciu una error en creyar a carpeta: %s S'ha produciu una error en creyar o fichero de bloqueyo «%s»: %s S'ha produciu una error en eliminar o fichero de bloqueyo antigo «%s»: %s S'ha produciu una error a lo deserializar GVariant con a mena de cadena «%s» ta lo formato de mensache de D-Bus Ha fallau entre a conversión: %s S'ha produciu una error en activar SO_PASSCRED: %s S'ha produciu una error en limpiar a connexión: %s
 S'ha produciu una error en obtener a información d'o sistema de fichers: %s S'ha produciu una error en l'adreza «%s»; l'atributo de familia ye mal formau S'ha produciu una error en l'adreza «%s»: Manca u ye mal formau l'atributo ta lo servidor S'ha produciu una error en l'adreza «%s»: Manca u ye mal formau l'atributo ta lo fichero de numero usau una sola vegada S'a produciu una error en l'adreza «%s»; l'atributo de puerto ye mal formau S'ha produciu una error en l'adreza «%s»: Manca u ye mal formau l'atributo ta lo puerto S'ha produciu una error en l'adreza «%s»: o transporte UNIX requier exactament que una d'as claus «path» u «abstract» siga establida S'ha produciu una error en unir-se a lo grupo de multicast: %s S'ha produciu una error en analisar l'aplicación: %s S'ha produciu una error en abandonar lo grupo de multicast: %s S'ha produciu una error en creyar o vinclo simbolico: %s S'ha produciu una error en mover o fichero: %s Bi ha una error en a linia %d, caracter %d:  Bi ha una error en a linia %d: %s S'ha produciu una error en ubrir a carpeta «%s»: %s S'ha produciu una error en ubrir o fichero «%s»: %s S'ha produciu una error en ubrir o fichero: %s S'ha produciu una error en ubrir l'aniello de claus «%s» ta la suya lectura:  S'ha produciu una error en ubrir l'aniello de claus «%s» ta la suya escritura: S'ha produciu una error en ubrir o fichero de numero usau una sola vegada «%s»: %s S'ha produciu una error en analisar a introspección XML: %s
 S'ha produciu una error en analisar a opción: %s S'ha produciu una error en analisar o parametro %d d'a mena «%s»: %s
 S'ha produciu una error en analisar o parametro %d: %s
 S'ha produciu una error en procesar o fichero de dentrada con to-pixdata:
%s S'ha produciu una error en procesar o fichero de dentrada con xmllint:
%s S'ha produciu una error en leyer o fichero %s: %s S'ha produciu una error en leyer o fichero «%s»: %s S'ha produciu una error en leyer d'o descriptor d'o fichero: %s S'ha produciu una error en leyer dende o fichero: %s S'ha produciu una error en leyer d'o maneyador: %s S'ha produciu una error en leyer o fichero de numero usau una sola vegada «%s», s'asperaban 16 bytes, s'obtenioron %d S'ha produciu una error en leyer o fichero de numero usau una sola vegada «%s»: %s S'ha produciu una error en recibir os datos: %s S'ha produciu una error en recibir o mensache: %s S'ha produciu una error en eliminar o fichero: %s S'ha produciu una error en eliminar o vinclo de copia de seguranza antigo: %s S'ha produciu una error en eliminar o fichero antigo: %s S'ha produciu una error en eliminar o fichero de destín: %s S'ha produciu una error en renombrar o fichero: %s S'ha produciu una error en renombrar o fichero temporal: %s SS'ha produciu una error en resolver «%s» S'ha produciu una error en resolver «%s»: %s S'ha produciu una error a lo tornar o cuerpo de mena «%s» S'ha produciu una error a lo tornar un cuerpo vuedo S'ha produciu una error en resolver «%s» de traza inversa: %s S'ha produciu una error en mirar en o fichero: %s S'ha produciu una error en ninviar as credencials:  S'ha produciu una error en ninviar os datos: %s S'ha produciu una error en ninviar o mensache: %s S'ha produciu una error a lo serializar GVariant con a mena de cadena «%s» ta lo formato de mensache de D-Bus S'ha produciu una error en establir o contexto SELinux: %s S'ha produciu una error en establir l'atributo extendiu «%s»: %s S'ha produciu una error en establir u modificar o tiempo d'acceso: %s S'ha produciu una error en establir o propietario: %s S'ha produciu una error en establir os permisos: %s S'ha produciu una error en establir a propiedat «%s»: S'asperaba a mena «%s»  pero se ha obteniu «%s» S'ha produciu una error en establir o vinclo simbolico: %s S'ha produciu una error en establir o vinclo simbolico: o fichero no ye un vinclo simbolico S'ha produciu una error en lanzar («spawn») o comando «%s»:  S'ha produciu una error en unir o fichero: %s S'ha produciu una error en mover ta la papelera lo fichero: %s S'ha produciu una error en truncar o fichero: %s S'ha produciu una error a lo desescapar a clau u a valor en o par clau/valor %d, «%s», en l'elemento d'adreza «%s» S'ha produciu una error a lo desenlazar o fichero de bloqueyo «%s»: %s S'ha produciu una error en obtener a información d'a carpeta «%s»: %s S'ha produciu una error en obtener a información d'o fichero «%s»: %s S'ha produciu una error en obtener a información d'o descriptor d'o fichero: %s S'ha produciu una error en compilar a expresión regular %s en o caracter %d: %s S'ha produciu una error en desactivar SO_PASSCRED: %s S'ha produciu una error en coincidir con a expresión regular %s: %s S'ha produciu una error en optimizar a expresión regular %s: %s S'ha produciu una error en analisar o texto de substitución «%s» en o caracter %lu: %s S'ha produciu una error en escribir o conteniu d'o fichero de numero usau una sola vegada «%s» a lo fluxo: S'ha produciu una error en escribir o fichero de numero usau una sola vegada en «%s»: %s S'ha produciu una error en escribir en o descriptor d'o fichero: %s S'ha produciu una error en escribir en o fichero: %s S'ha produciu una error en escribir en o maneyador: %s Error: %s
 S'ha produciu una error: %s no ye un nombre d'interficie valida
 S'ha produciu una error: %s no ye un nombre de miembro valido
 S'ha produciu una error: %s no ye una rota d'obchecto valida
 S'ha produciu una error: %s no ye un nombre de bus solo valido.
 S'ha produciu una error: o destín no ye especificau
 S'ha produciu una error: o nombre d'o metodo «%s» no ye valido
 S'ha produciu una error: no s'ha especificau o nombre d'o metodo
 S'ha produciu una error: no s'ha especificau a rota de l'obchecto
 S'ha produciu una error: no s'ha especificau a rota de l'obchecto.
 S'ha produciu una error: o sinyal debe estar o nombre completament qualificau.
 S'ha produciu una error: no s'ha especificau o sinyal.
 S'han acotolau totz os mecanismos d'autenticación (intentaus: %s) (disponibles: %s) O fichero existent «%s» no s'ha puesto eliminar: g_unlink() ha fallau: %s S'asperaba o byte NULL dimpués d'a cadena «%s» pero s'ha trobau o byte %d S'asperaba un GEmblem ta GEmblemedIconjo S'asperaba una cadena valida en UTF-8 pero s'han trobau bytes no validos en o byte desplazau %d (a longaria d'a cadena ye %d). A cadena UTF-8 valida dica ixe punto yera «%s». S'asperaba un mensache de control, s'han obteniu %d S'asperaba un fd pero s'han obteniu %d
 S'asperaba leyer un solo byte ta recibir as credencials pero s'han leyiu zero bytes Extrayer un fichero de recursos a stdout FICHERO FICHERO de ROTA FICHERO [ROTA] Ha fallau en cambiar ta la carpeta «%s» (%s) Ha fallau en zarrar o fichero «%s»: ha fallau fclose(): %s Ha fallau en creyar o fichero «%s»: %s Ha fallau en a creyación d'un conducto (pipe) ta comunicar-se con o proceso fillo (%s) Ha fallau en creyar o fichero temporal: %s Ha fallau en executar o proceso fillo «%s» (%s) Ha fallau en executar o proceso fillo (%s) Ha fallau en executar o programa auxiliar (%s) Ha fallau a expansión d'a linia executable «%s» con l'URI «%s» Ha fallau a lo bifurcar (fork) (%s) Ha fallau a lo bifurcar o proceso fillo (%s) Ha fallau en obtener os atributos d'o fichero «%s%s%s%s»: fstat() ha fallau: %s Ha fallau en obtener os atributos d'o fichero «%s»: fstat() ha fallau: %s Ha fallau en buscar «%s» en qualsiquier carpeta fuent Ha fallau en buscar «%s» en a carpeta actual Ha fallau a lo mapeyar o fichero «%s%s%s%s»: mmap() falló: %s Ha fallau en ubrir o fichero «%s» ta escritura: fdopen() ha fallau: %s Ha fallau en ubrir o fichero «%s»: %s Ha fallau en ubrir o fichero «%s»: fdopen() ha fallau: %s Ha fallau en ubrir o fichero «%s»: open() ha fallau: %s Ha fallau en analisar «%-.*s», o qual habría de tener un dichito adentro d'un caracter de referencia( por eixemplo &234;) - tal vegada o dichito ye masiau gran Ha fallau en leyer os datos dende un proceso fillo Ha fallau en a lectura de datos dende o proceso fillo (%s) Ha fallau en leyer suficients datos dende o conducto d'o pid fillo (%s) Ha fallau en leyer dende o conducto fillo (%s) Ha fallau en leyer dende o fichero «%s»: %s Ha fallau en leyer o vinclo simbolico «%s»: %s Ha fallau en reendrezar a salida u a dentrada d'o proceso fillo (%s) Ha fallau en renombrar o fichero «%s» a «%s»: g_rename() ha fallau: %s Ha fallau en redimensionar o fluxo de salida d'a memoria Ha fallau en escribir o fichero «%s»: ha fallau fflush(): %s Ha fallau en escribir o fichero «%s»: ha fallau fsync(): %s Ha fallau en escribir o fichero «%s»: ha fallau fwrite(): %s O fichero «%s» ye masiau gran O fichero %s amaneixe quantas vegadas en o recurso O enumerador d'o fichero tien una operación excepcional O enumerador d'o fichero ya ye zarrau Os nombres de fichero no pueden contener «%c» O sistema de fichers no suporta vinclos simbolicos Sistema de fichers radiz O primer teste d'a linia %d de l'aniello de claus en «%s» con conteniu «%s» ye mal formau GCredentials no contién un IT de proceso en iste sistema operativo GCredentials no ye implementau en iste sistema operativo %H:%M:%S %I:%M:%S %p %a %H:%M:%S, %y de %B de %Y %d/%m/%y AM PM GSocketControlMessage no ye suportau en Windows Chenerar a lista de dependencias Chenerar a salida en o formato seleccionau por a extensión d'o nombre d'o fichero objetivo Chenerar o capitero fuent Chenerar o codigo fuent usau ta enlazar o fichero d'o recurso en o suyo codigo fuent Obtener a valor d'a CLAU Opcions d'aduya: Equipo no adubible O servidor no ye adubible a traviés d'o servidor SOCKSv5. O nombre de l'equipo «%s» contién «[» pero no «]» O nombre d'equipo «%s» ye masiau luengo ta lo protocolo SOCKSv5 O nombre d'equipo «%s» ye masiau luengo ta lo protocolo SOCKSv5 S'ignora, por compatibilidat con GTestDbus Se ye ignorando a sobrescritura ta ista clau.
 Se ye ignorando iste fichero.
 Seqüencia multibyte incompleta en a dentrada O fluxo de dentrada no implementa a lectura O fluxo de dentrada no implementa la busca A valor entera «%s» ta %s ye difuera de rango A valor entera «%s» ye difuera de rango S'ha produciu una error interna de SOCKSv5 d'o servidor proxy. S'ha produciu una error interna: %s Introspeccionar un obchecto remoto. Introspeccionar o fillo S'ha proporcionau un GSeekType no valido Texto codificau como UTF-8 en o nombre no valido; «%s» no ye valido Mena d'atributo no valida (s'asperaba una cadena byte) Mena d'atributo no valida (s'asperaba una cadena) Mena d'atributo no valida (s'asperaba uint32) Mena d'atributo no valida (s'asperaba uint64) Bi ha una seqüencia de bytes no valida en a dentrada de conversión Datos comprimius no validos Valor endian no valido. S'asperaba 0x6c («l») u 0x42 («B»)» pero s'ha obteniu a valor 0x%02x Nombre extendiu de l'atributo no valido Nombre de fichero no valido Nombre de fichero no valido %s Nombre de grupo no valido: %s O nombre d'o host no ye valido Nombre de clau no valida: %s A versión prencipal d'o protocolo no ye valida. S'asperaba 1 pero s'ha trobau %d. L'obchecto no ye valido, no s'ha inicializau Nombre de programa no valido: %s Petición de busca no valida Seqüencia no valida en a dentrada de conversión Socket no valido, ha fallau a instalación a causa de: %s Socket no valido, sin inicializar Cadena no valida en o vector de l'argumento en %d: %s Cadena no valida en l'entorno: %s A valor d'o vinclo simbolico dau no ye valido Carpeta de treballo no valido: %s Invocar un metodo en un obchecto remoto. A clau «%s» en o grupo «%s» tien a valor «%s», pero s'asperaba %s O fichero de claus contién un caracter d'escape a la fin d'a linia O fichero de claus contién a seqüencia d'escape no valida «%s» O fichero de claus contién a clau «%s» en o grupo «%s» que tien una valor que no puet interpretar-se. O fichero de claus contién a clau «%s» que tien una valor que no se puet interpretar. O fichero de claus contién a clau  «%s» con a valor «%s» o qual no ye UTF-8 O fichero de claus contién a linia «%s» que no ye un par valor-clau, grupo u comentario O fichero de claus contién una codificación «%s» no suportada O fichero de claus no tien o grupo «%s» O fichero de claus no tien a clau «%s» O fichero de claus no tien a clau «%s» en o grupo «%s» O fichero de claus no empecipia por un grupo O par clau/valor %d, «%s», en l'elemento d'adreza «%s», no contién una sinyal d'igual S'han deixau datos no convertius en o búfer de lectura A longaria de %u ye masiau larga ta una adreza A linia %d de l'aniello de claus en «%s» con conteniu «%s» ye mal formada Listar as claus y as valors recursivament
Si no se proporciona un ESQUEMA, listar todas as claus
 Listar os recursos
Si se da la SECCIÓN, listar solament os recursos d'ista sección.
Si se da la ROTA, listar solament os recursos que coincidan Listar os recursos con detalles
Si se da la SECCIÓN, listar solament os recursos d'ista sección.
Si se da la ROTA, listar solament os recursos que coincidan
Os detalles incluyen a sección, a grandaria y a compresión Listar as seccions que contiengan recursos en un FICHERO elf Listar os fillos de l'ESQUEMA Listar os esquemas instalaus (no reubicables) Listar os esquemas reubicables instalaus Listar as claus en l'ESQUEMA O receptor de connexions ye zarrau Mensache de METHOD_CALL: falta o campo de capitero PATH u MEMBER Mensache de METHOD_RETURN: falta o campo de capitero REPLY_SERIAL Datos de dentrada mal formaus ta GFileIcon Numero de testes (%d) mal formaus en a codificación GEmblem Numero de testes (%d) mal formaus en a codificación GEmblemedIcon Numero de versión mal formau: %s Combinación d'o par clau/valor sin sentiu en a dentrada d'adreza «%s» O fluxo de salida d'a memoria no ye redimensionable O cuerpo d'o mensache tien la sinya «%s» pero no existe o capitero de sinyatura O cuerpo d'o mensache tien un tipo de sinyatura «%s» pero a sinyatura en o campo de capitero ye «%s» O cuerpo d'o mensache ye vuedo pero a sinyatura en o campo de capitero ye «(%s)» O mensache tien %d descriptors de fichero pero o campo de capitero indica %d descriptors de fichero O metodo «%s» con interficie «%s» y sinya «%s» no existe O metodo «%s» ha tornau a mena «%s» pero s'asperaba «%s» Nombre d'a interficie y metodo Falta un argumento ta %s Monitorizar os cambeos en a CLAU.
Si no s'especifica una CLAU, monitorizar todas as claus en l'ESQUEMA.
Usa ^C ta aturar a monitorización.
 Monitorizar un obchecto remoto. No se suporta mover fichers entre puntos de montache S'han especificau quantos puntos de connexión extremos S'ameneste mas dentrada Ret no adubible O ret no ye adubible a traviés d'o proxy SOCKSv5. No bi ha un rechistro de DNS d'a mena solicitada ta «%s» Garra mena MIME definida en o marcador ta l'URI «%s» No s'ha trobau garra certificau codificau con PEM No s'ha trobau garra clau privada codificada con PEM No s'especificó garra adreza No bi ha garra aplicación rechistrada ta maniar iste fichero Garra aplicación con nombre «%s» ha rechistrau un marcador ta «%s» No s'ha trobau un marcador ta l'URI «%s» No s'ha especificau garra punto de connexión extremo No s'ha establiu garra grupo en o marcador ta l'URI «%s» No s'ha definiu garra sinyalador privau en o marcador ta l'URI «%s» No s'ha trobau garra fichero d'esquemas:  No existe o capitero de sinyatura en o mensache pero o cuerpo d'o mensache tien %u byte No existe o capitero de sinyatura en o mensache pero o cuerpo d'o mensache tien %u bytes No existe tal interficie A interficie «%s» no existe No existe a interficie «%s» en l'obchecto en a rota %s No existe a interficie «org.freedesktop.DBus.Properties» en l'obchecto en a rota %s No existe a clau «%s»
 No existe a clau «%s» en o esquema «%s» como s'especificó en o fichero de sobrescritura «%s» No existe o metodo «%s» No existe a propiedat «%s» No existe l'esquema «%s»
 No se suporta o multicast especifico d'a fuent No existe a mena ta la clase de nombre %s No s'ha puesto trobar garra fichero de marcadors valido en as carpetas de datos No ye un fichero regular No bi ha suficient memoria No bi ha suficient espacio ta l'adreza d'o socket No bi ha suficient espacio en o destín No s'asperaba un mensache de control, pero s'ha obteniu %d Rota de l'obchecto sobre o qual emitir o sinyal Rota de l'obchecto que introspeccionar Rota de l'obchecto sobre a quala invocar o metodo Rota de l'obchecto ta monitorizar Caracter «%s» impropio, s'asperaba o caracter '=' dimpués d'o nombre de atributo «%s» de l'elemento «%s» Caracter «%s» impropio, s'asperaba un caracter «>» ta rematar a etiqueta vueda de l'elemento «%s» Caracter «%s» impropio, s'asperaba un caracter '>' u '/' ta rematar a etiqueta d'inicio de l'elemento «%s» u opcionalment un atributo; tal vegada has utilizau un caracter que no ye valido en un nombre d'atributo Caracter «%s» impropio, s'asperaba una marca d'obridura de cometas dimpués d'o sinyal igual en dar-le valor a l'atributo «%s» de l'elemento «%s» Nomás  amostrar as propiedatz Operación no suportada S'ha cancelau a operación Destín opcional ta lo sinyal (nombre solo) Opcions ta especificar a connexión d'o cabo: O fluxo de salida no implementa la escritura ROTA A biblioteca PCRE ye compilada con opcions incompatibles A biblioteca PCRE ye compilada sin suporte ta las propiedatz de UTF8 A biblioteca PCRE ye compilada sin suporte ta UTF8 os elementos POSIX recopilaus no son suportaus Solament se suportan as clases con nombres POSIX dentro d'una clase A valor analisada «%s» ta la variant no ye una sinyatura de D-Bus valida A valor analisada «%s» no ye un obchecto de rota D-Bus valido A valor analisada «%s» no ye una sinyatura de D-Bus valida A valor analisada «%s» no ye una sinyatura de D-Bus valida (ta lo cuerpo) Bi ha una seqüencia parcial de caracters en o final d'a dentrada A rota debe prencipiar con una barra (/)
 A rota debe rematar con una barra (/)
 A rota no debe contener dos barras adchacents (//)
 Os permisos d'a carpeta «%s» son mal formaus. S'asperaba o modo 0700, s'obtenió 0%o Imprentar o XML Imprentar l'adreza Imprentar l'adreza en modo consola Imprentar l'aduya No se puet leyer a clau «%s» No se puet escribir a clau «%s» O protocolo d'o proxy «%s» no se suporta. No se suporta intentar fer de proxy sobre una connexión que no ye TCP. Consultar o rango de valors validas ta la CLAU O texto entre cometas no empecipia por un signo de cometa S'ha recibiu un fd no valido A busca solicitada antes de l'inicio d'o fluxo A busca solicitada dimpués d'o final d'o fluxo Restablir a CLAU a la valor predeterminada d'ella Restablir todas as claus en un ESQUEMA a las valors predeterminadas d'ellas Executar un servicio dbus ESQUEMA[:ROTA] ESQUEMA[:ROTA] CLAU ESQUEMA[:ROTA] CLAU VALOR ESQUEMA[:ROTA] [CLAU] SECCIÓN O contexto SELinux debe estar no nulo SELinux no ye activau en iste sistema Mensache de SIGNAL: falta o campo de capitero PATH, INTERFACE u MEMBER Mensache de SIGNAL: o campo de capitero INTERFACE ye usando a valor reservada org.freedesktop.DBus.Local Mensache de SIGNAL: o campo de capitero PATH ye usando a valor reservada /org/freedesktop/DBus/Local SOCKSv4 no suporta l'adreza de IPv6 «%s» Ha fallau l'autenticación SOCKSv5 a causa d'un nombre d'usuario u una clau incorrecta. O conchunto de regles no permite a connexión SOCKSv5. O proxy SOCKSv5 no suporta lo comando «connect». O proxy SOCKSv5 no suporta a mena d'adreza proporcionada. L'esquema «%s» no ye reubicable (no cal especificar a rota)
 L'esquema «%s» ye reubicable (cal especificar a rota)
 O segundo teste d'a linia %d d'o aniello de claus en «%s» con conteniu «%s» ye mal formau No se permite mirar en o fluixo base No se permite buscar en o fluxo A sesión de dbus no ye en execución, y ha fallau o lanzamiento automatico Establir a valor d'a CLAU ta VALOR Establir l'atributo %s no ye suportau S'han introduciu quantas claus incorrectas, y lo tuyo acceso se bloqueyará dimpués de mas fallos. Amuestra todas as opcions d'aduya Amostrar as opcions d'aduya Nombres d'a interficie y sinyal S'ha trobau o capitero de sinyatura con sinyatura «%s» pero o cuerpo d'o mensache ye vuedo Ha expirau a E/S d'o socket O socket ya ye zarrau O fluxo d'orichen ya ye zarrau A unión no ye  suportada O fluxo no suporta query_*info O fluxo tien una operación excepcional O fluixo ya s'ha zarrau Vinclos simbolicos no suportaus O suporte de TSL no ye disponible O fichero de destín ya existe O fichero de destín ye una carpeta O fichero de destín no ye un fichero regular A plantilla «%s» no contién XXXXXX A plantilla «%s» no ye valida, no habría de contener un «%s» No se puet resolver «%s» temporalment O texto ha rematau antes que se trobase a cometa correspondient con %c. (O texto yera «%s») O texto remata chusto dimpués d'un caracter '\'. (O texto yera «%s») O texto ye vuedo (u no contién que espacios en blanco) O servidor SOCKSv5 requiere un metodo d'autenticación que GLib no suporta. O servidor proxy SOCKSv5 requiere autenticación. O servidor proxy SOCKSv5 usa una mena d'adreza desconoixida. L'URI «%s» contién caracters d'escape no validos L'URI «%s» no ye valido L'URI «%s» no ye una URI absoluta utilizando l'esquema «file» A connexión ye zarrada A carpeta d'a quala s'han de leyer os fichers (a predeterminada ye a carpeta actual) O fichero s'ha modificau externament L'adreza proporcionada ye vueda O nombre d'o host d'a URI «%s» no ye valido O fichero local en a URI «%s» no debe incluir un «#» A clau introducida no ye correcta O nombre d'a rota «%s» no ye una rota absoluta A valor proporcionada ye difuera d'o rango valido
 O recurso en «%s» no existe O recurso en «%s» ha fallau a lo descomprimir O recurso en «%s» no ye una carpeta O servidor no ye un servidor proxy SOCKSv4. O servidor no ye un servidor proxy SOCKSv5. A cadena «%s» no ye un GUID valido de D-Bus No existe suporte de GCredentials ta la tuya plataforma S'ha ignorau iste fichero completament.
 Ista ye a zaguera oportunidat ta introducir a clau correctament antis que o tuyo acceso se bloqueye. Tiempo d'expiración en segundos S'ha acotolau o tiempo d'expiración A valor de conteyo pasada a %s ye masiau gran No se suporta mover a la papelera No se permite truncar en o fluxo de dentrada No se suporta o truncau en o fluixo base No se suporta o truncamiento en o fluxo A mena %s no implementa from_tokens() en a interficie GIcon A mena %s no implementa a interficie GIcon A mena %s no tien clase A mena de mensache, «%s», no coincide con a mena asperada «%s» No se suportan URI No s'ha puesto creyar o socket: %s No s'ha puesto creyar a carpeta de papelera %s: %s No s'ha puesto creyar a información de papelera ta lo fichero: %s No s'ha puesto trobar a mena de monitorización d'a carpeta local predeterminada No s'ha puesto trobar o tipo de monitorización d'o fichero local predeterminau No s'ha puesto trobar u creyar a carpeta d'a papelera Ye estau imposible trobar o terminal requeriu por l'aplicación No s'ha puesto trobar a carpeta de libel superior ta la papelera No s'ha puesto obtener o perfil d'hardware: %s No s'ha puesto obtener a error pendient:  No s'ha puesto obtener a error pendient: %s No se puet cargar /var/lib/dbus/machine-it u /etc./machine-it:  No s'ha puesto desconnectar o socket: %s No s'ha puesto ninviar a la papelera lo fichero: %s Atributo inasperau «%s» ta l'elemento «%s» Fin de fluxo inasperadament prematuro S'ha produciu un fallo inasperau en g_io_channel_win32_poll() en leyer datos dende un proceso fillo S'ha produciu un fallo inasperau en select() leyendo datos dende o proceso fillo (%s) Falta de conteniu inasperada en intentar leyer (de traza segura) una linia Falta de conteniu inasperada en intentar leyer una linia Respuesta %d no asperada d'o metodo StartServiceByName(«%s») Etiqueta «%s» inasperada adentro de «%s» Etiqueta «%s» inasperada, s'asperaba a etiqueta «%s» Menas de datos complementarios inasperadas S'ha produciu una error desconoixida d'o proxy SOCKSv5. Mena de bus %d desconoixida Comando «%s» desconoixiu

 S'ha produciu un fallo desconoixiu en executar o proceso fillo «%s» S'ha produciu una error desconoixida en connectar S'ha especificau una familia desconoixida Opción desconoixida %s Transporte «%s» desconoixiu u no suportau ta l'adreza «%s» Opción de procesau desconoixida «%s» S'ha especificau un protocolo desconoixiu Mena desconoixida Falta una cometa en a linia de comandos u en unatro texto con cometas mena shell Sin nombre S'han trobau opcions no suportadas en construir a connexión d'o costau d'o client Clau «%s» no suportada en a dentrada d'adreza «%s» Adreza d'o socket no suportada Uso: Uso:
  gresource %s%s%s %s

%s

 Uso:
  gresource [--section SECCIÓN] COMANDO [ARGUMENTOS...]

Comandos:
  help                     Amostrar ista información
  sections               Listar as seccions de recursos
  list                       Listar os recursos
  details                 Listar os recursos con detalle
  extract                 Extrayer un recurso

Usa «gresource help COMANDO» ta obtener aduya detallada.

 Uso:
  gsettings [--schemadir CARPETA_ESQUEMA] %s %s

%s

 Uso:
  gsettings [--schemadir CARPETA_ESQUEMA] COMANDO [ARGUMENTOS...]

Comandos:
  help                      Amostrar ista información
  list-schemas              Listar os esquemas instalaus
  list-relocatable-schemas  Listar os esquemas reubicables
  list-keys                 Listar as claus en un esquema
  list-children             Listar os fillos d'un esquema
  list-recursively          Listar as claus y as valors recursivament
  range                     Consultar o rango d'una clau
  get                       Obtener a valor d'una clau
  set                       Establir a valor d'una clau
  reset                     Restablir a valor d'una clau
  reset-recursively         Restablir todas as valors en un esquema dau
  writable                  Comprebar si una clau se puet escribir
  monitor                   Monitorizar os cambeos

Usa «gsettings help COMANDO» ta obtener una aduya detallada.

 O nombre d'usuario u a clau son masiau luengos ta lo protocolo SOCKSv5 O nombre d'usuario u a clau son masiau luengos ta lo protocolo SOCKSv5. No s'ha puesto trobar a clau de fichero valida en as carpetas de busca A valor «%s» no puet interpretar-se como un booleano. A valor «%s» no puet interpretar-se como un numero de coma flotant. A valor «%s» no puet interpretar-se como un numero. Se ye asperando a condición d'o socket: %s Se quereba leyer %lu byte pero solament s'ha obteniu %lu Se quereban leyer %lu bytes pero solament s'ha obteniu %lu Alvertencia: seguntes a introspección d'os datos, a interficie «%s» no existe
 Alvertencia: seguntes a introspección d'os datos, o metodo «%s» no existe en a interficie «%s»
 Argumentos incorrectos
 Numero de testes (%d) incorrecto Habrás de proporcionar exactament un nombre de carpeta
 Habrás de proporcionar exactament un nombre de fichero
 [COMANDO] [OPCIÓN…] [ROTA] [ESQUEMA[:ROTA]] \ a la fin d'o patrón no se permite \C en comprebacions «lookbehind» \N no ye suportau en una clase \c a la fin d'o patrón \c debe estar siguiu d'un caracter ASCII \g no ye siguiu por un nombre entre claus, corchetes angulars u numero u entre cometas, u por un numero simple \k no ye siguiu por un nombre entre claus, gafetz angulars u entre cometas ] ye un caracter de datos no valido en o modo de compatibilidat de Javascript una referencia con numero no puet estar zero si s'especifica una rota, debe prencipiar y rematar con una barra Abr Ago Abi Feb Chi Chl Chn Mar May Nov Oct Set Abr Ago Abi Feb Chi Chl Chn Mar May Nov Oct Set Vie Lun Sab Dom Chu Mar Mie no se permite un argumento ta (*ACCEPT), (*FAIL), u (*COMMIT) s'asperaba una comprebación dimpués de (?( os cambeos d'asociación no son suportaus en win32 no se suportan referencias anteriors como condicions ta coincidencias  s'ha acotolau o limite de «backtracking» desplazamiento erronio no se pueden adhibir claus a un esquema de «lista-de» a valor d'o caracter en a seqüencia \u{…} ye masiau luenga a valor d'o caracter en la seqüencia \x{…} ye masiau luengo desbordamiento de codigo o grupo condicional contién mas de dos ramas obchecto corrupto no s'ha puesto obtener l'adreza local: %s no s'ha puesto obtener l'adreza remota: %s no s'ha puesto escuitar: %s Seye creyando lo GSocket dende fd: %s no se permiten diferents nombres ta subpatrons d'o mesmo numero s'asperaba un dichito s'asperaba un dichito dimpués de (?+ sin fer cosa.
 a unidat no implementa a expulsión a unidat no implementa a expulsión u expulsión con operación a unidat no implementa o sondeyo ta meyos a unidat no implementa reproducir a unidat no implementa aturar no se permiten nombres vuedos S'ha produciu una error en analisar a clau «%s» en o esquema «%s» como s'ha especificau en o fichero de sobrescritura «%s»: %s. as seqüencias d'escape \L, \l, \N{nombre}, \U, y \u no son suportadas Cal especificar exactament un de «type», «enum» u «flags» como atributo ta <key> ha fallau en obtener memoria Abril Agosto Aviento Febrero Chinero Chulio Chunio Marzo Mayo Noviembre Octubre Setiembre Abril Agosto Aviento Febrero Chinero Chulio Chunio Marzo Mayo Noviembre Octubre Setiembre Viernes Luns Sabado Domingo Chueves Martes Miercols g_socket_get_credentials no ye implementau en iste sistema operativo s'asperaba un dichito hexadecimal s'asperaba un dichito hexadecimal u «}» referencia simbolica ilegal opcions NEWLINE inconsistents S'ha produciu una error interna error interna u obchecto corrupto Mena de cadena GVarian «%s» no valida combinación de banderas de nueva linia no validas condición no valida (?(0) seqüencia d'escape no valida en a clase de caracter nombre «%s» no valido: o caracter «%c» no ye valido; solament se permiten nombres en minuscla, numeros y guión («-»). nombre «%s» no valido: a longaria maxima ye 1024 nombre «%s» no valido: os nombres han de prencipiar por una letra minuscla nombre «%s» no valido: o zaguer caracter no puet estar un guión («-»). nombre «%s» no valido: no se permiten dos guións seguius («--»). a comprebación «lookbehind» no tien una longaria fixa seqüencia \P u \p mal formada numero u nombre mal formau dimpués de (?( falta «<» en a referencia simbolica falta ) dimpués d'o comentario falta l'o nombre d'o subpatrón dimpués de (?& falta lo ) de rematanza falta la rematanza ] ta la clase de caracter falta o terminador en o nombre d'o subpatrón o punto de montache no implementa a expulsión («eject») o punto de montache no implementa a expulsión («eject») u expulsión con operación («eject_*with_*operation») o punto de montache no implementa o remontau («remount») o punto de montache no implementa lo desmontau («unmount») o punto de montache no implementa desmontau («umount») u desmontau con operación («unmount_*with_*operation») o punto de montache no implementa esbrinamiento d'o tipo de conteniu o punto de montache no implementa esbrinamiento d'o tipo de conteniu sincrono o nombre ye masiau luengo en (*MARK), (*PRUNE), (*SKIP), u (*THEN) nombre d'o fichero de salida no existe <key name='%s'> ta sobrescribir Pon que repetir o numero ye masiau gran numero masiau gran en o quantificador {} numeros difuera de rango en o quantificador {} a valor octal ye mayor que \377 Difuera de memoria se sobreixió o espacio de treballo de compilación a clau de sobrescritura «%s» en o esquema «%s» en o fichero de sobrescritura «%s» no ye en a lista d'opcions validas a clau de sobrescritura «%s» en o esquema «%s» en o fichero de sobrescritura «%s» ye difuera d'o rango proporcionau en o esquema no s'ha trobau o subpatrón referenciau anteriorment comprebau rango difuera d'orden en a clase de caracter s'ha acotolau o limite de recursividad bucle de repetición una clamada recursiva podrá creyar un bucle infinito referencia a un subpatrón no existent a expresión regular ye masiau luenga s'ha sacau o fichero de salida existent.
 UTF8 curto «\» a la fin d'a cadena o nombre d'o subpatrón ye masiau luengo (maximo 32 caracters) o vinclo simbolico debe estar no nulo O texto no debe amaneixer dentro de <%s> a rota d'a lista debe rematar con «:/» o patrón contién elementos no suportaus ta una coincidencia parcial masiadas referencias enta debant masiaus subpatrons con nombre (maximo 10.000) dos subpatrons tienen o mesmo nombre A mena no ye valida) repetición inasperada referencia de simbolo sin rematar nombre de clase POSIX desconoixiu error desconoixida seqüencia d'escape desconoixida nombre de propiedat desconoixiu dimpués de \P u \p caracter no reconoixiu dimpués de (? u (?- caracter no reconoixiu dimpués de (?< caracter no reconoixiu dimpués de (?P caracter no reconoixiu dimpués de \ o volumen no implementa la expulsión o volumen no implementa la expulsión u la expulsión con operación o volumen no implementa l'amontau Do almagazenar o fichero gschemas.compiled referencia simbolica de longaria zero                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libfuse: test/test_syscalls.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>
<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 style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libfuse
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_13e138d54eb8818da29c3992edef070a.html">test</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">test_syscalls.c</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#define _GNU_SOURCE</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;dirent.h&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;utime.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testfile[1024];</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testfile2[1024];</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testdir[1024];</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testdir2[1024];</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> subfile[1024];</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testfile_r[1024];</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testfile2_r[1024];</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testdir_r[1024];</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testdir2_r[1024];</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> subfile_r[1024];</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testname[256];</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testdata[] = <span class="stringliteral">&quot;abcdefghijklmnopqrstuvwxyz&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> testdata2[] = <span class="stringliteral">&quot;1234567890-=qwertyuiop[]\asdfghjkl;&#39;zxcvbnm,./&quot;</span>;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *testdir_files[] = { <span class="stringliteral">&quot;f1&quot;</span>, <span class="stringliteral">&quot;f2&quot;</span>, NULL};</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="keyword">static</span> <span class="keywordtype">long</span> seekdir_offsets[4];</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> zerodata[4096];</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> testdatalen = <span class="keyword">sizeof</span>(testdata) - 1;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> testdata2len = <span class="keyword">sizeof</span>(testdata2) - 1;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> testnum = 1;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> select_test = 0;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> skip_test = 0;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#define MAX_ENTRIES 1024</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> test_perror(<span class="keyword">const</span> <span class="keywordtype">char</span> *func, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg)</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;{</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        fprintf(stderr, <span class="stringliteral">&quot;%s %s() - %s: %s\n&quot;</span>, testname, func, msg,</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;                strerror(errno));</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> test_error(<span class="keyword">const</span> <span class="keywordtype">char</span> *func, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, ...)</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        __attribute__ ((format (printf, 2, 3)));</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;static <span class="keywordtype">void</span> __start_test(const <span class="keywordtype">char</span> *fmt, ...)</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        __attribute__ ((format (printf, 1, 2)));</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;static <span class="keywordtype">void</span> test_error(const <span class="keywordtype">char</span> *func, const <span class="keywordtype">char</span> *msg, ...)</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        va_list ap;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        fprintf(stderr, <span class="stringliteral">&quot;%s %s() - &quot;</span>, testname, func);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        va_start(ap, msg);</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;        vfprintf(stderr, msg, ap);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        va_end(ap);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;        fprintf(stderr, <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> success(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        fprintf(stderr, <span class="stringliteral">&quot;%s OK\n&quot;</span>, testname);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;}</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> __start_test(<span class="keyword">const</span> <span class="keywordtype">char</span> *fmt, ...)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        va_list ap;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        n = sprintf(testname, <span class="stringliteral">&quot;%3i [&quot;</span>, testnum++);</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        va_start(ap, fmt);</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        n += vsprintf(testname + n, fmt, ap);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        va_end(ap);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;        sprintf(testname + n, <span class="stringliteral">&quot;]&quot;</span>);</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;}</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="preprocessor">#define start_test(msg, args...) { \</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">        if ((select_test &amp;&amp; testnum != select_test) || \</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="preprocessor">            (testnum == skip_test)) { \</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">                testnum++; \</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">                return 0; \</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="preprocessor">        } \</span></div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="preprocessor">        __start_test(msg, ##args);              \</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="preprocessor">}</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor">#define PERROR(msg) test_perror(__FUNCTION__, msg)</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#define ERROR(msg, args...) test_error(__FUNCTION__, msg, ##args)</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))</span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_size(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> len)</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="keywordtype">int</span> res = stat(path, &amp;stbuf);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;                PERROR(<span class="stringliteral">&quot;stat&quot;</span>);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_size != len) {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                ERROR(<span class="stringliteral">&quot;length %u instead of %u&quot;</span>, (<span class="keywordtype">int</span>) stbuf.st_size,</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;                      (<span class="keywordtype">int</span>) len);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        }</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;}</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> fcheck_size(<span class="keywordtype">int</span> fd, <span class="keywordtype">int</span> len)</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;{</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <span class="keywordtype">int</span> res = fstat(fd, &amp;stbuf);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;                PERROR(<span class="stringliteral">&quot;fstat&quot;</span>);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        }</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_size != len) {</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;                ERROR(<span class="stringliteral">&quot;length %u instead of %u&quot;</span>, (<span class="keywordtype">int</span>) stbuf.st_size,</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;                      (<span class="keywordtype">int</span>) len);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        }</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;}</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_type(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, mode_t type)</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        <span class="keywordtype">int</span> res = lstat(path, &amp;stbuf);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;                PERROR(<span class="stringliteral">&quot;lstat&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        }</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="keywordflow">if</span> ((stbuf.st_mode &amp; S_IFMT) != type) {</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;                ERROR(<span class="stringliteral">&quot;type 0%o instead of 0%o&quot;</span>, stbuf.st_mode &amp; S_IFMT, type);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        }</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;}</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> fcheck_type(<span class="keywordtype">int</span> fd, mode_t type)</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;{</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="keywordtype">int</span> res = fstat(fd, &amp;stbuf);</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                PERROR(<span class="stringliteral">&quot;fstat&quot;</span>);</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        }</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        <span class="keywordflow">if</span> ((stbuf.st_mode &amp; S_IFMT) != type) {</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;                ERROR(<span class="stringliteral">&quot;type 0%o instead of 0%o&quot;</span>, stbuf.st_mode &amp; S_IFMT, type);</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        }</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_mode(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, mode_t mode)</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="keywordtype">int</span> res = lstat(path, &amp;stbuf);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                PERROR(<span class="stringliteral">&quot;lstat&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        }</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <span class="keywordflow">if</span> ((stbuf.st_mode &amp; 07777) != mode) {</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;                ERROR(<span class="stringliteral">&quot;mode 0%o instead of 0%o&quot;</span>, stbuf.st_mode &amp; 07777, mode);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        }</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;}</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> fcheck_mode(<span class="keywordtype">int</span> fd, mode_t mode)</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;{</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <span class="keywordtype">int</span> res = fstat(fd, &amp;stbuf);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                PERROR(<span class="stringliteral">&quot;fstat&quot;</span>);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        }</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <span class="keywordflow">if</span> ((stbuf.st_mode &amp; 07777) != mode) {</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;                ERROR(<span class="stringliteral">&quot;mode 0%o instead of 0%o&quot;</span>, stbuf.st_mode &amp; 07777, mode);</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        }</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;}</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_times(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, time_t atime, time_t mtime)</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;{</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        <span class="keywordtype">int</span> res = lstat(path, &amp;stbuf);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                PERROR(<span class="stringliteral">&quot;lstat&quot;</span>);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        }</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_atime != atime) {</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                ERROR(<span class="stringliteral">&quot;atime %li instead of %li&quot;</span>, stbuf.st_atime, atime);</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;                err--;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        }</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_mtime != mtime) {</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;                ERROR(<span class="stringliteral">&quot;mtime %li instead of %li&quot;</span>, stbuf.st_mtime, mtime);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;                err--;</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        }</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;}</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> fcheck_times(<span class="keywordtype">int</span> fd, time_t atime, time_t mtime)</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;{</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;        <span class="keywordtype">int</span> res = fstat(fd, &amp;stbuf);</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                PERROR(<span class="stringliteral">&quot;fstat&quot;</span>);</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        }</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_atime != atime) {</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                ERROR(<span class="stringliteral">&quot;atime %li instead of %li&quot;</span>, stbuf.st_atime, atime);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                err--;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        }</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_mtime != mtime) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                ERROR(<span class="stringliteral">&quot;mtime %li instead of %li&quot;</span>, stbuf.st_mtime, mtime);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                err--;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        }</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;}</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_nlink(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, nlink_t nlink)</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        <span class="keywordtype">int</span> res = lstat(path, &amp;stbuf);</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                PERROR(<span class="stringliteral">&quot;lstat&quot;</span>);</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        }</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_nlink != nlink) {</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                ERROR(<span class="stringliteral">&quot;nlink %li instead of %li&quot;</span>, (<span class="keywordtype">long</span>) stbuf.st_nlink,</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                      (<span class="keywordtype">long</span>) nlink);</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        }</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;}</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> fcheck_nlink(<span class="keywordtype">int</span> fd, nlink_t nlink)</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;        <span class="keywordtype">int</span> res = fstat(fd, &amp;stbuf);</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;                PERROR(<span class="stringliteral">&quot;fstat&quot;</span>);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;        }</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        <span class="keywordflow">if</span> (stbuf.st_nlink != nlink) {</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;                ERROR(<span class="stringliteral">&quot;nlink %li instead of %li&quot;</span>, (<span class="keywordtype">long</span>) stbuf.st_nlink,</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;                      (<span class="keywordtype">long</span>) nlink);</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;        }</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;}</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_nonexist(<span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;{</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        <span class="keyword">struct </span>stat stbuf;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;        <span class="keywordtype">int</span> res = lstat(path, &amp;stbuf);</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;        <span class="keywordflow">if</span> (res == 0) {</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                ERROR(<span class="stringliteral">&quot;file should not exist&quot;</span>);</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        }</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        <span class="keywordflow">if</span> (errno != ENOENT) {</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;                ERROR(<span class="stringliteral">&quot;file should not exist: %s&quot;</span>, strerror(errno));</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;        }</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;}</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_buffer(<span class="keyword">const</span> <span class="keywordtype">char</span> *buf, <span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">unsigned</span> len)</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;{</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        <span class="keywordflow">if</span> (memcmp(buf, data, len) != 0) {</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;                ERROR(<span class="stringliteral">&quot;data mismatch&quot;</span>);</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        }</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;}</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_data(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">int</span> offset,</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;                      <span class="keywordtype">unsigned</span> len)</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;{</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="keywordtype">char</span> buf[4096];</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        <span class="keywordtype">int</span> fd = open(path, O_RDONLY);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;                PERROR(<span class="stringliteral">&quot;open&quot;</span>);</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        }</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;        <span class="keywordflow">if</span> (lseek(fd, offset, SEEK_SET) == (off_t) -1) {</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;                PERROR(<span class="stringliteral">&quot;lseek&quot;</span>);</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;                close(fd);</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        }</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="keywordflow">while</span> (len) {</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;                <span class="keywordtype">int</span> rdlen = len &lt; <span class="keyword">sizeof</span>(buf) ? len : <span class="keyword">sizeof</span>(buf);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;                res = read(fd, buf, rdlen);</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;                <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;                        PERROR(<span class="stringliteral">&quot;read&quot;</span>);</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;                        close(fd);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;                }</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;                <span class="keywordflow">if</span> (res != rdlen) {</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;                        ERROR(<span class="stringliteral">&quot;short read: %u instead of %u&quot;</span>, res, rdlen);</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;                        close(fd);</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;                }</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;                <span class="keywordflow">if</span> (check_buffer(buf, data, rdlen) != 0) {</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;                        close(fd);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;                }</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;                data += rdlen;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;                len -= rdlen;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        }</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;        res = close(fd);</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;                PERROR(<span class="stringliteral">&quot;close&quot;</span>);</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;        }</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;}</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> fcheck_data(<span class="keywordtype">int</span> fd, <span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">int</span> offset,</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                       <span class="keywordtype">unsigned</span> len)</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;{</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        <span class="keywordtype">char</span> buf[4096];</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="keywordflow">if</span> (lseek(fd, offset, SEEK_SET) == (off_t) -1) {</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;                PERROR(<span class="stringliteral">&quot;lseek&quot;</span>);</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        }</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        <span class="keywordflow">while</span> (len) {</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;                <span class="keywordtype">int</span> rdlen = len &lt; <span class="keyword">sizeof</span>(buf) ? len : <span class="keyword">sizeof</span>(buf);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                res = read(fd, buf, rdlen);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;                        PERROR(<span class="stringliteral">&quot;read&quot;</span>);</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                }</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                <span class="keywordflow">if</span> (res != rdlen) {</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;                        ERROR(<span class="stringliteral">&quot;short read: %u instead of %u&quot;</span>, res, rdlen);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                }</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                <span class="keywordflow">if</span> (check_buffer(buf, data, rdlen) != 0) {</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;                }</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;                data += rdlen;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;                len -= rdlen;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        }</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;}</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> check_dir_contents(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> **contents)</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;{</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;        <span class="keywordtype">int</span> found[MAX_ENTRIES];</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *cont[MAX_ENTRIES];</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        DIR *dp;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        <span class="keywordflow">for</span> (i = 0; contents[i]; i++) {</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;                assert(i &lt; MAX_ENTRIES - 3);</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                found[i] = 0;</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                cont[i] = contents[i];</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;        }</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        found[i] = 0;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;        cont[i++] = <span class="stringliteral">&quot;.&quot;</span>;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        found[i] = 0;</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;        cont[i++] = <span class="stringliteral">&quot;..&quot;</span>;</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        cont[i] = NULL;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        dp = opendir(path);</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordflow">if</span> (dp == NULL) {</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                PERROR(<span class="stringliteral">&quot;opendir&quot;</span>);</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;        }</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        memset(found, 0, <span class="keyword">sizeof</span>(found));</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        <span class="keywordflow">while</span>(1) {</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;                <span class="keyword">struct </span>dirent *de;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;                errno = 0;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;                de = readdir(dp);</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;                <span class="keywordflow">if</span> (de == NULL) {</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                        <span class="keywordflow">if</span> (errno) {</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;                                PERROR(<span class="stringliteral">&quot;readdir&quot;</span>);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;                                closedir(dp);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;                                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;                        }</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;                }</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;                <span class="keywordflow">for</span> (i = 0; cont[i] != NULL; i++) {</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;                        assert(i &lt; MAX_ENTRIES);</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;                        <span class="keywordflow">if</span> (strcmp(cont[i], de-&gt;d_name) == 0) {</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;                                <span class="keywordflow">if</span> (found[i]) {</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;                                        ERROR(<span class="stringliteral">&quot;duplicate entry &lt;%s&gt;&quot;</span>,</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;                                              de-&gt;d_name);</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;                                        err--;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;                                } <span class="keywordflow">else</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;                                        found[i] = 1;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;                                <span class="keywordflow">break</span>;</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                        }</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                }</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                <span class="keywordflow">if</span> (!cont[i]) {</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                        ERROR(<span class="stringliteral">&quot;unexpected entry &lt;%s&gt;&quot;</span>, de-&gt;d_name);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                        err --;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                }</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        }</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;        <span class="keywordflow">for</span> (i = 0; cont[i] != NULL; i++) {</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;                <span class="keywordflow">if</span> (!found[i]) {</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;                        ERROR(<span class="stringliteral">&quot;missing entry &lt;%s&gt;&quot;</span>, cont[i]);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                        err--;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;                }</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;        }</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;        res = closedir(dp);</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;                PERROR(<span class="stringliteral">&quot;closedir&quot;</span>);</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        }</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;}</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> create_file(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> *data, <span class="keywordtype">int</span> len)</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;{</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        unlink(path);</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        fd = creat(path, 0644);</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;                PERROR(<span class="stringliteral">&quot;creat&quot;</span>);</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        }</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;        <span class="keywordflow">if</span> (len) {</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;                res = write(fd, data, len);</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                        PERROR(<span class="stringliteral">&quot;write&quot;</span>);</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;                        close(fd);</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;                }</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;                <span class="keywordflow">if</span> (res != len) {</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;                        ERROR(<span class="stringliteral">&quot;write is short: %u instead of %u&quot;</span>, res, len);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;                        close(fd);</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                }</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;        }</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;        res = close(fd);</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;                PERROR(<span class="stringliteral">&quot;close&quot;</span>);</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        }</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        res = check_type(path, S_IFREG);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;        res = check_mode(path, 0644);</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;        res = check_nlink(path, 1);</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        res = check_size(path, len);</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <span class="keywordflow">if</span> (len) {</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;                res = check_data(path, data, 0, len);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;        }</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;}</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> cleanup_dir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> **dir_files, <span class="keywordtype">int</span> quiet)</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;{</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        <span class="keywordflow">for</span> (i = 0; dir_files[i]; i++) {</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;                <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;                <span class="keywordtype">char</span> fpath[1024];</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;                sprintf(fpath, <span class="stringliteral">&quot;%s/%s&quot;</span>, path, dir_files[i]);</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;                res = unlink(fpath);</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;                <span class="keywordflow">if</span> (res == -1 &amp;&amp; !quiet) {</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;                        PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;                        err --;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;                }</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;        }</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;}</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> create_dir(<span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keyword">const</span> <span class="keywordtype">char</span> **dir_files)</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;{</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;        rmdir(path);</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;        res = mkdir(path, 0755);</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;        }</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        res = check_type(path, S_IFDIR);</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        res = check_mode(path, 0755);</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        <span class="keywordflow">for</span> (i = 0; dir_files[i]; i++) {</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;                <span class="keywordtype">char</span> fpath[1024];</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;                sprintf(fpath, <span class="stringliteral">&quot;%s/%s&quot;</span>, path, dir_files[i]);</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;                res = create_file(fpath, <span class="stringliteral">&quot;&quot;</span>, 0);</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;                <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;                        cleanup_dir(path, dir_files, 1);</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;                }</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        }</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;        res = check_dir_contents(path, dir_files);</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;                cleanup_dir(path, dir_files, 1);</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;        }</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;}</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_truncate(<span class="keywordtype">int</span> len)</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;{</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        start_test(<span class="stringliteral">&quot;truncate(%u)&quot;</span>, (<span class="keywordtype">int</span>) len);</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;        res = create_file(testfile, data, datalen);</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        res = truncate(testfile, len);</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;                PERROR(<span class="stringliteral">&quot;truncate&quot;</span>);</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;        }</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;        res = check_size(testfile, len);</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        <span class="keywordflow">if</span> (len &gt; 0) {</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;                <span class="keywordflow">if</span> (len &lt;= datalen) {</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;                        res = check_data(testfile, data, 0, len);</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;                        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;                                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;                        res = check_data(testfile, data, 0, datalen);</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;                        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;                                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;                        res = check_data(testfile, zerodata, datalen,</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;                                         len - datalen);</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;                        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;                                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;                }</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;        }</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        }</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;        success();</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;}</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_ftruncate(<span class="keywordtype">int</span> len, <span class="keywordtype">int</span> mode)</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;{</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;        start_test(<span class="stringliteral">&quot;ftruncate(%u) mode: 0%03o&quot;</span>, len, mode);</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;        res = create_file(testfile, data, datalen);</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;        fd = open(testfile, O_WRONLY);</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;        <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;                PERROR(<span class="stringliteral">&quot;open&quot;</span>);</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;        }</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;        res = fchmod(fd, mode);</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;                PERROR(<span class="stringliteral">&quot;fchmod&quot;</span>);</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;                close(fd);</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;        }</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;        res = check_mode(testfile, mode);</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;                close(fd);</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        }</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;        res = ftruncate(fd, len);</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;                PERROR(<span class="stringliteral">&quot;ftruncate&quot;</span>);</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;                close(fd);</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;        }</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;        close(fd);</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;        res = check_size(testfile, len);</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        <span class="keywordflow">if</span> (len &gt; 0) {</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;                <span class="keywordflow">if</span> (len &lt;= datalen) {</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;                        res = check_data(testfile, data, 0, len);</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;                        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;                                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;                        res = check_data(testfile, data, 0, datalen);</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;                        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;                                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;                        res = check_data(testfile, zerodata, datalen,</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;                                         len - datalen);</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;                        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;                                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;                }</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        }</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;        }</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;        success();</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;}</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_seekdir(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;{</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;        <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;        DIR *dp;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;        <span class="keyword">struct </span>dirent *de;</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        start_test(<span class="stringliteral">&quot;seekdir&quot;</span>);</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;        res = create_dir(testdir, testdir_files);</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;                <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;        dp = opendir(testdir);</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;        <span class="keywordflow">if</span> (dp == NULL) {</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;                PERROR(<span class="stringliteral">&quot;opendir&quot;</span>);</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;        }</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;        <span class="comment">/* Remember dir offsets */</span></div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;        <span class="keywordflow">for</span> (i = 0; i &lt; ARRAY_SIZE(seekdir_offsets); i++) {</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                seekdir_offsets[i] = telldir(dp);</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;                errno = 0;</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;                de = readdir(dp);</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;                <span class="keywordflow">if</span> (de == NULL) {</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                        <span class="keywordflow">if</span> (errno) {</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;                                PERROR(<span class="stringliteral">&quot;readdir&quot;</span>);</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;                                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;                        }</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                        <span class="keywordflow">break</span>;</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;                }</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;        }</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;        <span class="comment">/* Walk until the end of directory */</span></div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        <span class="keywordflow">while</span> (de)</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;                de = readdir(dp);</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;        <span class="comment">/* Start from the last valid dir offset and seek backwards */</span></div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;        <span class="keywordflow">for</span> (i--; i &gt;= 0; i--) {</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;                seekdir(dp, seekdir_offsets[i]);</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;                de = readdir(dp);</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;                <span class="keywordflow">if</span> (de == NULL) {</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;                        ERROR(<span class="stringliteral">&quot;Unexpected end of directory after seekdir()&quot;</span>);</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;                        <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;                }</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;        }</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;        closedir(dp);</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;        res = cleanup_dir(testdir, testdir_files, 0);</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;        <span class="keywordflow">if</span> (!res)</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;                success();</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;        <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;fail:</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;        closedir(dp);</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;        cleanup_dir(testdir, testdir_files, 1);</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;}</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<span class="preprocessor">#ifdef HAVE_COPY_FILE_RANGE</span></div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_copy_file_range(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;{</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        <span class="keywordtype">int</span> fd_in, fd_out;</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;        off_t pos_in = 0, pos_out = 0;</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;        start_test(<span class="stringliteral">&quot;copy_file_range&quot;</span>);</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;        unlink(testfile);</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;        fd_in = open(testfile, O_CREAT | O_RDWR, 0644);</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;        <span class="keywordflow">if</span> (fd_in == -1) {</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;                PERROR(<span class="stringliteral">&quot;creat&quot;</span>);</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;        }</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;        res = write(fd_in, data, datalen);</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;                PERROR(<span class="stringliteral">&quot;write&quot;</span>);</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;                close(fd_in);</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;        }</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;        <span class="keywordflow">if</span> (res != datalen) {</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;                ERROR(<span class="stringliteral">&quot;write is short: %u instead of %u&quot;</span>, res, datalen);</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;                close(fd_in);</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;        }</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;        unlink(testfile2);</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;        fd_out = creat(testfile2, 0644);</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;        <span class="keywordflow">if</span> (fd_out == -1) {</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;                PERROR(<span class="stringliteral">&quot;creat&quot;</span>);</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;                close(fd_in);</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;        }</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;        res = copy_file_range(fd_in, &amp;pos_in, fd_out, &amp;pos_out, datalen, 0);</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;                PERROR(<span class="stringliteral">&quot;copy_file_range&quot;</span>);</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;                close(fd_in);</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;                close(fd_out);</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;        }</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;        <span class="keywordflow">if</span> (res != datalen) {</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;                ERROR(<span class="stringliteral">&quot;copy is short: %u instead of %u&quot;</span>, res, datalen);</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;                close(fd_in);</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;                close(fd_out);</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;        }</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;        res = close(fd_in);</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;                PERROR(<span class="stringliteral">&quot;close&quot;</span>);</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;        }</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;        res = close(fd_out);</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;                PERROR(<span class="stringliteral">&quot;close&quot;</span>);</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;        }</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;        err = check_data(testfile2, data, 0, datalen);</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;        }</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;        res = unlink(testfile2);</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;        }</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;        res = check_nonexist(testfile2);</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;        success();</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;}</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_copy_file_range(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;{</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;}</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_utime(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;{</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;        <span class="keyword">struct </span>utimbuf utm;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;        time_t atime = 987631200;</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;        time_t mtime = 123116400;</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;        start_test(<span class="stringliteral">&quot;utime&quot;</span>);</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;        res = create_file(testfile, NULL, 0);</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;        utm.actime = atime;</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;        utm.modtime = mtime;</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;        res = utime(testfile, &amp;utm);</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;                PERROR(<span class="stringliteral">&quot;utime&quot;</span>);</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;        }</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;        res = check_times(testfile, atime, mtime);</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;        }</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;        }</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;        success();</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;}</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_create(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;{</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;        start_test(<span class="stringliteral">&quot;create&quot;</span>);</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;        unlink(testfile);</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;        fd = creat(testfile, 0644);</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;        <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;                PERROR(<span class="stringliteral">&quot;creat&quot;</span>);</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;        }</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;        res = write(fd, data, datalen);</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;                PERROR(<span class="stringliteral">&quot;write&quot;</span>);</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;                close(fd);</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;        }</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;        <span class="keywordflow">if</span> (res != datalen) {</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;                ERROR(<span class="stringliteral">&quot;write is short: %u instead of %u&quot;</span>, res, datalen);</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;                close(fd);</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;        }</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;        res = close(fd);</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;                PERROR(<span class="stringliteral">&quot;close&quot;</span>);</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;        }</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;        res = check_type(testfile, S_IFREG);</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;        err += check_mode(testfile, 0644);</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;        err += check_nlink(testfile, 1);</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;        err += check_size(testfile, datalen);</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;        err += check_data(testfile, data, 0, datalen);</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;        }</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;        success();</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;}</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_create_unlink(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;{</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;        start_test(<span class="stringliteral">&quot;create+unlink&quot;</span>);</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;        unlink(testfile);</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;        fd = open(testfile, O_CREAT | O_RDWR | O_TRUNC, 0644);</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;        <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;                PERROR(<span class="stringliteral">&quot;creat&quot;</span>);</div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;        }</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;                close(fd);</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;        }</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;        res = write(fd, data, datalen);</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;                PERROR(<span class="stringliteral">&quot;write&quot;</span>);</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;                close(fd);</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;        }</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;        <span class="keywordflow">if</span> (res != datalen) {</div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;                ERROR(<span class="stringliteral">&quot;write is short: %u instead of %u&quot;</span>, res, datalen);</div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;                close(fd);</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;        }</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;        err += fcheck_type(fd, S_IFREG);</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;        err += fcheck_mode(fd, 0644);</div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;        err += fcheck_nlink(fd, 0);</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;        err += fcheck_size(fd, datalen);</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;        err += fcheck_data(fd, data, 0, datalen);</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;        res = close(fd);</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;                PERROR(<span class="stringliteral">&quot;close&quot;</span>);</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;                err--;</div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;        }</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;        success();</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;}</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;<span class="preprocessor">#ifndef __FreeBSD__</span></div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_mknod(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;{</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;        start_test(<span class="stringliteral">&quot;mknod&quot;</span>);</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;        unlink(testfile);</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;        res = mknod(testfile, 0644, 0);</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;                PERROR(<span class="stringliteral">&quot;mknod&quot;</span>);</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;        }</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;        res = check_type(testfile, S_IFREG);</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;        err += check_mode(testfile, 0644);</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;        err += check_nlink(testfile, 1);</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;        err += check_size(testfile, 0);</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;        }</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;        success();</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;}</div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;<span class="preprocessor">#define test_open(exist, flags, mode)  do_test_open(exist, flags, #flags, mode)</span></div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> do_test_open(<span class="keywordtype">int</span> exist, <span class="keywordtype">int</span> flags, <span class="keyword">const</span> <span class="keywordtype">char</span> *flags_str, <span class="keywordtype">int</span> mode)</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;{</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;        <span class="keywordtype">char</span> buf[4096];</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;        <span class="keywordtype">unsigned</span> currlen = 0;</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;        off_t off;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;        start_test(<span class="stringliteral">&quot;open(%s, %s, 0%03o)&quot;</span>, exist ? <span class="stringliteral">&quot;+&quot;</span> : <span class="stringliteral">&quot;-&quot;</span>, flags_str, mode);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;        unlink(testfile);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;        <span class="keywordflow">if</span> (exist) {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;                res = create_file(testfile_r, testdata2, testdata2len);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;                currlen = testdata2len;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;        }</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;        fd = open(testfile, flags, mode);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;        <span class="keywordflow">if</span> ((flags &amp; O_CREAT) &amp;&amp; (flags &amp; O_EXCL) &amp;&amp; exist) {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;                <span class="keywordflow">if</span> (fd != -1) {</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;                        ERROR(<span class="stringliteral">&quot;open should have failed&quot;</span>);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;                        close(fd);</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (errno == EEXIST)</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;                        <span class="keywordflow">goto</span> succ;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;        }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;        <span class="keywordflow">if</span> (!(flags &amp; O_CREAT) &amp;&amp; !exist) {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;                <span class="keywordflow">if</span> (fd != -1) {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;                        ERROR(<span class="stringliteral">&quot;open should have failed&quot;</span>);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;                        close(fd);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (errno == ENOENT)</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;                        <span class="keywordflow">goto</span> succ;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;        }</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;        <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;                PERROR(<span class="stringliteral">&quot;open&quot;</span>);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;        }</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;        <span class="keywordflow">if</span> (flags &amp; O_TRUNC)</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;                currlen = 0;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;        err += check_type(testfile, S_IFREG);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;        <span class="keywordflow">if</span> (exist)</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;                err += check_mode(testfile, 0644);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;                err += check_mode(testfile, mode);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;        err += check_nlink(testfile, 1);</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;        err += check_size(testfile, currlen);</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;        <span class="keywordflow">if</span> (exist &amp;&amp; !(flags &amp; O_TRUNC) &amp;&amp; (mode &amp; 0400))</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;                err += check_data(testfile, testdata2, 0, testdata2len);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;        res = write(fd, data, datalen);</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;        <span class="keywordflow">if</span> ((flags &amp; O_ACCMODE) != O_RDONLY) {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;                <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;                        PERROR(<span class="stringliteral">&quot;write&quot;</span>);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;                        err --;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (res != datalen) {</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;                        ERROR(<span class="stringliteral">&quot;write is short: %u instead of %u&quot;</span>, res, datalen);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;                        err --;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;                        <span class="keywordflow">if</span> (datalen &gt; (<span class="keywordtype">int</span>) currlen)</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;                                currlen = datalen;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;                        err += check_size(testfile, currlen);</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;                        <span class="keywordflow">if</span> (mode &amp; 0400) {</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;                                err += check_data(testfile, data, 0, datalen);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;                                <span class="keywordflow">if</span> (exist &amp;&amp; !(flags &amp; O_TRUNC) &amp;&amp;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;                                    testdata2len &gt; datalen)</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;                                        err += check_data(testfile,</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;                                                          testdata2 + datalen,</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;                                                          datalen,</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;                                                          testdata2len - datalen);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;                        }</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;                }</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;                <span class="keywordflow">if</span> (res != -1) {</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;                        ERROR(<span class="stringliteral">&quot;write should have failed&quot;</span>);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;                        err --;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (errno != EBADF) {</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;                        PERROR(<span class="stringliteral">&quot;write&quot;</span>);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;                        err --;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;                }</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;        }</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;        off = lseek(fd, SEEK_SET, 0);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;        <span class="keywordflow">if</span> (off == (off_t) -1) {</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;                PERROR(<span class="stringliteral">&quot;lseek&quot;</span>);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;                err--;</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (off != 0) {</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;                ERROR(<span class="stringliteral">&quot;offset should have returned 0&quot;</span>);</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;                err --;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;        }</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;        res = read(fd, buf, <span class="keyword">sizeof</span>(buf));</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;        <span class="keywordflow">if</span> ((flags &amp; O_ACCMODE) != O_WRONLY) {</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;                <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;                        PERROR(<span class="stringliteral">&quot;read&quot;</span>);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;                        err--;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;                        <span class="keywordtype">int</span> readsize =</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;                                currlen &lt; <span class="keyword">sizeof</span>(buf) ? currlen : <span class="keyword">sizeof</span>(buf);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;                        <span class="keywordflow">if</span> (res != readsize) {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;                                ERROR(<span class="stringliteral">&quot;read is short: %i instead of %u&quot;</span>,</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;                                      res, readsize);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;                                err--;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;                                <span class="keywordflow">if</span> ((flags &amp; O_ACCMODE) != O_RDONLY) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;                                        err += check_buffer(buf, data, datalen);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;                                        <span class="keywordflow">if</span> (exist &amp;&amp; !(flags &amp; O_TRUNC) &amp;&amp;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;                                            testdata2len &gt; datalen)</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;                                                err += check_buffer(buf + datalen,</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;                                                                    testdata2 + datalen,</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;                                                                    testdata2len - datalen);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;                                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (exist)</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;                                        err += check_buffer(buf, testdata2,</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;                                                            testdata2len);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;                        }</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;                }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;                <span class="keywordflow">if</span> (res != -1) {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;                        ERROR(<span class="stringliteral">&quot;read should have failed&quot;</span>);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;                        err --;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;                } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (errno != EBADF) {</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;                        PERROR(<span class="stringliteral">&quot;read&quot;</span>);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;                        err --;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;                }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;        }</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;        res = close(fd);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;                PERROR(<span class="stringliteral">&quot;close&quot;</span>);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;        }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;        }</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;        res = check_nonexist(testfile_r);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;succ:</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;        success();</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;}</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="preprocessor">#define test_open_acc(flags, mode, err)  \</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="preprocessor">        do_test_open_acc(flags, #flags, mode, err)</span></div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> do_test_open_acc(<span class="keywordtype">int</span> flags, <span class="keyword">const</span> <span class="keywordtype">char</span> *flags_str, <span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> err)</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;{</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;        start_test(<span class="stringliteral">&quot;open_acc(%s) mode: 0%03o message: &#39;%s&#39;&quot;</span>, flags_str, mode,</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;                   strerror(err));</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;        unlink(testfile);</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;        res = create_file(testfile, data, datalen);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;        res = chmod(testfile, mode);</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;                PERROR(<span class="stringliteral">&quot;chmod&quot;</span>);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;        }</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;        res = check_mode(testfile, mode);</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;        fd = open(testfile, flags);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;        <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;                <span class="keywordflow">if</span> (err != errno) {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;                        PERROR(<span class="stringliteral">&quot;open&quot;</span>);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;                }</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;                <span class="keywordflow">if</span> (err) {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;                        ERROR(<span class="stringliteral">&quot;open should have failed&quot;</span>);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;                        close(fd);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;                        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;                }</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;                close(fd);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;        }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;        success();</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;}</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_symlink(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;{</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;        <span class="keywordtype">char</span> buf[1024];</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;        <span class="keywordtype">int</span> linklen = strlen(testfile);</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;        start_test(<span class="stringliteral">&quot;symlink&quot;</span>);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;        res = create_file(testfile, data, datalen);</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;        unlink(testfile2);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;        res = symlink(testfile, testfile2);</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;                PERROR(<span class="stringliteral">&quot;symlink&quot;</span>);</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;        }</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;        res = check_type(testfile2, S_IFLNK);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;        err += check_mode(testfile2, 0777);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;        err += check_nlink(testfile2, 1);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;        res = readlink(testfile2, buf, <span class="keyword">sizeof</span>(buf));</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;                PERROR(<span class="stringliteral">&quot;readlink&quot;</span>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;                err--;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;        }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;        <span class="keywordflow">if</span> (res != linklen) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;                ERROR(<span class="stringliteral">&quot;short readlink: %u instead of %u&quot;</span>, res, linklen);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;                err--;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;        }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;        <span class="keywordflow">if</span> (memcmp(buf, testfile, linklen) != 0) {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;                ERROR(<span class="stringliteral">&quot;link mismatch&quot;</span>);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;                err--;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;        }</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;        err += check_size(testfile2, datalen);</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;        err += check_data(testfile2, data, 0, datalen);</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;        res = unlink(testfile2);</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;        }</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;        res = check_nonexist(testfile2);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;        success();</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;}</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_link(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;{</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;        start_test(<span class="stringliteral">&quot;link&quot;</span>);</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;        res = create_file(testfile, data, datalen);</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;        unlink(testfile2);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;        res = link(testfile, testfile2);</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;                PERROR(<span class="stringliteral">&quot;link&quot;</span>);</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;        }</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;        res = check_type(testfile2, S_IFREG);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;        err += check_mode(testfile2, 0644);</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;        err += check_nlink(testfile2, 2);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;        err += check_size(testfile2, datalen);</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;        err += check_data(testfile2, data, 0, datalen);</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;        }</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;        err += check_nlink(testfile2, 1);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;        res = unlink(testfile2);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;        }</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;        res = check_nonexist(testfile2);</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;        success();</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;}</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_link2(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;{</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;        start_test(<span class="stringliteral">&quot;link-unlink-link&quot;</span>);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;        res = create_file(testfile, data, datalen);</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;        unlink(testfile2);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;        res = link(testfile, testfile2);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;                PERROR(<span class="stringliteral">&quot;link&quot;</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;        }</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;        }</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;        res = link(testfile2, testfile);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;                PERROR(<span class="stringliteral">&quot;link&quot;</span>);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;        }</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;        res = check_type(testfile, S_IFREG);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;        err += check_mode(testfile, 0644);</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;        err += check_nlink(testfile, 2);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;        err += check_size(testfile, datalen);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;        err += check_data(testfile, data, 0, datalen);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;        res = unlink(testfile2);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;        }</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;        err += check_nlink(testfile, 1);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;        }</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;        success();</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;}</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_rename_file(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;{</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *data = testdata;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;        <span class="keywordtype">int</span> datalen = testdatalen;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;        start_test(<span class="stringliteral">&quot;rename file&quot;</span>);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;        res = create_file(testfile, data, datalen);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;        unlink(testfile2);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;        res = rename(testfile, testfile2);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;        }</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;        res = check_type(testfile2, S_IFREG);</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;        err += check_mode(testfile2, 0644);</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;        err += check_nlink(testfile2, 1);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;        err += check_size(testfile2, datalen);</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;        err += check_data(testfile2, data, 0, datalen);</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;        res = unlink(testfile2);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;        }</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;        res = check_nonexist(testfile2);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;        success();</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;}</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_rename_dir(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;{</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;        start_test(<span class="stringliteral">&quot;rename dir&quot;</span>);</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;        res = create_dir(testdir, testdir_files);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;        rmdir(testdir2);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;        res = rename(testdir, testdir2);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;                cleanup_dir(testdir, testdir_files, 1);</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;        }</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;        res = check_nonexist(testdir);</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;                cleanup_dir(testdir, testdir_files, 1);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;        }</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;        res = check_type(testdir2, S_IFDIR);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;                cleanup_dir(testdir2, testdir_files, 1);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;        }</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;        err += check_mode(testdir2, 0755);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;        err += check_dir_contents(testdir2, testdir_files);</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;        err += cleanup_dir(testdir2, testdir_files, 0);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;        res = rmdir(testdir2);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;                PERROR(<span class="stringliteral">&quot;rmdir&quot;</span>);</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;        }</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;        res = check_nonexist(testdir2);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;        success();</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;}</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_rename_dir_loop(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;{</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;<span class="preprocessor">#define PATH(p)         (snprintf(path, sizeof path, &quot;%s/%s&quot;, testdir, p), path)</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;<span class="preprocessor">#define PATH2(p)        (snprintf(path2, sizeof path2, &quot;%s/%s&quot;, testdir, p), path2)</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;        <span class="keywordtype">char</span> path[1024], path2[1024];</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;        start_test(<span class="stringliteral">&quot;rename dir loop&quot;</span>);</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;        res = create_dir(testdir, testdir_files);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;        res = mkdir(PATH(<span class="stringliteral">&quot;a&quot;</span>), 0755);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;        }</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a&quot;</span>), PATH2(<span class="stringliteral">&quot;a&quot;</span>));</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;        }</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;        errno = 0;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a&quot;</span>), PATH2(<span class="stringliteral">&quot;a/b&quot;</span>));</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;        <span class="keywordflow">if</span> (res == 0 || errno != EINVAL) {</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;        }</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;        res = mkdir(PATH(<span class="stringliteral">&quot;a/b&quot;</span>), 0755);</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;        }</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;        res = mkdir(PATH(<span class="stringliteral">&quot;a/b/c&quot;</span>), 0755);</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;        }</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;        errno = 0;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a&quot;</span>), PATH2(<span class="stringliteral">&quot;a/b/c&quot;</span>));</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;        <span class="keywordflow">if</span> (res == 0 || errno != EINVAL) {</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;        }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;        errno = 0;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a&quot;</span>), PATH2(<span class="stringliteral">&quot;a/b/c/a&quot;</span>));</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;        <span class="keywordflow">if</span> (res == 0 || errno != EINVAL) {</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;        }</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;        errno = 0;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/b/c&quot;</span>), PATH2(<span class="stringliteral">&quot;a&quot;</span>));</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;        <span class="keywordflow">if</span> (res == 0 || errno != ENOTEMPTY) {</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;        }</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;        res = open(PATH(<span class="stringliteral">&quot;a/foo&quot;</span>), O_CREAT, 0644);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;                PERROR(<span class="stringliteral">&quot;open&quot;</span>);</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;        }</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;        close(res);</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/foo&quot;</span>), PATH2(<span class="stringliteral">&quot;a/bar&quot;</span>));</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;        }</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/bar&quot;</span>), PATH2(<span class="stringliteral">&quot;a/foo&quot;</span>));</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;        }</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/foo&quot;</span>), PATH2(<span class="stringliteral">&quot;a/b/bar&quot;</span>));</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;        }</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/b/bar&quot;</span>), PATH2(<span class="stringliteral">&quot;a/foo&quot;</span>));</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;        }</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/foo&quot;</span>), PATH2(<span class="stringliteral">&quot;a/b/c/bar&quot;</span>));</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;        }</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/b/c/bar&quot;</span>), PATH2(<span class="stringliteral">&quot;a/foo&quot;</span>));</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;        }</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;        res = open(PATH(<span class="stringliteral">&quot;a/bar&quot;</span>), O_CREAT, 0644);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;                PERROR(<span class="stringliteral">&quot;open&quot;</span>);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;        }</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;        close(res);</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/foo&quot;</span>), PATH2(<span class="stringliteral">&quot;a/bar&quot;</span>));</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;        }</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;        unlink(PATH(<span class="stringliteral">&quot;a/bar&quot;</span>));</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/b&quot;</span>), PATH2(<span class="stringliteral">&quot;a/d&quot;</span>));</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;        }</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/d&quot;</span>), PATH2(<span class="stringliteral">&quot;a/b&quot;</span>));</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;        }</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;        res = mkdir(PATH(<span class="stringliteral">&quot;a/d&quot;</span>), 0755);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;        }</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/b&quot;</span>), PATH2(<span class="stringliteral">&quot;a/d&quot;</span>));</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;        }</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/d&quot;</span>), PATH2(<span class="stringliteral">&quot;a/b&quot;</span>));</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;        }</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;        res = mkdir(PATH(<span class="stringliteral">&quot;a/d&quot;</span>), 0755);</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;        }</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;        res = mkdir(PATH(<span class="stringliteral">&quot;a/d/e&quot;</span>), 0755);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;        }</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;        errno = 0;</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;        res = rename(PATH(<span class="stringliteral">&quot;a/b&quot;</span>), PATH2(<span class="stringliteral">&quot;a/d&quot;</span>));</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;        <span class="keywordflow">if</span> (res == 0 || errno != ENOTEMPTY) {</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;                PERROR(<span class="stringliteral">&quot;rename&quot;</span>);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;        }</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/d/e&quot;</span>));</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/d&quot;</span>));</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/b/c&quot;</span>));</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/b&quot;</span>));</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a&quot;</span>));</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;        err += cleanup_dir(testdir, testdir_files, 0);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;        res = rmdir(testdir);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;                PERROR(<span class="stringliteral">&quot;rmdir&quot;</span>);</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;                <span class="keywordflow">goto</span> fail;</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;        }</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;        res = check_nonexist(testdir);</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;        success();</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;fail:</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;        unlink(PATH(<span class="stringliteral">&quot;a/bar&quot;</span>));</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/d/e&quot;</span>));</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/d&quot;</span>));</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; </div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/b/c&quot;</span>));</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a/b&quot;</span>));</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;        rmdir(PATH(<span class="stringliteral">&quot;a&quot;</span>));</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;        cleanup_dir(testdir, testdir_files, 1);</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;        rmdir(testdir);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;<span class="preprocessor">#undef PATH2</span></div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<span class="preprocessor">#undef PATH</span></div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;}</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;<span class="preprocessor">#ifndef __FreeBSD__</span></div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_mkfifo(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;{</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;        start_test(<span class="stringliteral">&quot;mkfifo&quot;</span>);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;        unlink(testfile);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;        res = mkfifo(testfile, 0644);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;                PERROR(<span class="stringliteral">&quot;mkfifo&quot;</span>);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;        }</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;        res = check_type(testfile, S_IFIFO);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;        err += check_mode(testfile, 0644);</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;        err += check_nlink(testfile, 1);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;        res = unlink(testfile);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;                PERROR(<span class="stringliteral">&quot;unlink&quot;</span>);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;        }</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;        res = check_nonexist(testfile);</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;        success();</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;}</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> test_mkdir(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;{</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *dir_contents[] = {NULL};</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;        start_test(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;        rmdir(testdir);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;        res = mkdir(testdir, 0755);</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;        }</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;        res = check_type(testdir, S_IFDIR);</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;        err += check_mode(testdir, 0755);</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;        <span class="comment">/* Some file systems (like btrfs) don&#39;t track link</span></div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="comment">           count for directories */</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;        <span class="comment">//err += check_nlink(testdir, 2);</span></div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;        err += check_dir_contents(testdir, dir_contents);</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;        res = rmdir(testdir);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;                PERROR(<span class="stringliteral">&quot;rmdir&quot;</span>);</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;        }</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;        res = check_nonexist(testdir);</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;        success();</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;}</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="preprocessor">#define test_create_ro_dir(flags)        \</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;<span class="preprocessor">        do_test_create_ro_dir(flags, #flags)</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> do_test_create_ro_dir(<span class="keywordtype">int</span> flags, <span class="keyword">const</span> <span class="keywordtype">char</span> *flags_str)</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;{</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;        <span class="keywordtype">int</span> res;</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;        <span class="keywordtype">int</span> fd;</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;        start_test(<span class="stringliteral">&quot;open(%s) in read-only directory&quot;</span>, flags_str);</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;        rmdir(testdir);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;        res = mkdir(testdir, 0555);</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;                PERROR(<span class="stringliteral">&quot;mkdir&quot;</span>);</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;        }</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;        fd = open(subfile, flags, 0644);</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;        <span class="keywordflow">if</span> (fd != -1) {</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;                close(fd);</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;                unlink(subfile);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;                ERROR(<span class="stringliteral">&quot;open should have failed&quot;</span>);</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;                err--;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;                res = check_nonexist(subfile);</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;                <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;                        err--;</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;        }</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;        unlink(subfile);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;        res = rmdir(testdir);</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;        <span class="keywordflow">if</span> (res == -1) {</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;                PERROR(<span class="stringliteral">&quot;rmdir&quot;</span>);</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;        }</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;        res = check_nonexist(testdir);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;        <span class="keywordflow">if</span> (res == -1)</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;        <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;        success();</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;}</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;{</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *basepath;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *realpath;</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;        <span class="keywordtype">int</span> err = 0;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;        <span class="keywordtype">int</span> a;</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;        <span class="keywordtype">int</span> is_root;</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;        umask(0);</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;        <span class="keywordflow">if</span> (argc &lt; 2 || argc &gt; 4) {</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;usage: %s testdir [:realdir] [[-]test#]\n&quot;</span>, argv[0]);</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;        }</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;        basepath = argv[1];</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;        realpath = basepath;</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;        <span class="keywordflow">for</span> (a = 2; a &lt; argc; a++) {</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;                <span class="keywordtype">char</span> *endptr;</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;                <span class="keywordtype">char</span> *arg = argv[a];</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;                <span class="keywordflow">if</span> (arg[0] == <span class="charliteral">&#39;:&#39;</span>) {</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;                        realpath = arg + 1;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;                        <span class="keywordflow">if</span> (arg[0] == <span class="charliteral">&#39;-&#39;</span>) {</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;                                arg++;</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;                                skip_test = strtoul(arg, &amp;endptr, 10);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;                                select_test = strtoul(arg, &amp;endptr, 10);</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;                        }</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;                        <span class="keywordflow">if</span> (arg[0] == <span class="charliteral">&#39;\0&#39;</span> || *endptr != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;                                fprintf(stderr, <span class="stringliteral">&quot;invalid number: &#39;%s&#39;\n&quot;</span>, arg);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;                                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;                        }</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;                }</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;        }</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;        assert(strlen(basepath) &lt; 512);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;        assert(strlen(realpath) &lt; 512);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;        <span class="keywordflow">if</span> (basepath[0] != <span class="charliteral">&#39;/&#39;</span>) {</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;testdir must be an absolute path\n&quot;</span>);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;        }</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;        sprintf(testfile, <span class="stringliteral">&quot;%s/testfile&quot;</span>, basepath);</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;        sprintf(testfile2, <span class="stringliteral">&quot;%s/testfile2&quot;</span>, basepath);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;        sprintf(testdir, <span class="stringliteral">&quot;%s/testdir&quot;</span>, basepath);</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;        sprintf(testdir2, <span class="stringliteral">&quot;%s/testdir2&quot;</span>, basepath);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;        sprintf(subfile, <span class="stringliteral">&quot;%s/subfile&quot;</span>, testdir2);</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;        sprintf(testfile_r, <span class="stringliteral">&quot;%s/testfile&quot;</span>, realpath);</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;        sprintf(testfile2_r, <span class="stringliteral">&quot;%s/testfile2&quot;</span>, realpath);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;        sprintf(testdir_r, <span class="stringliteral">&quot;%s/testdir&quot;</span>, realpath);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;        sprintf(testdir2_r, <span class="stringliteral">&quot;%s/testdir2&quot;</span>, realpath);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;        sprintf(subfile_r, <span class="stringliteral">&quot;%s/subfile&quot;</span>, testdir2_r);</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;        is_root = (geteuid() == 0);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;        err += test_create();</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;        err += test_create_unlink();</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;        err += test_symlink();</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;        err += test_link();</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;        err += test_link2();</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;<span class="preprocessor">#ifndef __FreeBSD__     </span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;        err += test_mknod();</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;        err += test_mkfifo();</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;        err += test_mkdir();</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;        err += test_rename_file();</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;        err += test_rename_dir();</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;        err += test_rename_dir_loop();</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;        err += test_seekdir();</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;        err += test_utime();</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;        err += test_truncate(0);</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;        err += test_truncate(testdatalen / 2);</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;        err += test_truncate(testdatalen);</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160;        err += test_truncate(testdatalen + 100);</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;        err += test_ftruncate(0, 0600);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;        err += test_ftruncate(testdatalen / 2, 0600);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160;        err += test_ftruncate(testdatalen, 0600);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;        err += test_ftruncate(testdatalen + 100, 0600);</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;        err += test_ftruncate(0, 0400);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;        err += test_ftruncate(0, 0200);</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;        err += test_ftruncate(0, 0000);</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;        err += test_open(0, O_RDONLY, 0);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160;        err += test_open(1, O_RDONLY, 0);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;        err += test_open(1, O_RDWR, 0);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160;        err += test_open(1, O_WRONLY, 0);</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;        err += test_open(0, O_RDWR | O_CREAT, 0600);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;        err += test_open(1, O_RDWR | O_CREAT, 0600);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;        err += test_open(0, O_RDWR | O_CREAT | O_TRUNC, 0600);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;        err += test_open(1, O_RDWR | O_CREAT | O_TRUNC, 0600);</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;        err += test_open(0, O_RDONLY | O_CREAT, 0600);</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160;        err += test_open(0, O_RDONLY | O_CREAT, 0400);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160;        err += test_open(0, O_RDONLY | O_CREAT, 0200);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;        err += test_open(0, O_RDONLY | O_CREAT, 0000);</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;        err += test_open(0, O_WRONLY | O_CREAT, 0600);</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;        err += test_open(0, O_WRONLY | O_CREAT, 0400);</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;        err += test_open(0, O_WRONLY | O_CREAT, 0200);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;        err += test_open(0, O_WRONLY | O_CREAT, 0000);</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;        err += test_open(0, O_RDWR | O_CREAT, 0400);</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;        err += test_open(0, O_RDWR | O_CREAT, 0200);</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;        err += test_open(0, O_RDWR | O_CREAT, 0000);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;        err += test_open(0, O_RDWR | O_CREAT | O_EXCL, 0600);</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;        err += test_open(1, O_RDWR | O_CREAT | O_EXCL, 0600);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;        err += test_open(0, O_RDWR | O_CREAT | O_EXCL, 0000);</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;        err += test_open(1, O_RDWR | O_CREAT | O_EXCL, 0000);</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;        err += test_open_acc(O_RDONLY, 0600, 0);</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;        err += test_open_acc(O_WRONLY, 0600, 0);</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;        err += test_open_acc(O_RDWR,   0600, 0);</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;        err += test_open_acc(O_RDONLY, 0400, 0);</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160;        err += test_open_acc(O_WRONLY, 0200, 0);</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;        <span class="keywordflow">if</span>(!is_root) {</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;                err += test_open_acc(O_RDONLY | O_TRUNC, 0400, EACCES);</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;                err += test_open_acc(O_WRONLY, 0400, EACCES);</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;                err += test_open_acc(O_RDWR,   0400, EACCES);</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;                err += test_open_acc(O_RDONLY, 0200, EACCES);</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;                err += test_open_acc(O_RDWR,   0200, EACCES);</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160;                err += test_open_acc(O_RDONLY, 0000, EACCES);</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;                err += test_open_acc(O_WRONLY, 0000, EACCES);</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;                err += test_open_acc(O_RDWR,   0000, EACCES);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;        }</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;        err += test_create_ro_dir(O_CREAT);</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;        err += test_create_ro_dir(O_CREAT | O_EXCL);</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;        err += test_create_ro_dir(O_CREAT | O_WRONLY);</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;        err += test_create_ro_dir(O_CREAT | O_TRUNC);</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;        err += test_copy_file_range();</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160;</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;        unlink(testfile);</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;        unlink(testfile2);</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160;        rmdir(testdir);</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;        rmdir(testdir2);</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;        <span class="keywordflow">if</span> (err) {</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160;                fprintf(stderr, <span class="stringliteral">&quot;%i tests failed\n&quot;</span>, -err);</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;                <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;        }</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;}</div></div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   l    8      K  .   K  7   K  _   L  1   xL  &   L     L  9   L  Q   (M  9   zM  +   M     M     M  &   N     9N     AN     JN     RN     [N     cN     lN     tN     }N     N     N     N     N     N  :   N     N     N     O  Y   O  _   rO  a   O     4P     MP     lP     P     P  )   P  <   P  *   "Q     MQ  !   aQ  "   Q     Q     Q  #   Q  !   	R  [   +R  &   R  4   R  a   R  "   ES  5   hS  J   S  8   S  &   "T  $   IT     nT     uT     {T     T     T  B   T  !   U     (U     ;U  K   RU  1   U  )   U     U  U   V  8   eV     V  ?   V  +   V     W  +   +W  (   WW      W     W  4   W     W  )   W  #   $X  #   HX     lX     X  2   X  9   X  !   Y  4   -Y  /   bY     Y  6   Y  +   Y  1   Z  -   >Z  /   lZ  #   Z     Z      Z  *   Z     ![  (   =[  =   f[  ,   [  &   [     [  ^   \  a   t\  B   \     ]  +   ]  %   ]  &   ]     %^  "   @^  &   c^  1   ^  0   ^  $   ^  "   _  )   5_  !   __      _  A   _     _     `     `  "   `  "   `  #   a  
   &a    1a     8b     b     c     c     c     c     d  )   d  .   Cd     rd  ;   d  4   d  4   e  0   8e  \   ie     e  &   e     f  "   f  $   >f  ,   cf     f  #   f  *   f  .   f  '   -g  '   Ug  '   }g  /   g     g  *   g  	   h  &   #h     Jh  $   ih     h  4   h  $   h  &   i  a   +i  F   i  4   i  2   	j  :   <j  A   wj  @   j  ;   j  W   6k  W   k  1   k  /   l  0   Hl  4   yl  %   l  A   l  ?   m  5   Vm  )   m  $   m  $   m      n  I   n     Yn     ln     n  u    o  >   o     o      gp     p     p     p     p  )   p  7   q  +   Rq  !   ~q     q     q     q     q     r     r  !   8r     Zr  !   wr  '   r  M   r     s     +s     Js  !   is  9   s  B   s  G   t  7   Pt  B   t  j   t  !   6u     Xu  !   xu     u     u     u     u      u      v     <v  (   Sv  (   |v  !   v  $   v     v  ,   w     1w     Qw     kw  &   w     w     w  =   w  &   &x     Mx     fx     x  "   x     x     x     x  !   y     2y     Gy  #   `y     y      y     y     y     y     z  I   )z  !   sz  )   z  -   z     z     {  <   #{     `{  ,   z{  "   {     {     {     {  Q   |  "   f|  5   |  0   |  6   |  :   '}  %   b}  .   }  0   }  9   }  4   "~  $   W~  $   |~     ~     ~  
   ~  (   ~  %     %   1  *   W  $     #     $     $     "     0   8     i  M     >   Հ  9     $   N     s  G     ;   O  M     !   ق       	         
       '   0     X  ?   w       )   փ  $      %   %  -   K     y  !     ?     9     -   )  *   W  )          -   Ʌ  +        #  &     +   Ն  3     #   5  !   Y  )   {  8     9   އ  %     -   >  -   l       .     )     !   
     ,  *   K     v  L        Ӊ  5     *        I     \     r                 .          K        R  D   i       
   Ë     ы  (     &     .   2  .   a  "              Ԍ  &     #     #   4  &   X       $        č     ׍            3   "  -   V  (     (     (   ֎  )        )  R   A               ŏ     ُ            7        N     n       $     0          +     !   >     `     |  #     #     ;     1     .   P  V     H   ֒  =     L   ]  +     !   ֓       -     $   F  O   k       4   є  (     !   /  =   Q            G     v         w  1   -  ;   _       ,     E     &   *     Q     i  ;     ;     "     3     9   S       <     "     @   
  N   K  A     R   ܚ  @   /  1   p            h   ԛ     =  !   V  '   x            *   Ĝ  ,     1         N      o       2     <   ؝           4  &   U  9   |       ~   Ξ     M     _  +   v  H          B        @     T     j  (                )        
       #   /     S  )   s               ա       L     N   Y       z   Y     ԣ            -     ?   H  8     *     %     	          2   !  8   T  -     *     5     <     2   Y  0     ;     *     !   $     F  0   f  H     	     
          
     
     "   -     P     n  %     4     '     /        ?  1   S  +          *   Щ       
             .     F     Z      b  %     A     a     ]   M  *     @   ֫  *     1   B  5   t  <     4     M     !   j       /        ٭  "     h                       Ů  D   ߮     $     9     R     r  !              ʯ                     0  !   K  $   m  0     "   ð  F     :   -  -   h  R     *     3     2   H     {  ;        ϲ  &          N   )      x       '        ܳ  -     "   #  )   F  1   p  #     )   ƴ  '     )     )   B  )   l  2     #   ɵ  Y        G     Z  "   n       $     %   ʶ        ?     .   Q       8        з       !     '   !  3   I  .   }  (     0   ո  +     "   2     U  <   s  %        ֹ       *   
     8  O   W  C     "     9     0   H  8   y       &   һ  !             8     L  *   a               ¼  6   Լ          *     I  C   V       H     *             1     8  "   @  p  c  I  Կ  6     -   U  )     6     0     .     3   D  -   x        R     H     W   c            +     &     	   6  	   @     J     V     ]     m  &               )     _     ?   f  ?     %     1        >     Y     t                                   1     L     g  #     #     #     #     #     #   6  #   Z  #   ~  #     #     #     #        2     O     l                      /     *   -  ?   X       *     D        %  
   @  %   K  /   q  0     
     1             #      C     d     y  B                         5   /  )   e                 #     M     ,   Z  6     S             '     =     T     m                                        #     =     \  !   |  !                             <  !   Y      {  "                            %     @     Z  4   v       !                     "   /  !   R  W   t       $          *   '  j   R  )     ;     @   #  C   d  2     (          "      !   C     e  !   }       )     %          9   %  !   _  !     =     -     9     :   I                           %         %  
   F     T  ^   p  c     2   3  %   f            &     $               
   >     I  3   Y            %     =        *  +   F  (   r            /             
     +  
   D     R  $   j       &                 "        6  6   U       )              W               M     9     -     n   I          b  I     9   =  #   w  x                  %     -     6     >     G     O     X     `     i     q     z  +             c       +             o     1  ,     2     .   ?  B   n  $     y        P  p     f   C  p     i     >     A     C     A   J       F   0     w       B             p  ~     X     |        `     v     |       g        
  ^     <     -   I     w  r     x     %        .       ;     v     a   N       t     L   @  E     V     |   *       z     s   *  k     O   
  F   Z          4       J   b O    8       6 c    i   ' e    g       _ D    h   %     j   - V    ]    R   M }    @       _    #	    	 F  
 W       &     S   5
 s   
 v   
    t     A    ?    L   
 :   Z 9           P   +    | t    q   t y        ` ]   [   d  ; \    I    I   G N    #    g    z   l K    r   3        - q       $ ;    g   4  2     Z     ]   *! j   ! `   ! ]   T" t   " v   '# x   # r   $ u   $ J    % N   K% Y   % 	   % f   % K   e& U   & 5   ' Y   =' F   ' 3   ' (  (    ;)    
*    *    *+    +    u,    O-    - +  .    / i   l0    0 |   W1 n   1    C2    2    ^3 T    4 S   U4 S   4 &   4    $5 4   5 G   5 ;  /6   k7    8   !9 :   :    : I   ; J   N; H   ; R   ;    5< ]   < P   )= C   z= @   = C   = E   C> 7   > i   > Z   +? X   ? H   ? U   (@    ~@ =   8A N   vA P   A n   B x   B    B    C r   3D    D    BE k   F U   {F O   F U   !G U   wG 6   G )   H M   .H >   |H 9   H R   H W   HI 9   I ]   I T   8J e   J V   J 6   JK ;   K P   K C   L @   RL    L :   %M 6   `M <   M <   M `   N L   rN O   N L   O r   \O 7   O G   P i   OP f   P R    Q >   sQ :   Q <   Q E   *R    pR d   !S    S    T R   T U   T    /U [   U    /V V   V :   W q   JW @   W    W K   X {   X l   tY v   Y    XZ Q   Z x   -[    [    +\ f   \ =   ] L   ]] ?   ] <   ]    '^ ^   ?^ O   ^ R   ^ b   A_ a   _ C   ` h   J` h   ` k   a    a ^   b    }b    /c    c R   Ld M  d    e    f    g W   mh    h 	   h    h H   h j   )i N   i    i \   j a   j l   Qk V   k i   l /   l ^   l    m p   m p   n o   n W   n >   Ro [   o Y   o !  Gp n   iq s   q    Lr W   r H   &s A   os    s    Zt x   t T   \u Z   u %   v O   2v T   v (   v Q    w |   Rw &   w    w +   }x Q   x N   x    Jy    Sy    _y    ty !   }y    y E   y B   y    >z 0   z     { 1   { ,   { B   +| `   n| q   | _   A} _   } `   ~ g   b~ D   ~ K    \   [ [    p    V    h   ܀ 5   E ^   { 5   ځ <    \   M k    f    W   } W   Ճ K   - /   y     Q   M &    *   ƅ $    "    %   9    _ T    6   P (        k   2 K    g    Y   R Y    F    u   M X   Ê n        k       w    4 v       / H    K    O   T ;    `       A ?       . c    O   " f   r S   ْ `   -     s   
      
     Q   k        S     L    5    z   7 p    M   # P   q V    ?       Y r   ۞    N            %         E    /   _ E   U   դ x   + e    5   
 K   @ j    m       e \    `   R S            L   d r       $     D   M E   ?   ح D    k   ]    ɮ -   R     8    =   N 9    u   ư :   < =   w     )   ; 2   e \    K       A ?   ̳ H    R   U 2       ۴       P p   N    5   ι 3    p   8        . m   ׻ e   E            ü    M {    K   d o         r    n        X    ]   e W    h        #   ; /   _ U    "    +    o   4 :    =    S    z   q m       Z $    u    m   u f       J +    
           &    >    R A   Z N           l    " I        m    f   D }       )        [ J    G   3 h   { 8    ^       | D   k H    D    B   >     -   - 2   [ B    &    M    n   F 5    8    3   $ ?   X E    I    1   ( ]   Z T       
 t    W       w q   /     Y   (     p    E   	 p   O         ^    ,    /   # ,   S c    E    Y   * Z    D    U   $ H   z `    `   $ C    u    ]   ?     :   ] E    M    5   , L   b O    <    e   < T    6       . #    I    t    \        u   s     w   t     h   v L    b   , L    @    F    e   d W       "     G   ~     u   v m    P   Z p    W    F   t )    *        8    U    (    v   H O    X       h            ( Y    5   @    v     2       I   F    f   : o        b    ^   
 a   i g    i   3              $     ;    Z   / K    	    	                :   
 <   H B    ;    \       a    R `    b   L        K    [ 	   b    l 	    	    	                    	            	        	   	 	   	 	   	    $	    4	    ;	    B	 	   O	    Y	 	   i	 	   s	 	   }	    	    	 	   	 v   	 u   1
 r   
 =    n   X     O   G     i    A   
 B   `
     
 e   
 7   * F   b =    '    F       V 1    C    !   R h   t     y   b e    b   B E    l       X b    I   s     K   ^                         	   .    8    H    O    e    {                         	       (    8    ?    U    k                 !            g   * =    H    ;    9   U 1    p    :   2    m <   / b   l     C       3 Y       a p    }   V _    G   4 ;   | z    Q   3  S     R     *   ,! ]   W! Z   ! 3   " U   D" 3   " 3   " Z   # r   ]#    # d   b$ ,   $ R   $ [   G% 5   % J   % >   $& 2   c& /   & J   &    '    '    ( U   () A   ~) %   ) o   ) d   V* W   * _   +    s+ 5   + l   + 8   %, H   ^, ]   ,    - M   - w   . c   .    . A   /    G/ C   / J   0 8   `0 %   0 5   0 S   0 +   I1 D   u1 V   1 V   2 E   h2 \   2 x   3 O   3 M   3 ^   "4          S               ;         4                              5   F      )       ]       u                 R  E  "         l             s  f  ;                 {  -              s   E   Y                       	  
  D    "        W        ^              %   g              !    z          1                I  8        H                                          '      B         <                          J             M     [  -           |  9    v  C           ~       .  }  %  0                     ~       :             I        i              _      )                  (  &          A        &    T  $  a         (       
  x  P                4       /                                       <  	                          n  _        K                       z    P                            $   .  N     w  1              q  Y      [                    "  j                    H  e      q   v      M                2         
                       M   /     m        Q            <  G       	      e  J  @  Z  `  l      L                '       W   ,  p                                    ^      I        i     5  9               7          r                     U             k                                   y       g       @        [           N    `             %      s  ^  9          \       Q  !                X    `      b                      Y               J    A              n      j    X          7    O         ~    B               O  e     h  #  5          c        3                            x    3  *       x      $         {   *             h  :                ?                      g  (          U  i       P                     @  k   9  *  v                 ]                  6                         A  C                                   w  =    l  t               u  ,   S             Q           b                d  X  ^          Z                /    K      #  o  l    +   
  D  d  a  o     r               2  |    L                              +  \   >  7   }                 d                       w       N  c  u   k      T             3                                                 =  )       *             W        &    /  :              {  }  z      `                    q    _              8  6  q  f          T       !          1            }  b        >    !   $      B         R             ?               0             L   v  x     '      =         2      L  |                c  V       T      K  t        G  z    p   ;           c   @             F         I   ]  2               8                m       K  Z          V      4     k       S                        E    a                       
                 3           w                       .          e  \  R     a                         -                ~    Z    D  ,             B  C          P     
  b  U         y      g          8      h               ;  #                ?   )        S                     _  <   ,                 p        h       [  u                t         Y        o                  4  :      #     W        H     
   i         V  F      &   A     '          ?                              N  7          6      n       y      f          >            -                                       C               J  6                            .   D                  G  (     Q   \  d          G      m         0           {      "      E  
       p  j       j  t       r          5         M  	                      +                           r          >    R          V  n      +  m  |       s  O                 o        F    0   =  O                         U                 %        H    f   y  1        ]         X                    COMMAND   The (optional) command to explain
   FILE      An elf file (a binary or a shared library)
   FILE      An elf file (a binary or a shared library)
            or a compiled resource file
   KEY       The (optional) key within the schema
   KEY       The key within the schema
   PATH      A resource path
   PATH      An (optional) resource path (may be partial)
   SCHEMA    The name of the schema
  PATH      The path, for relocatable schemas
   SCHEMADIR A directory to search for additional schemas
   SECTION   An (optional) elf section name
   VALUE     The value to set
  (invalid encoding)  and --strict was specified; exiting.
 %.1f EB %.1f EiB %.1f GB %.1f GiB %.1f KB %.1f KiB %.1f MB %.1f MiB %.1f PB %.1f PiB %.1f TB %.1f TiB %.1f kB %s byte %s bytes %s command requires an application id to directly follow

 %s filetype %s type %u byte %u bytes '%s' is not a valid character following a '<' character; it may not begin an element name '%s' is not a valid character following the characters '</'; '%s' may not begin an element name '%s' is not a valid character following the close element name '%s'; the allowed character is '>' '%s' is not a valid name '%s' is not a valid name: '%c' '%s' takes no arguments

 (*MARK) must have an argument (*VERB) not recognized (?R or (?[+-]digits must be followed by ) (Additionally, releasing the lock for '%s' also failed: %s)  (Type any character to close this window)
 ) without opening ( --strict was specified; exiting.
 ; ignoring override for this key.
 <%s id='%s'> already specified <%s id='%s'> not (yet) defined. <child name='%s'> already specified <key name='%s'> already specified <key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> to modify value <override name='%s'> already specified <override> given but schema isn't extending anything <schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' does not extend '%s' <schema id='%s'> already specified <schema id='%s'> extends not yet existing schema '%s' <schema id='%s'> is a list, extending <schema id='%s'> which is not a list <schema id='%s'> is list of not yet existing schema '%s' A bookmark for URI '%s' already exists A subtree is already exported for %s ACTION APPID APPID ACTION [PARAMETER] APPID [FILE...] Abort on any errors in schemas Abstract UNIX domain socket addresses not supported on this system Abstract name space not supported Activate an action Added socket is closed Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys) Address element '%s' does not contain a colon (:) Address has bits set beyond prefix length Address to listen on Amount of memory required to process the write is larger than available address space An object is already exported for the interface %s at %s Application Options: Application identifier in D-Bus format (eg: org.example.viewer) Application information lacks an identifier Arguments:
 Association creation not supported on win32 Attribute '%s' of element '%s' not found Attribute value must be non-NULL Backup file creation failed C identifier name used for the generated source code COMMAND Can not be a list of a schema with a path Can not extend a schema with a path Can't copy directory over directory Can't copy over directory Can't copy special file Can't create user MIME configuration folder %s: %s Can't create user application configuration folder %s: %s Can't create user desktop file %s Can't do a raw read in g_io_channel_read_line_string Can't do a raw read in g_io_channel_read_to_end Can't find application Can't handle the supplied version of the icon encoding Can't handle version %d of GEmblem encoding Can't handle version %d of GEmblemedIcon encoding Can't handle version %d of GFileIcon encoding Can't handle version %d of GThemedIcon encoding Can't move directory over directory Can't open directory Can't recursively copy directory Can't rename file, filename already exists Can't rename root directory Cancellable initialization not supported Cancelled via GDBusAuthObserver::authorize-authenticated-peer Cannot convert fallback '%s' to codeset '%s' Cannot decrypt PEM-encoded private key Cannot deserialize message:  Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment variable is not set Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable - unknown value '%s' Cannot determine session bus address (not implemented for this OS) Cannot invoke method; proxy is for a well-known name without an owner and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag Cannot listen on unsupported transport '%s' Cannot parse double value '%s' for %s Cannot parse integer value '%s' for %s Cannot serialize message:  Cannot set permissions on symlinks Cannot spawn a message bus when setuid Cannot spawn a message bus without a machine-id:  Cannot specify nonce file when creating a server Cannot truncate GBufferedInputStream Cannot truncate GMemoryInputStream Channel terminates in a partial character Character out of range for UTF-16 Character out of range for UTF-8 Character reference '%-.*s' does not encode a permitted character Character reference did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp; Check if KEY is writable Child process exited abnormally Child process exited with code %ld Child process killed by signal %ld Child process stopped by signal %ld Commands:
 Commands:
  help         Shows this information
  introspect   Introspect a remote object
  monitor      Monitor a remote object
  call         Invoke a method on a remote object
  emit         Emit a signal

Use "%s COMMAND --help" to get help on each command.
 Compile a resource specification into a resource file.
Resource specification files have the extension .gresource.xml,
and the resource file have the extension called .gresource. Compile all GSettings schema files into a schema cache.
Schema files are required to have the extension .gschema.xml,
and the cache file is called gschemas.compiled. Connect to given D-Bus address Connect to the session bus Connect to the system bus Connection Endpoint Options: Connection in progress Connection refused through SOCKSv5 proxy. Connection through SOCKSv4 server was rejected Containing mount does not exist Conversion from character set '%s' to '%s' is not supported Copy (reflink/clone) between mounts is not supported Copy (reflink/clone) is not supported or didn't work Copy (reflink/clone) is not supported or invalid Could not allocate %lu byte to read file "%s" Could not allocate %lu bytes to read file "%s" Could not connect to %s:  Could not connect to proxy server %s:  Could not connect:  Could not create network monitor:  Could not create network monitor: %s Could not determine the disk usage of %s: %s Could not get network status:  Could not load schemas from %s: %s
 Could not open converter from '%s' to '%s' Could not open converter from '%s' to '%s': %s Could not parse '%s' as IP address mask Could not parse PEM-encoded certificate Could not parse PEM-encoded private key Credentials spoofing is not possible on this OS Custom definition for %s DEFINE group contains more than one branch DIRECTORY Desktop file didn't specify Exec field Destination name to introspect Destination name to invoke method on Destination name to monitor Didn't find cookie with id %d in the keyring at '%s' Do not enforce key name restrictions Do not write the gschema.compiled file Document ended unexpectedly after the equals sign following an attribute name; no attribute value Document ended unexpectedly inside a comment or processing instruction Document ended unexpectedly inside an attribute name Document ended unexpectedly inside an element name Document ended unexpectedly inside an element-opening tag. Document ended unexpectedly inside the close tag for element '%s' Document ended unexpectedly just after an open angle bracket '<' Document ended unexpectedly while inside an attribute value Document ended unexpectedly with elements still open - '%s' was the last element opened Document ended unexpectedly, expected to see a close angle bracket ending the tag <%s/> Document must begin with an element (e.g. <book>) Document was empty or contained only whitespace Don't automatically create and register resource Don't export functions; declare them G_GNUC_INTERNAL Double value '%s' for %s out of range ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing Element '%s' was closed, but the currently open element is '%s' Element '%s' was closed, no element is currently open Element <%s> not allowed at the top level Element <%s> not allowed at toplevel Element <%s> not allowed inside <%s> Emit a signal. Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos; Empty path given.
 Empty schema name given
 Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB). Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB). Encountered array of type 'a%c', expected to have a length a multiple of %u bytes, but found to be %u bytes in length Enter GApplication service mode (use from D-Bus service files) Entity did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp; Entity name '%-.*s' is not known Enumerator is closed Error accepting connection: %s Error auto-launching:  Error binding to address: %s Error calling StartServiceByName for %s:  Error checking if SO_PASSCRED is enabled for socket: %s Error closing (unlinked) lock file '%s': %s Error closing file descriptor: %s Error closing file: %s Error closing handle: %s Error closing socket: %s Error compressing file %s Error connecting: %s
 Error creating backup copy: %s Error creating directory '%s': %s Error creating directory: %s Error creating lock file '%s': %s Error deleting stale lock file '%s': %s Error deserializing GVariant with type string '%s' from the D-Bus wire format Error during conversion: %s Error enabling SO_PASSCRED: %s Error flushing connection: %s
 Error getting filesystem info: %s Error in address '%s' - the family attribute is malformed Error in address '%s' - the host attribute is missing or malformed Error in address '%s' - the noncefile attribute is missing or malformed Error in address '%s' - the port attribute is malformed Error in address '%s' - the port attribute is missing or malformed Error in address '%s' - the unix transport requires exactly one of the keys 'path' or 'abstract' to be set Error joining multicast group: %s Error launching application: %s Error leaving multicast group: %s Error making symbolic link: %s Error moving file: %s Error on line %d char %d:  Error on line %d: %s Error opening directory '%s': %s Error opening file '%s': %s Error opening file: %s Error opening keyring '%s' for reading:  Error opening keyring '%s' for writing:  Error opening nonce file '%s': %s Error parsing introspection XML: %s
 Error parsing option %s Error parsing parameter %d of type '%s': %s
 Error parsing parameter %d: %s
 Error reading file %s: %s Error reading file '%s': %s Error reading from file descriptor: %s Error reading from file: %s Error reading from handle: %s Error reading from nonce file '%s', expected 16 bytes, got %d Error reading from nonce file '%s': %s Error receiving data: %s Error receiving message: %s Error removing file: %s Error removing old backup link: %s Error removing old file: %s Error removing target file: %s Error renaming file: %s Error renaming temporary file: %s Error resolving '%s' Error resolving '%s': %s Error return with body of type '%s' Error return with empty body Error reverse-resolving '%s': %s Error seeking in file: %s Error sending credentials:  Error sending data: %s Error sending message: %s Error serializing GVariant with type string '%s' to the D-Bus wire format Error setting SELinux context: %s Error setting extended attribute '%s': %s Error setting modification or access time: %s Error setting owner: %s Error setting permissions: %s Error setting property '%s': Expected type '%s' but got '%s' Error setting symlink: %s Error setting symlink: file is not a symlink Error spawning command line '%s':  Error splicing file: %s Error trashing file: %s Error truncating file: %s Error unescaping key or value in Key/Value pair %d, '%s', in address element '%s' Error unlinking lock file '%s': %s Error when getting information for directory '%s': %s Error when getting information for file '%s': %s Error when getting information for file descriptor: %s Error while compiling regular expression %s at char %d: %s Error while disabling SO_PASSCRED: %s Error while matching regular expression %s: %s Error while optimizing regular expression %s: %s Error while parsing replacement text "%s" at char %lu: %s Error writing contents of nonce file '%s' to stream: Error writing nonce file at '%s': %s Error writing to file descriptor: %s Error writing to file: %s Error writing to handle: %s Error: %s
 Error: %s is not a valid interface name
 Error: %s is not a valid member name
 Error: %s is not a valid object path
 Error: %s is not a valid unique bus name.
 Error: Destination is not specified
 Error: Method name '%s' is invalid
 Error: Method name is not specified
 Error: Object path is not specified
 Error: object path not specified.
 Error: signal must be the fully-qualified name.
 Error: signal not specified.
 Exhausted all available authentication mechanisms (tried: %s) (available: %s) Existing file '%s' could not be removed: g_unlink() failed: %s Expected NUL byte after the string '%s' but found byte %d Expected a GEmblem for GEmblemedIcon Expected valid UTF-8 string but found invalid bytes at byte offset %d (length of string is %d). The valid UTF-8 string up until that point was '%s' Expecting 1 control message, got %d Expecting 1 control message, got %d Expecting one fd, but got %d
 Expecting one fd, but got %d
 Expecting to read a single byte for receiving credentials but read zero bytes Extract a resource file to stdout FILE FILE PATH FILE [PATH] Failed to allocate memory Failed to change to directory '%s' (%s) Failed to create file '%s': %s Failed to create pipe for communicating with child process (%s) Failed to create temp file: %s Failed to execute child process "%s" (%s) Failed to execute child process (%s) Failed to execute helper program (%s) Failed to expand exec line '%s' with URI '%s' Failed to fork (%s) Failed to fork child process (%s) Failed to get attributes of file '%s%s%s%s': fstat() failed: %s Failed to get attributes of file '%s': fstat() failed: %s Failed to locate '%s' in any source directory Failed to locate '%s' in current directory Failed to map %s%s%s%s: mmap() failed: %s Failed to open file '%s': %s Failed to open file '%s': fdopen() failed: %s Failed to open file '%s': open() failed: %s Failed to parse '%-.*s', which should have been a digit inside a character reference (&#234; for example) - perhaps the digit is too large Failed to read data from child process Failed to read data from child process (%s) Failed to read enough data from child pid pipe (%s) Failed to read from child pipe (%s) Failed to read from file '%s': %s Failed to read the symbolic link '%s': %s Failed to redirect output or input of child process (%s) Failed to rename file '%s' to '%s': g_rename() failed: %s Failed to resize memory output stream Failed to write file '%s': fsync() failed: %s Failed to write file '%s': write() failed: %s File "%s" is too large File %s appears multiple times in the resource File enumerator has outstanding operation File enumerator is already closed File names cannot contain '%c' Filesystem does not support symbolic links Filesystem root First token of line %d of the keyring at '%s' with content '%s' is malformed GApplication options GCredentials does not contain a process ID on this OS GCredentials is not implemented on this OS GDateTime%H:%M:%S GDateTime%I:%M:%S %p GDateTime%a %b %e %H:%M:%S %Y GDateTime%m/%d/%y GDateTimeAM GDateTimePM GSocketControlMessage not supported on Windows Generate dependency list Generate output in the format selected for by the target filename extension Generate source header Generate sourcecode used to link in the resource file into your code Get the value of KEY Help Options: Host unreachable Host unreachable through SOCKSv5 server. Hostname '%s' contains '[' but not ']' Hostname '%s' is too long for SOCKSv4 protocol Hostname '%s' is too long for SOCKSv5 protocol Ignored, for compat with GTestDbus Ignoring override for this key.
 Ignoring this file.
 Incomplete multibyte sequence in input Input stream doesn't implement read Input stream doesn't implement seek Integer value '%s' for %s out of range Integer value '%s' out of range Internal SOCKSv5 proxy server error. Internal error: %s Introspect a remote object. Introspect children Invalid GSeekType supplied Invalid UTF-8 encoded text in name - not valid '%s' Invalid attribute type (byte string expected) Invalid attribute type (string expected) Invalid attribute type (uint32 expected) Invalid attribute type (uint64 expected) Invalid byte sequence in conversion input Invalid compressed data Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value 0x%02x Invalid extended attribute name Invalid filename Invalid filename %s Invalid group name: %s Invalid hostname Invalid key name: %s Invalid major protocol version. Expected 1 but found %d Invalid object, not initialized Invalid program name: %s Invalid seek request Invalid sequence in conversion input Invalid socket, initialization failed due to: %s Invalid socket, not initialized Invalid string in argument vector at %d: %s Invalid string in environment: %s Invalid symlink value given Invalid working directory: %s Invoke a method on a remote object. Invoke an action on the application Key '%s' in group '%s' has value '%s' where %s was expected Key file contains escape character at end of line Key file contains invalid escape sequence '%s' Key file contains key '%s' in group '%s' which has a value that cannot be interpreted. Key file contains key '%s' which has a value that cannot be interpreted. Key file contains key '%s' with value '%s' which is not UTF-8 Key file contains line '%s' which is not a key-value pair, group, or comment Key file contains unsupported encoding '%s' Key file does not have group '%s' Key file does not have key '%s' Key file does not have key '%s' in group '%s' Key file does not start with a group Key/Value pair %d, '%s', in address element '%s' does not contain an equal sign Launch an application Launch the application (with optional files to open) Leftover unconverted data in read buffer Length %u is too long for address Line %d of the keyring at '%s' with content '%s' is malformed List applications List available actions List keys and values, recursively
If no SCHEMA is given, list all keys
 List resources
If SECTION is given, only list resources in this section
If PATH is given, only list matching resources List resources with details
If SECTION is given, only list resources in this section
If PATH is given, only list matching resources
Details include the section, size and compression List sections containing resources in an elf FILE List static actions for an application (from .desktop file) List the children of SCHEMA List the installed (non-relocatable) schemas List the installed D-Bus activatable applications (by .desktop files) List the installed relocatable schemas List the keys in SCHEMA Listener is already closed METHOD_CALL message: PATH or MEMBER header field is missing METHOD_RETURN message: REPLY_SERIAL header field is missing Malformed input data for GFileIcon Malformed number of tokens (%d) in GEmblem encoding Malformed number of tokens (%d) in GEmblemedIcon encoding Malformed version number: %s Meaningless key/value pair combination in address entry '%s' Memory output stream not resizable Message body has signature '%s' but there is no signature header Message body has type signature '%s' but signature in the header field is '%s' Message body is empty but signature in the header field is '(%s)' Message has %d file descriptors but the header field indicates %d file descriptors Method '%s' on interface '%s' with signature '%s' does not exist Method '%s' returned type '%s', but expected '%s' Method and interface name Missing argument for %s Monitor KEY for changes.
If no KEY is specified, monitor all keys in SCHEMA.
Use ^C to stop monitoring.
 Monitor a remote object. Move between mounts not supported Multiple connection endpoints specified Need more input Network unreachable Network unreachable through SOCKSv5 proxy. No DNS record of the requested type for '%s' No MIME type defined in the bookmark for URI '%s' No PEM-encoded certificate found No PEM-encoded private key found No address specified No application is registered as handling this file No application with name '%s' registered a bookmark for '%s' No bookmark found for URI '%s' No connection endpoint specified No groups set in bookmark for URI '%s' No private flag has been defined in bookmark for URI '%s' No schema files found:  No signature header in message but the message body is %u byte No signature header in message but the message body is %u bytes No such interface No such interface '%s' No such interface '%s' on object at path %s No such interface 'org.freedesktop.DBus.Properties' on object at path %s No such key '%s'
 No such key '%s' in schema '%s' as specified in override file '%s' No such method '%s' No such property '%s' No such schema '%s'
 No support for source-specific multicast No type for class name %s No valid addresses were found No valid bookmark file found in data dirs Not a regular file Not enough memory Not enough space for socket address Not enough space in destination Not expecting control message, but got %d Object path to emit signal on Object path to introspect Object path to invoke method on Object path to monitor Odd character '%s', expected a '=' after attribute name '%s' of element '%s' Odd character '%s', expected a '>' character to end the empty-element tag '%s' Odd character '%s', expected a '>' or '/' character to end the start tag of element '%s', or optionally an attribute; perhaps you used an invalid character in an attribute name Odd character '%s', expected an open quote mark after the equals sign when giving value for attribute '%s' of element '%s' Only print properties Operation not supported Operation was cancelled Optional destination for signal (unique name) Optional parameter to the action invocation, in GVariant format Optional relative or relative filenames, or URIs to open Options specifying the connection endpoint Output stream doesn't implement write PARAMETER PATH PCRE library is compiled with incompatible options PCRE library is compiled without UTF8 properties support PCRE library is compiled without UTF8 support POSIX collating elements are not supported POSIX named classes are supported only within a class Parsed value '%s' for variant is not a valid D-Bus signature Parsed value '%s' is not a valid D-Bus object path Parsed value '%s' is not a valid D-Bus signature Parsed value '%s' is not a valid D-Bus signature (for body) Partial character sequence at end of input Path must begin with a slash (/)
 Path must end with a slash (/)
 Path must not contain two adjacent slashes (//)
 Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o Print XML Print address Print address in shell mode Print help Print version Print version information and exit Property '%s' is not readable Property '%s' is not writable Proxy protocol '%s' is not supported. Proxying over a non-TCP connection is not supported. Query the range of valid values for KEY Quoted text doesn't begin with a quotation mark Received invalid fd Requested seek before the beginning of the stream Requested seek beyond the end of the stream Reset KEY to its default value Reset all keys in SCHEMA to their defaults Run a dbus service SCHEMA[:PATH] SCHEMA[:PATH] KEY SCHEMA[:PATH] KEY VALUE SCHEMA[:PATH] [KEY] SECTION SELinux context must be non-NULL SELinux is not enabled on this system SIGNAL message: PATH, INTERFACE or MEMBER header field is missing SIGNAL message: The INTERFACE header field is using the reserved value org.freedesktop.DBus.Local SIGNAL message: The PATH header field is using the reserved value /org/freedesktop/DBus/Local SOCKSv4 does not support IPv6 address '%s' SOCKSv5 authentication failed due to wrong username or password. SOCKSv5 connection not allowed by ruleset. SOCKSv5 proxy does not support 'connect' command. SOCKSv5 proxy does not support provided address type. Schema '%s' is not relocatable (path must not be specified)
 Schema '%s' is relocatable (path must be specified)
 Second token of line %d of the keyring at '%s' with content '%s' is malformed Seek not supported on base stream Seek not supported on stream Session dbus not running, and autolaunch failed Set the value of KEY to VALUE Setting attribute %s not supported Several password entered have been incorrect, and your access will be locked out after further failures. Show GApplication options Show all help options Show help options Signal and interface name Signature header with signature '%s' found but message body is empty Socket I/O timed out Socket is already closed Source stream is already closed Splice not supported Stream doesn't support query_info Stream has outstanding operation Stream is already closed Symbolic links not supported TLS support is not available Target file exists Target file is a directory Target file is not a regular file Template '%s' doesn't contain XXXXXX Template '%s' invalid, should not contain a '%s' Temporarily unable to resolve '%s' Text ended before matching quote was found for %c. (The text was '%s') Text ended just after a '\' character. (The text was '%s') Text was empty (or contained only whitespace) The SOCKSv5 proxy requires an authentication method that is not supported by GLib. The SOCKSv5 proxy requires authentication. The SOCKSv5 proxy server uses unknown address type. The URI '%s' contains invalidly escaped characters The URI '%s' is invalid The URI '%s' is not an absolute URI using the "file" scheme The action name to invoke The command to print detailed help for The connection is closed The directories where files are to be read from (default to current directory) The file was externally modified The given address is empty The hostname of the URI '%s' is invalid The key is not writable
 The local file URI '%s' may not include a '#' The password entered is incorrect. The pathname '%s' is not an absolute path The provided value is outside of the valid range
 The resource at '%s' does not exist The resource at '%s' failed to decompress The resource at '%s' is not a directory The server is not a SOCKSv4 proxy server. The server is not a SOCKSv5 proxy server. The string '%s' is not a valid D-Bus GUID There is no GCredentials support for your platform This entire file has been ignored.
 This is the last chance to enter the password correctly before your access is locked out. Timeout in seconds Timeout was reached Too large count value passed to %s Trash not supported Truncate not allowed on input stream Truncate not supported on base stream Truncate not supported on stream Type %s does not implement from_tokens() on the GIcon interface Type %s does not implement the GIcon interface Type %s is not classed Type of message, '%s', does not match expected type '%s' URIs not supported Unable to create socket: %s Unable to create trash dir %s: %s Unable to create trashing info file: %s Unable to find default local directory monitor type Unable to find default local file monitor type Unable to find or create trash directory Unable to find terminal required for application Unable to find toplevel directory for trash Unable to get Hardware profile: %s Unable to get pending error:  Unable to load /var/lib/dbus/machine-id or /etc/machine-id:  Unable to read socket credentials: %s Unable to shutdown socket: %s Unable to trash file: %s Unexpected attribute '%s' for element '%s' Unexpected early end-of-stream Unexpected error in g_io_channel_win32_poll() reading data from a child process Unexpected error in select() reading data from a child process (%s) Unexpected error in waitpid() (%s) Unexpected lack of content trying to (safely) read a line Unexpected lack of content trying to read a line Unexpected reply %d from StartServiceByName("%s") method Unexpected tag '%s' inside '%s' Unexpected tag '%s', tag '%s' expected Unexpected type of ancillary data Unknown SOCKSv5 proxy error. Unknown bus type %d Unknown command %s

 Unknown error executing child process "%s" Unknown error on connect Unknown family was specified Unknown option %s Unknown or unsupported transport '%s' for address '%s' Unknown processing option "%s" Unknown protocol was specified Unknown type Unmatched quotation mark in command line or other shell-quoted text Unnamed Unsupported flags encountered when constructing a client-side connection Unsupported key '%s' in address entry '%s' Unsupported socket address Usage: Usage:
 Usage:
  gresource %s%s%s %s

%s

 Usage:
  gresource [--section SECTION] COMMAND [ARGS...]

Commands:
  help                      Show this information
  sections                  List resource sections
  list                      List resources
  details                   List resources with details
  extract                   Extract a resource

Use 'gresource help COMMAND' to get detailed help.

 Usage:
  gsettings --version
  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]

Commands:
  help                      Show this information
  list-schemas              List installed schemas
  list-relocatable-schemas  List relocatable schemas
  list-keys                 List keys in a schema
  list-children             List children of a schema
  list-recursively          List keys and values, recursively
  range                     Queries the range of a key
  get                       Get the value of a key
  set                       Set the value of a key
  reset                     Reset the value of a key
  reset-recursively         Reset all values in a given schema
  writable                  Check if a key is writable
  monitor                   Watch for changes

Use 'gsettings help COMMAND' to get detailed help.

 Usage:
  gsettings [--schemadir SCHEMADIR] %s %s

%s

 Use '%s help COMMAND' to get detailed help.

 Username is too long for SOCKSv4 protocol Username or password is too long for SOCKSv5 protocol. Valid key file could not be found in search dirs Value '%s' cannot be interpreted as a boolean. Value '%s' cannot be interpreted as a float number. Value '%s' cannot be interpreted as a number. Waiting for socket condition: %s Wanted to read %lu byte but only got %lu Wanted to read %lu bytes but only got %lu Warning: According to introspection data, interface '%s' does not exist
 Warning: According to introspection data, method '%s' does not exist on interface '%s'
 Wrong args
 Wrong number of tokens (%d) You should give exactly one directory name
 You should give exactly one file name
 [ARGS...] [COMMAND] [OPTION...] [PATH] [SCHEMA[:PATH]] \ at end of pattern \C not allowed in lookbehind assertion \N is not supported in a class \c at end of pattern \c must be followed by an ASCII character \g is not followed by a braced, angle-bracketed, or quoted name or number, or by a plain number \k is not followed by a braced, angle-bracketed, or quoted name ] is an invalid data character in JavaScript compatibility mode a numbered reference must not be zero a path, if given, must begin and end with a slash abbreviated month nameApr abbreviated month nameAug abbreviated month nameDec abbreviated month nameFeb abbreviated month nameJan abbreviated month nameJul abbreviated month nameJun abbreviated month nameMar abbreviated month nameMay abbreviated month nameNov abbreviated month nameOct abbreviated month nameSep abbreviated month name with dayApr abbreviated month name with dayAug abbreviated month name with dayDec abbreviated month name with dayFeb abbreviated month name with dayJan abbreviated month name with dayJul abbreviated month name with dayJun abbreviated month name with dayMar abbreviated month name with dayMay abbreviated month name with dayNov abbreviated month name with dayOct abbreviated month name with daySep abbreviated weekday nameFri abbreviated weekday nameMon abbreviated weekday nameSat abbreviated weekday nameSun abbreviated weekday nameThu abbreviated weekday nameTue abbreviated weekday nameWed action name must be given after application id
 actions accept a maximum of one parameter
 an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) assertion expected after (?( association changes not supported on win32 back references as conditions are not supported for partial matching backtracking limit reached bad offset cannot add keys to a 'list-of' schema character value in \u.... sequence is too large character value in \x{...} sequence is too large code overflow conditional group contains more than two branches corrupted object could not get local address: %s could not get remote address: %s could not listen: %s creating GSocket from fd: %s different names for subpatterns of the same number are not allowed digit expected digit expected after (?+ doing nothing.
 drive doesn't implement eject drive doesn't implement eject or eject_with_operation drive doesn't implement polling for media drive doesn't implement start drive doesn't implement stop empty names are not permitted error parsing action parameter: %s
 error parsing key '%s' in schema '%s' as specified in override file '%s': %s. error sending %s message to application: %s
 escapes \L, \l, \N{name}, \U, and \u are not supported exactly one of 'type', 'enum' or 'flags' must be specified as an attribute to <key> failed to get memory full month nameApril full month nameAugust full month nameDecember full month nameFebruary full month nameJanuary full month nameJuly full month nameJune full month nameMarch full month nameMay full month nameNovember full month nameOctober full month nameSeptember full month name with dayApril full month name with dayAugust full month name with dayDecember full month name with dayFebruary full month name with dayJanuary full month name with dayJuly full month name with dayJune full month name with dayMarch full month name with dayMay full month name with dayNovember full month name with dayOctober full month name with daySeptember full weekday nameFriday full weekday nameMonday full weekday nameSaturday full weekday nameSunday full weekday nameThursday full weekday nameTuesday full weekday nameWednesday g_socket_get_credentials not implemented for this OS hexadecimal digit expected hexadecimal digit or '}' expected illegal symbolic reference inconsistent NEWLINE options internal error internal error or corrupted object invalid GVariant type string '%s' invalid action name: '%s'
action names must consist of only alphanumerics, '-' and '.'
 invalid application id: '%s'
 invalid combination of newline flags invalid condition (?(0) invalid escape sequence in character class invalid name '%s': invalid character '%c'; only lowercase letters, numbers and hyphen ('-') are permitted. invalid name '%s': maximum length is 1024 invalid name '%s': names must begin with a lowercase letter invalid name '%s': the last character may not be a hyphen ('-'). invalid name '%s': two successive hyphens ('--') are not permitted. list-actions command takes only the application id lookbehind assertion is not fixed length malformed \P or \p sequence malformed number or name after (?( missing '<' in symbolic reference missing ) after comment missing subpattern name after (?& missing terminating ) missing terminating ] for character class missing terminator in subpattern name mount doesn't implement "eject" mount doesn't implement "eject" or "eject_with_operation" mount doesn't implement "remount" mount doesn't implement "unmount" mount doesn't implement "unmount" or "unmount_with_operation" mount doesn't implement content type guessing mount doesn't implement synchronous content type guessing name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) name of the output file no <key name='%s'> to override nothing to repeat number is too big number too big in {} quantifier numbers out of order in {} quantifier octal value is greater than \377 out of memory overran compiling workspace override for key '%s' in schema '%s' in override file '%s' is not in the list of valid choices override for key '%s' in schema '%s' in override file '%s' is outside the range given in the schema previously-checked referenced subpattern not found range out of order in character class recursion limit reached recursion loop recursive call could loop indefinitely reference to non-existent subpattern regular expression is too large removed existing output file.
 short utf8 stray final '\' subpattern name is too long (maximum 32 characters) symlink must be non-NULL text may not appear inside <%s> the path of a list must end with ':/' the pattern contains items not supported for partial matching too many forward references too many named subpatterns (maximum 10,000) two named subpatterns have the same name type is INVALID unable to connect to D-Bus: %s
 unable to find desktop file for application %s
 unexpected repeat unfinished symbolic reference unknown POSIX class name unknown error unknown escape sequence unknown property name after \P or \p unrecognised command: %s

 unrecognized character after (? or (?- unrecognized character after (?< unrecognized character after (?P unrecognized character following \ volume doesn't implement eject volume doesn't implement eject or eject_with_operation volume doesn't implement mount where to store the gschemas.compiled file zero-length symbolic reference Project-Id-Version: as
Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general
PO-Revision-Date: 2014-08-18 21:12+0530
Last-Translator: Nilamdyuti Goswami <ngoswami@redhat.com>
Language-Team: Assamese <kde-i18n-doc@kde.org>
Language: as
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: Lokalize 1.5
Plural-Forms: nplurals=2; plural=(n!=1)
   COMMAND   বিৱৰণ কৰিবলে (বিকল্প) কমান্ড
   FILE      এটা elf ফাইল (এটা বাইনাৰি অথবা এটা অংশীদাৰী লাইব্ৰেৰী)
   FILE      এটা elf ফাইল (এটা বাইনাৰি অথবা এটা অংশীদাৰী লাইব্ৰেৰী)
            অথবা এটা কমপাইল্ড সম্পদ ফাইল
   KEY      স্কিমাৰ ভিতৰত (বিকল্প) কি
   KEY       স্কিমাৰ ভিতৰত কি
   PATH      এটা সম্পদ পথ
   PATH      এটা (বৈকল্পিক) সম্পদ পথ (আংশিক হব পাৰে)
   SCHEMA    স্কিমাৰ নাম
  PATH      পথ, পুনৰ অৱস্থান কৰিব পৰা স্কিমাসমূহৰ বাবে
   SCHEMADIR অতিৰিক্ত স্কিমাসমূহ সন্ধান কৰিবলে এটা ডাইৰেকটৰি
   SECTION   এটা (বৈকল্পিক) elf অংশ নাম
   VALUE     সংহতি কৰিবলে মান
  (অৱৈধ এনক'ডিং)  আৰু --strict ধাৰ্য্য কৰা হৈছিল; প্ৰস্থান কৰা হৈছে।
 %.1f EB %.1f EiB %.1f GB %.1f GiB %.1f KB %.1f KiB %.1f MB %.1f MiB %.1f PB %.1f PiB %.1f TB %.1f TiB %.1f kB %s বাইট %s বাইটসমূহ %s কমান্ডৰ প্ৰত্যক্ষভাৱে অনুকৰণ কৰিবলৈ এটা এপ্লিকেচন আইডিৰ প্ৰয়োজন

 %s ফাইলৰ ধৰণ %s ধৰণ %u বাইট %u বাইটসমূহ '%s' এটা বৈধ আখৰ নহয় '<' আখৰৰ পিছত; ইয়াৰ দ্বাৰা পদাৰ্থৰ নাম আৰম্ভ নহবও পাৰে '%s' আখৰৰ ব্যৱহাৰ '</' ৰ পিছত বৈধ নহয়; '%s' দ্বাৰা কোনো পদাৰ্থৰ নাম আৰম্ভ কৰা নাযাব '%s' আখৰৰ ব্যৱহাৰ বৈধ নহয় '%s' বদ্ধ পদাৰ্থৰ নামৰ পিছত; অনুমোদিত আখৰ হ'ল '>' '%s' এটা বৈধ নাম নহয় '%s' এটা বৈধ নাম নহয়: '%c' '%s' এ কোনো তৰ্ক নলয়

 (*MARK) ৰ এটা তৰ্ক থাকিব লাগিব (*VERB) পৰিচিত নহয় (?R বা (?[+-]সংখ্যা ৰ পিছত ) চিহ্ন ব্যৱহাৰ কৰা আৱশ্যক (অতিৰিক্তভাৱে, '%s'  ৰ বাবে লক মুক্ত কৰাও ব্যৰ্থ হল: %s)  (এই উইন্ডো বন্ধ কৰিবলে যিকোনো আখৰ টাইপ কৰক)
 ( চিহ্ন নোহোৱাকে ) চিহ্ন প্ৰয়োগ কৰা হৈছে --strict ধাৰ্য্য কৰা হৈছিল; প্ৰস্থান কৰা হৈছিল।
 ; এই কিৰ বাবে অভাৰৰাইড উপেক্ষা কৰা হৈছে।
 <%s id='%s'> ইতিমধ্যে ধাৰ্য্যত <%s id='%s'> (এতিয়াও) বিৱৰিত নহয়। <child name='%s'> ইতিমধ্যে ধাৰ্য্যত <key name='%s'> ইতিমধ্যে ধাৰ্য্যত <schema id='%s'> ত <key name='%s'> ছায়াসমূহ <key name='%s'>; মান সলনি কৰিবলে <override> ব্যৱহাৰ কৰক <override name='%s'> ইতিমধ্যে ধাৰ্য্যত <override> দিয়া হৈছে কিন্তু স্কিমায় একো প্ৰসাৰন কৰা নাই <schema id='%s' list-of='%s'> এ <schema id='%s' list-of='%s'> প্ৰসাৰন কৰে কিন্তু '%s' এ '%s' প্ৰসাৰন নকৰে <schema id='%s'> ইতিমধ্যে ধাৰ্য্যত <schema id='%s'> এ এতিয়াও অস্তিত্বত নহোৱা স্কিমা '%s' ক প্ৰসাৰন কৰে <schema id='%s'> এটা তালিকা, <schema id='%s'> যি এটা তালিকা নহয় প্ৰসাৰন কৰা হৈছে <schema id='%s'> এতিয়াও অস্তিত্বত নহোৱা স্কিমা '%s' ৰ তালিকা URI '%s' ৰ বাবে পত্ৰচিহ্ন ইতিমধ্যে আছে %s ৰ বাবে এটা চাবট্ৰি ইতিমধ্যে এক্সপৰ্ট কৰা হৈছে কাৰ্য্য APPID APPID ACTION [PARAMETER] APPID [FILE...] স্কিমাসমূহত যিকোনো ত্ৰুটিত বাতিল কৰিব এই চিস্টেমত এবস্ট্ৰেক্ট UNIX ডমেইন চকেট ঠিকনাসমূহ সমৰ্থিত নহয় এবস্ট্ৰেক্ট নাম-স্পেইচ সমৰ্থিত নহয় এটা কাৰ্য্য সক্ৰিয় কৰক যোগ কৰা চকেট বন্ধ ঠিকনা '%s' অবৈধ (সঠিক এটা পথৰ প্ৰয়োজন, tmpdir অথবা এবস্ট্ৰেক্ট কিসমূহ) ঠিকনা উপাদান '%s' এ এটা কলন (:) অন্তৰ্ভুক্ত নকৰে ঠিকনাৰ বিটসমূহ সংহতি উপসৰ্গ দৈৰ্ঘৰ বাহিৰ আছে শুনিবলে ঠিকনা লিখা প্ৰক্ৰিয়া কৰিবলে প্ৰয়োজনীয় মেমৰিৰ পৰিমাণ উপস্থিত ঠিকনা স্থানতকে অধিক %s ত আন্তঃপৃষ্ঠ %s ৰ বাবে ইতিমধ্যে এটা অবজেক্ট এক্সপৰ্ট কৰা হৈছে এপ্লিকেচন বিকল্পসমূহ: D-Bus বিন্যাসত এপ্লিকেচন পৰিচয়ক (উদাহৰণ: org.example.viewer) এপ্লিকেচন তথ্যৰ এটা পৰিচয়কৰ প্ৰয়োজন তৰ্কসমূহ:
 win32 ত এপ্লিকেচনৰ সম্বন্ধৰ সৃষ্টি সমৰ্থিত নহয় '%s' বৈশিষ্ট '%s' পদাৰ্থৰ পোৱা নগল বৈশিষ্টৰ মান নন-NULL হব লাগিব বেক-আপ ফাইল সৃষ্টি কৰিবলৈ ব্যৰ্থ সৃজন কৰা উৎস ক'ডৰ বাবে C identifier নাম ব্যৱহাৰ কৰা হৈছে COMMAND এটা পথৰ সৈতে এটা স্কিমাৰ এটা তালিকা হব নোৱাৰিব এটা পথৰ সৈতে এটা স্কিমা প্ৰসাৰন কৰিব নোৱাৰি ডাইৰেকটৰিৰ ওপৰত ডাইৰেকটৰি কপি কৰা নাযায় ডাইৰেকটৰিৰ ওপৰত কপি কৰা নাযাব বিশেষ ফাইল কপি কৰিব নোৱাৰি ব্যৱহাৰকাৰী MIME বিন্যাস ফোল্ডাৰ %s সৃষ্টি কৰিবলৈ ব্যৰ্থ: %s ব্যৱহাৰকাৰী এপ্লিকেচনৰ বিন্যাস ফোল্ডাৰ %s সৃষ্টি কৰিবলৈ ব্যৰ্থ: %s ব্যৱহাৰকাৰী ডেস্কটপ ফাইল %s সৃষ্টি কৰিবলৈ ব্যৰ্থ g_io_channel_read_line_string ত raw read কৰিব নোৱাৰি g_io_channel_read_to_end ত এটা raw read কৰিব নোৱাৰি এপ্লিকেচন পোৱা নাযায় আইকন এনক'ডিংৰ প্ৰদান কৰা সংস্কৰণ পৰিচালন কৰিব নোৱাৰি GEmblem encoding ৰ %d সংস্কৰণ পৰিচালন কৰিব নোৱাৰি GEmblemedIcon encoding ৰ %d সংস্কৰণ পৰিচালন কৰিব নোৱাৰি GFileIcon encoding ৰ %d সংস্কৰণ পৰিচালন কৰিব নোৱাৰি GThemedIcon encoding ৰ %d সংস্কৰণ পৰিচালন কৰিব নোৱাৰি ডাইৰেকটৰিৰ ওপৰত ডাইৰেকটৰি স্থানান্তৰ কৰা নাযাব ডাইৰেকটৰি খোলিবলৈ সমস্যা ৰিকাৰ্ছিভ ভাবে ডাইৰেকটৰি কপি কৰা নাযাব ফাইল পুনৰ নামকৰণ কৰিব নোৱাৰি, ফাইলনাম ইতিমধ্যে অস্তিত্ববান root ডাইৰেকটৰিৰ নাম পৰিবৰ্তন কৰা সম্ভৱ নহয় বাতিল কৰিব পৰা আৰম্ভ সমৰ্থিত নহয় GDBusAuthObserver::authorize-authenticated-peer ৰে বাতিল কৰা হৈছে fallback '%s' ক codeset '%s' লৈ সলনি কৰিব নোৱাৰি PEM এনক'ড থকা ব্যক্তিগত কিক ডিক্ৰিপ্ট কৰিব নোৱাৰি বাৰ্তা deserialize কৰিব নোৱাৰি:  বাচ ঠিকনা নিৰ্ধাৰণ কৰিব নোৱাৰি কাৰণ DBUS_STARTER_BUS_TYPE পৰিৱেশ চলক সংহতি কৰা হোৱা নাই DBUS_STARTER_BUS_TYPE পৰিৱেশ চলকৰ পৰা বাচ ঠিকনা নিৰ্ধাৰণ কৰিব নোৱাৰি - অজ্ঞাত মান '%s' অধিবেশন বাচ ঠিকনা নিৰ্ধাৰণ কৰিব নোৱাৰি (এই OS ৰ বাবে প্ৰণয়ন কৰা নহয়) পদ্ধতি আৱাহন কৰিব নোৱাৰি; প্ৰক্সি এটা জনপ্ৰিয় কিন্তু গৰাকী নথকা নামৰ বাবে আৰু প্ৰক্সি G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START ৰ সৈতে সৃষ্টি কৰা হৈছিল অসমৰ্থিত পৰিৱহন '%s' ত শুনিব নোৱাৰি '%s' ৰ দ্বীবৈশিষ্ট মান %s ৰ বাবে বিশ্লেষণ কৰিবলৈ ব্যৰ্থ '%s' পূৰ্ণসংখ্যাৰ মান %s ৰ বাবে বিশ্লেষণ কৰিবলৈ ব্যৰ্থ বাৰ্তা চিৰিয়েলাইজ কৰিব নোৱাৰি:  চিমসংযোগসমূহত সন্মতি নিৰ্ধাৰণ কৰিব নোৱাৰি setuid অৱস্থাত এটা বাৰ্তা বাচ প্ৰজনন কৰিব নোৱাৰি এটা মেচিন-আইডিৰ অৱিহনে এটা বাৰ্তা বাচ সৃজন কৰিব নোৱাৰি:  এটা চাৰ্ভাৰ সৃষ্টি কৰোতে nonce file ধাৰ্য্য কৰিব নোৱাৰি GBufferedInputStream ক truncate কৰিব নোৱাৰি GMemoryInputStream ক truncate কৰিব নোৱাৰি চেনেল অসম্পূৰ্ণ আখৰত অন্ত হয় আখৰ UTF-16 ৰ আয়ত্বৰ বাহিৰত আখৰ UTF-8 ৰ আয়ত্বৰ বাহিৰত আখৰৰ উল্লেখ থকা '%-.*s' এ এটা আজ্ঞা থকা আখৰক সাঙ্কেতিক লিপিলৈ পৰিবৰ্তিত নকৰে আখৰৰ উল্লেখ এটা ছেমিকলনেৰে অন্ত নহল; খুব সম্ভৱ পদাৰ্থ এটা আৰম্ভ কৰিব নিবিচাৰিও আপুনি এটা এম্পাৰছেন্দ আখৰ ব্যৱহাৰ কৰিছে - এম্পাৰছেন্দক &amp; হিচাপে এস্কেইপ কৰক নিৰীক্ষণ কৰক KEY লিখাযোগ্য হয় নে চাইল্ড প্ৰক্ৰিয়া অস্বাভাৱিকভাৱে প্ৰস্থান কৰিলে চাইল্ড প্ৰক্ৰিয়া ক'ড %ld ৰ সৈতে প্ৰস্থান কৰিলে চাইল্ড প্ৰক্ৰিয়া সংকেত %ld দ্বাৰা kill কৰা হৈছে চাইল্ড প্ৰক্ৰিয়া সংকেত %ld দ্বাৰা বন্ধ কৰা হৈছে কমান্ডসমূহ:
 কমান্ডসমূহ:
  help         এই তথ্য দেখুৱায়
  introspect   এটা দূৰৱৰ্তী অবজেক্ট নিৰীক্ষণ কৰক
  monitor      এটা দূৰৱৰ্তী অবজেক্ট মনিটৰ কৰক
  call         এটা দূৰৱৰ্তী অবজেক্টত এটা পদ্ধতি আৱাহন কৰক
  emit         এটা সংকেত এৰক

প্ৰতিটো কমান্ডত সহায়ৰ বাবে "%s COMMAND --help"  ব্যৱহাৰ কৰক।
 এটা সম্পদ ফাইলত এটা সম্পদ ধাৰ্য্যকৰণ কমপাইল কৰক।
সম্পদ ধাৰ্য্যকৰণ ফাইলসমূহৰ প্ৰসাৰণ .gresource.xml থাকে,
আৰু সম্পদ ফাইলৰ প্ৰসাৰণ .gresource থাকে। সকলো GSettings স্কিমা ফাইলসমূহক এটা স্কিমা ক্যাশত কমপাইল কৰক।
স্কিমা ফাইলসমূহৰ সম্প্ৰসাৰন .gschema.xml থাকিব লাগিব,
আৰু ক্যাশ ফাইলক gschemas.compiled কোৱা হয়। প্ৰদান কৰা D-Bus ঠিকনাৰ সৈতে সংযোগ কৰক অধিবেশন বাচৰ সৈতে সংযোগ কৰক চিস্টেম বাচৰ সৈতে সংযোগ কৰক সংযোগ অন্তবিন্দু বিকল্পসমূহ: সংযোগ চলি আছে সংযোগ SOCKSv5 প্ৰক্সি দ্বাৰা নাকচ কৰা হৈছে। SOCKSv4 প্ৰক্সি চাৰ্ভাৰৰ সৈতে সংযোগ নাকচ কৰা হৈছিল ধাৰণকাৰী মাউন্ট উপস্থিত নাই আখৰৰ সংহতি '%s' ৰ পৰা '%s' লৈ সলনি কৰাৰ সমৰ্থন নাই মাউন্টসমূহৰ মাজত কপি (ৰিফ্লিঙ্ক/ক্লৌন) সমৰ্থিত নহয় কপি (ৰিফ্লিৃঙ্ক/ক্লৌন) সমৰ্থিত নহয় অথবা কাম নকৰিলে কপি (ৰিফ্লিঙ্ক/ক্লৌন) সমৰ্থিত নহয় অথবা অবৈধ ফাইল পঢ়িবলে %lu বাইট আবন্টন কৰিব পৰা নগল "%s" ফাইল পঢ়িবলে %lu বাইট আবন্টন কৰিব পৰা নগল "%s" %s লে সংযোগ কৰিব নোৱাৰি:  প্ৰক্সি চাৰ্ভাৰ %s লে সংযোগ কৰিব নোৱাৰি:  সংযোগ কৰিব পৰা নগল:  নেটৱৰ্ক মনিটৰ সৃষ্টি কৰিব পৰা নগল: নেটৱৰ্ক মনিটৰ সৃষ্টি কৰিব পৰা নগল: %s %s ৰ ডিস্ক ব্যৱহাৰ নিৰ্ধাৰণ কৰিব পৰা নগল: %s নেটৱৰ্ক অৱস্থা প্ৰাপ্ত কৰিব নোৱাৰি:  %s ৰ পৰা স্কিমাসমূহ ল'ড কৰিব পৰা নগল: %s
 '%s' ৰ পৰা '%s' লৈ সলনি কৰা পৰিৱৰ্তকক খোলিব নোৱাৰি '%s' ৰ পৰা '%s' লৈ সলনি কৰা পৰিৱৰ্তক খোলিব পৰা নগল: %s '%s' ক IP ঠিকনা মাস্ক হিচাপে বিশ্লেষণ কৰিব পৰা নগল PEM এনকোডেড প্ৰমাণপত্ৰ বিশ্লেষণ কৰিব পৰা নগল PEM এনকোডেড ব্যক্তিগত কি বিশ্লেষণ কৰিব নোৱাৰি এই OS ত তথ্য স্পুফিং সম্ভব নহয় %s ৰ বাবে স্বনিৰ্ধাৰত ব্যাখ্যা DEFINE দলত একাধিক ব্ৰাঞ্চ উপস্থিত আছে DIRECTORY ডেস্কটপ ফাইলত Exec ক্ষেত্ৰ নিৰ্ধাৰিত নহয় নিৰীক্ষণ কৰিবলে গন্তব্য নাম পদ্ধতি আৱাহন কৰিবলে গন্তব্য নাম মনিটৰলে গন্তব্য নাম আইডি %d ৰ সৈতে কুকি পোৱা নগল '%s' ৰ keyring ত কি নাম বাধাসমূহ বলৱৎ নকৰিব gschema.compiled ফাইল নিলিখিব বৈশিষ্ট্যৰ নামৰ পিছত উপস্থিত সমান চিহ্নৰ পিছত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে; বৈশিষ্ট্যৰ মান অনুপস্থিত কোনো মন্তব্য বা প্ৰক্ৰিয়াকৰণৰ নিৰ্দেশত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে বৈশিষ্ট্যৰ নামত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে পদাৰ্থৰ নামত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে পদাৰ্থৰ প্ৰাৰম্ভিক টেগত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে '%s' পদাৰ্থৰ অন্তিম টেগত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে খোলা ব্ৰেকেটৰ প্ৰাৰম্ভিক চিহ্নৰ '<' ঠিক পিছত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে বৈশিষ্ট্যৰ মানত দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে খোলা পদাৰ্থসহ দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে - '%s' পদাৰ্থ সৰ্বশেষ খোলা হৈছিল দস্তাবেজ অপ্ৰত্যাশিতৰূপে সমাপ্ত হৈছে, <%s/> টেগ সমাপ্তিৰ বাবে খোলা ব্ৰেকেট চিহ্নৰ অন্তিম অংশৰ উপস্থিতি প্ৰত্যাশিত দস্তাবেজ এটা উপাদানৰ সৈতে আৰম্ভ হ'ব লাগিব (যেনে <book>) দস্তাবেজ ৰিক্ত বা অকল ৰিক্ত স্থান আছিলে সম্পদক স্বচালিতভাৱে সৃষ্টি আৰু ৰেজিস্টাৰ নকৰিব ফলনসমূহ এক্সপোৰ্ট নকৰিব; সিহতক G_GNUC_INTERNAL ঘোষণা কৰক '%s' ৰ দ্বীবৈশিষ্ট মান %s ৰ বাবে সীমা বহিৰ্ভূত ERROR বাৰ্তা: REPLY_SERIAL অথবা ERROR_NAME হেডাৰ ক্ষেত্ৰ সন্ধানহীন '%s' পদাৰ্থ বদ্ধ অৱস্থাত, বৰ্তমানে '%s' পদাৰ্থ খোলা অৱস্থাত আছে '%s' পদাৰ্থ বদ্ধ অৱস্থাত, বৰ্তমানে কোনো পদাৰ্থ খোলা অৱস্থাত নাই উপাদান <%s> ওপৰ স্তৰত অনুমোদিত নহয় উপাদান <%s> ওপৰস্তৰত অনুমোদিত নহয় উপাদান <%s> <%s> ৰ ভিতৰত অনুমোদিত নহয় এটা সংকেত এৰক। ৰিক্ত পদাৰ্থ '&;' দেখা গ'ল; বৈধ পদাৰ্থসমূহ হ'ল: &amp; &quot; &lt; &gt; &apos; ৰিক্ত পথ দিয়া হৈছে।
 ৰিক্ত স্কিমা নাম দিয়া হৈছে
 %u বাইট দৈৰ্ঘৰ এৰে সন্মুখিন হল। সৰ্বাধিক দৈৰ্ঘ হল 2<<26 bytes (64 MiB)। %u বাইটসমূহ দৈৰ্ঘৰ এৰে সন্মুখিন হল। সৰ্বাধিক দৈৰ্ঘ হল 2<<26 bytes (64 MiB)। 'a%c' ধৰণৰ এৰেৰ সন্মুখিন হল, %u বাইটৰ বহুগুন হিচাপে এটা দৈৰ্ঘ্য আশা কৰা হৈছিল, কিন্তু %u বাইট দৈৰ্ঘ্য প্ৰাপ্ত হল GApplication সেৱা অৱস্থা সুমুৱাওক (D-Bus সেৱা ফাইলসমূহৰ পৰা ব্যৱহাৰ কৰক) পদাৰ্থ এটা ছেমিকলনেৰে অন্ত নহল; খুব সম্ভৱ পদাৰ্থ এটা আৰম্ভ কৰিব নিবিচাৰিও আপুনি এটা এম্পাৰছেন্দ আখৰ ব্যৱহাৰ কৰিছে - এম্পাৰছেন্দক &amp; হিচাপে এস্কেইপ কৰক পদাৰ্থৰ নাম '%-.*s' অজ্ঞাত Enumerator বন্ধ সংযোগ গ্ৰহণ কৰোঁতে ত্ৰুটি: %s স্বচালিত-লঞ্চ কৰোতে ত্ৰুটি:  ঠিকনালৈ বান্ধিবলৈ সমস্যা: %s %s ৰ বাবে StartServiceByName কল কৰোতে ত্ৰুটি:  SO_PASSCRED চকেটৰ বাবে সামৰ্থবান আছে নে নিৰীক্ষণ কৰোতে ত্ৰুটি: %s (অসংযুক্ত) lock file '%s' বন্ধ কৰোতে ত্ৰুটি: %s ফাইল বিৱৰক বন্ধ কৰোতে ত্ৰুটি: %s ফাইল বন্ধ কৰিবলৈ সমস্যা: %s হাতল বন্ধ কৰোতে ত্ৰুটি: %s চকেট বন্ধ কৰোঁতে ত্ৰুটি: %s ফাইল %s সংকোচন কৰোতে ত্ৰুটি সংযোগ কৰোতে ত্ৰুটি: %s
 বেক-আপ প্ৰতিলিপি সৃষ্টি কৰিবলৈ সমস্যা: %s ডাইৰেকটৰি '%s' সৃষ্টি কৰোতে ত্ৰুটি: %s ডাইৰেকটৰি সৃষ্টি কৰিবলৈ ব্যৰ্থ: %s lock file '%s' সৃষ্টি কৰোতে ত্ৰুটি: %s পুৰনি lock file '%s' মচি পেলাওতে ত্ৰুটি: %s D-Bus তাঁৰ বিন্যাসৰ পৰা ধৰণ স্ট্ৰিং '%s' ৰ সৈতে GVariant ডিচিৰিএলাইজ কৰোতে ত্ৰুটি সলনি কৰাৰ সময়ত ত্ৰুটি: %s SO_PASSCRED সামৰ্থবান কৰোতে ত্ৰুটি: %s সংযোগ পৰিষ্কাৰ কৰোতে ত্ৰুটি: %s
 ফাইলচিস্টেম তথ্য প্ৰাপ্ত কৰিবলৈ সমস্যা: %s ঠিকনা '%s' ত ত্ৰুটি - পৰিয়াল বৈশিষ্ট ক্ষতিগ্ৰস্থ ঠিকনা '%s' ত ত্ৰুটি - হস্ট বৈশিষ্ট সন্ধানহীন অথবা ক্ষতিগ্ৰস্থ ঠিকনা '%s' ত ত্ৰুটি - noncefile বৈশিষ্ট সন্ধানহীন অথবা ক্ষতিগ্ৰস্থ ঠিকনা '%s' ত ত্ৰুটি - পৰ্ট বৈশিষ্ট ক্ষতিগ্ৰস্থ ঠিকনা '%s' ত ত্ৰুটি - পৰ্ট বৈশিষ্ট সন্ধানহীন অথবা ক্ষতিগ্ৰস্থ ঠিকনা '%s' ত ত্ৰুটি - unix পৰিৱহনৰ কেৱল এটা 'পথ' অথবা 'এবস্ট্ৰেক্ট' সংহতি কৰাৰ প্ৰয়োজন মাল্টিকাস্ট দলত অংশগ্ৰহণ কৰোতে ত্ৰুটি: %s এপ্লিকেচন আৰম্ভ কৰিবলৈ ত্ৰুটি: %s মাল্টিকাস্ট দল এৰোতে ত্ৰুটি: %s চিমসংযোগ সৃষ্টি কৰিবলৈ ব্যৰ্থ: %s ফাইল স্থানান্তৰ কৰিবলৈ সমস্যা: %s %d শাৰীৰ %d আখৰত ত্ৰুটি: %d শাৰীত ত্ৰুটি: %s '%s' ডাইৰেকটৰি খোলোঁতে ত্ৰুটি: %s ফাইল '%s' খোলিবলৈ সমস্যা: %s ফাইল খোলিবলৈ সমস্যা: %s keyring '%s' ক পঢ়াৰ বাবে খোলোতে ত্ৰুটি:  লিখিবৰ বাবে keyring '%s' খোলিবলে ত্ৰুটি:  nonce file '%s' খোলোতে ত্ৰুটি: %s নিৰীক্ষণ XML বিশ্লেষণ কৰোতে ত্ৰুটি: %s
 %s বিকল্প বিশ্লেষণ কৰিবলৈ ব্যৰ্থ প্ৰাচল %d বিশ্লেষণ কৰোতে ত্ৰুটি ধৰণ '%s': %s
 প্ৰাচল %d বিশ্লেষণ কৰোতে ত্ৰুটি: %s
 ফাইল %s পঢ়োতে ত্ৰুটি: %s ফাইল '%s' পঢ়োঁতে ত্ৰুটি: %s ফাইল বিৱৰকৰ পৰা পঢ়োতে ত্ৰুটি: %s ফাইলৰ পৰা পঢ়িবলৈ সমস্যা: %s হাতলৰ পৰা পঢ়োতে ত্ৰুটি: %s nonce file '%s' ৰ পৰা পঢ়োতে ত্ৰুটি, ১৬ বাইট আশা কৰা হৈছিল, %d পোৱা গল nonce file '%s' ৰ পঢ়োতে ত্ৰুটি: %s তথ্য পাওঁতে ত্ৰুটি: %s সম্বাদ পাওঁতে ত্ৰুটি: %s ফাইল আঁতৰাবলৈ সমস্যা: %s পুৰনি বেক-আপ সংযোগ আঁতৰাবলৈ সমস্যা: %s পুৰনি ফাইল আঁতৰাবলৈ সমস্যা: %s লক্ষ্য ফাইল আঁতৰাবলৈ সমস্যা: %s ফাইলৰ নাম পৰিবৰ্তনত সমস্যা: %s অস্থায়ী ফাইলৰ নাম পৰিবৰ্তন কৰিবলৈ সমস্যা: %s '%s' বুজিব লওঁতে ত্ৰুটি '%s' বিশ্লেষণ কৰোঁতে ত্ৰুটি: %s '%s'  ধৰণৰ দেহৰ সৈতে ত্ৰুটি ঘুৰাই দিয়া হৈছে ৰিক্ত দেহৰ সৈতে ত্ৰুটি ঘুৰাই দিয়া হৈছে '%s' ক ওলোটা ভাবে বুজিবলৈ ত্ৰুটি: %s ফাইলত seek কৰিবলৈ সমস্যা: %s তথ্য পঠিয়াওতে ত্ৰুটি:  তথ্য পঠিয়াবলৈ সমস্যা: %s সম্বাদ পঠিয়াওঁতে ত্ৰুটি: %s D-Bus তাঁৰ বিন্যাসৰ লে ধৰণ স্ট্ৰিং '%s' ৰ সৈতে GVariant চিৰিএলাইজ কৰোতে ত্ৰুটি SELinux ৰ সন্দৰ্ভ নিৰ্ধাৰণ কৰিবলৈ ব্যৰ্থ: %s সম্প্ৰসাৰিত বৈশিষ্ট নিৰ্ধাৰণ কৰোঁতে ত্ৰুটি '%s': %s পৰিবৰ্তন বা অভিগমৰ সময় নিৰ্ধাৰণ কৰিবলৈ সমস্যা: %s গৰাকী নিৰ্ধাৰণ কৰিবলৈ সমস্যা: %s অনুমতি নিৰ্ধাৰণ কৰিবলৈ সমস্যা: %s বৈশিষ্ট '%s' সংহতি কৰোতে ত্ৰুটি: আশা কৰা হৈছিল '%s' কিন্তু পোৱা গল '%s' চিমসংযোগ নিৰ্ধাৰণ কৰিবলৈ সমস্যা: %s চিমসংযোগ নিৰ্ধাৰণ কৰিবলৈ ত্ৰুটি: ফাইল চিমসংযোগ নহয় কমান্ড শাৰী '%s' সৃজন কৰোতে ত্ৰুটি:  ফাইল splice কৰোতে ত্ৰুটি: %s ফাইল আবৰ্জনালৈ স্থানান্তৰ কৰিবলৈ সমস্যা: %s ফাইল সৰু কৰিবলৈ ত্ৰুটি: %s কি অথবা মান আনএক্সেইপ কৰোতে ত্ৰুটি কি/মান যোৰ %d, %s ত,ঠিকনা উপাদান '%s' ত lock file '%s' আনসংযোগ কৰোতে ত্ৰুটি: %s ডাইৰেকটৰি '%s' ৰ বাবে তথ্য প্ৰাপ্ত কৰোতে ত্ৰুটি: %s ফাইল '%s' ৰ বাবে তথ্য প্ৰাপ্ত কৰোতে ত্ৰুটি: %s ফাইল বিৱৰকৰ বাবে তথ্য প্ৰাপ্ত কৰোতে ত্ৰুটি: %s সাধাৰণ অভিব্যক্তি %s, %d আখৰত কমপাইল কৰিবলৈ সমস্যা: %s SO_PASSCRED অসামৰ্থবান কৰোতে ত্ৰুটি: %s সাধাৰণ অভিব্যক্তি %s ৰ মিল অনুসন্ধানত সমস্যা: %s সাধাৰণ অভিব্যক্তি %s ৰ সৰ্বোত্তম ব্যৱহাৰত সমস্যা: %s প্ৰতিস্থাপন লিখনি "%s"  আখৰ %lu ত বিশ্লেষণ কৰিবলৈ সমস্যা: %s nonce file '%s' ৰ সমলসমূহ স্ৰোতলে লিখোতে ত্ৰুটি: '%s' ত nonce file লিখোতে ত্ৰুটি: %s ফাইল বিৱৰকলে লিখোতে ত্ৰুটি: %s ফাইললৈ লিখিবলৈ সমস্যা: %s হাতললে লিখোতে ত্ৰুটি: %s ত্ৰুটি: %s
 ত্ৰুটি: %s এটা বৈধ আন্তঃপৃষ্ঠ নাম নহয়
 ত্ৰুটি: %s এটা বৈধ সদস্য নাম নহয়
 ত্ৰুটি: %s এটা বৈধ অবজেক্ট পথ নহয়
 ত্ৰুটি: %s এটা বৈধ অবিকল্প বাচ নাম নহয়।
 ত্ৰুটি: গন্তব্য ধাৰ্য্য কৰা হোৱা নাই
 ত্ৰুটি: পদ্ধতি নাম '%s' অবৈধ
 ত্ৰুটি: পদ্ধতি নাম ধাৰ্য্য কৰা হোৱা নাই
 ত্ৰুটি: অবজেক্ট পথ ধাৰ্য্য কৰা হোৱা নাই
 ত্ৰুটি: অবজেক্ট পথ ধাৰ্য্য কৰা হোৱা নাই।
 ত্ৰুটি: সংকেত সম্পূৰ্ণভাৱে-অৰ্হতাসম্পন্ন নাম হব লাগিব।
 ত্ৰুটি: সংকেত ধাৰ্য্য কৰা হোৱা নাই।
 সকলো উপলব্ধ প্ৰমাণীকৰণ পদ্ধতি শেষ হৈছে (চেষ্টা কৰা হৈছে: %s) (উপলব্ধ: %s) বৰ্ত্তমানে থকা ফাইল '%s' আঁতৰাব পৰা নগল: g_unlink() ব্যৰ্থ: %s স্ট্ৰিং '%s' ৰ পিছত NUL বাইট আশা কৰা হৈছিল কিন্তু বাইট %d পোৱা গল GEmblemedIcon ৰ কাৰণে এটা GEmblem প্ৰত্যাশিত বৈধ UTF-8 স্ট্ৰিং আশা কৰা হৈছিল কিন্তু বাইট অফচেট %d ত অবৈধ বাইটসমূহ পোৱা গল (স্ট্ৰিংৰ দৈৰ্ঘ %d)। সেই বিন্দু লৈকে বৈধ UTF-8 স্ট্ৰিং '%s' আছিল 1 নিয়ন্ত্ৰণৰ সম্বাদ প্ৰত্যাশিত, %d প্ৰাপ্ত হল 1 নিয়ন্ত্ৰণৰ সম্বাদ প্ৰত্যাশিত, %d প্ৰাপ্ত হল এটা fd প্ৰত্যাশিত, কিন্তু প্ৰাপ্ত হল %d
 এটা fd প্ৰত্যাশিত, কিন্তু প্ৰাপ্ত হল %d
 তথ্যসমূহ গ্ৰহন কৰাৰ বাবে এটা বাইট পঢ়িবলে আশা কৰা হৈ আছিল কিন্তু শূণ্য বাইট পঢ়া হল stdout লে এটা সম্পদ ফাইল নিষ্কাষণ কৰক FILE FILE PATH FILE [PATH] মেমৰি আবন্টন কৰিবলৈ ব্যৰ্থ '%s' ডাইৰেকটৰিলৈ পৰিবৰ্তন কৰিবলৈ ব্যৰ্থ (%s) '%s' ফাইল সৃষ্টি কৰোঁতে ব্যৰ্থ: %s চাইল্ড প্ৰক্ৰিয়াৰ সৈতে যোগাযোগৰ উদ্দেশ্যে পাইপ সৃষ্টিত ব্যৰ্থ (%s) অস্থায়ী ফাইল সৃষ্টি কৰোতে ব্যৰ্থ: %s চাইল্ড প্ৰক্ৰিয়া "%s" চলাওঁতে ব্যৰ্থ (%s) চাইল্ড প্ৰক্ৰিয়া প্ৰণয়ন কৰিবলৈ ব্যৰ্থ (%s) সহায়ক প্ৰগ্ৰাম চলাওঁতে ব্যৰ্থ (%s) exec শাৰী '%s', য'ত URI '%s' আছে, বিস্তৃত কৰাত ব্যৰ্থ fork কৰিবলৈ ব্যৰ্থ (%s) চাইল্ড প্ৰক্ৰিয়া fork কৰিবলৈ ব্যৰ্থ (%s) ফাইল '%s%s%s%s' ৰ বৈশিষ্টসমূহ প্ৰাপ্ত কৰিবলে ব্যৰ্থ: fstat() ব্যৰ্থ: %s '%s' ফাইলৰ বৈশিষ্ট পাওঁতে ব্যৰ্থ: fstat() ব্যৰ্থ: %s কোনো উৎস ডাইৰেকটৰিত '%s' অৱস্থান কৰাত ব্যৰ্থ বৰ্তমান ডাইৰেকটৰিত '%s' অৱস্থান কৰাত ব্যৰ্থ %s%s%s%s মেপ কৰিবলে ব্যৰ্থ: mmap() ব্যৰ্থ: %s '%s' ফাইল খোলোঁতে ত্ৰুটি: %s '%s' ফাইল খোলোঁতে ত্ৰুটি: fdopen() ব্যৰ্থ: %s '%s' ফাইল খোলোঁতে ব্যৰ্থ: open() ব্যৰ্থ: %s '%-.*s' বিশ্লেষণ কৰোঁতে ত্ৰুটি, যি কোনো আখৰৰ উল্লেখৰ ভিতৰৰ এটা সংখ্যা হ'ব লাগিছিল (&#২৩৪; যেনে) - হয়তো সংখ্যাটো বৰ ডাঙৰ চাইল্ড প্ৰক্ৰিয়াৰ পৰা তথ্য পঢ়িবলৈ ব্যৰ্থ চাইল্ড প্ৰক্ৰিয়াৰ পৰা তথ্য পঢ়িবলৈ ব্যৰ্থ (%s) চাইল্ড pid পাইপৰ পৰা পৰ্যাপ্ত তথ্য পঢ়িবলৈ ব্যৰ্থ (%s) চাইল্ড পাইপৰ পৰা পঢ়িবলৈ ব্যৰ্থ (%s) '%s' ফাইলৰ পৰা পঢ়োঁতে ব্যৰ্থ: %s চিমসংযোগ পঢ়াত ব্যৰ্থ '%s': %s চাইল্ড প্ৰক্ৰিয়াৰ আউটপুট বা ইনপুট পুনৰনিৰ্দেশ কৰিবলৈ ব্যৰ্থ (%s) '%s' ফাইলক '%s' লৈ পুনঃনামকৰণ কৰোঁতে ব্যৰ্থ: g_rename() ব্যৰ্থ: %s মেমৰিৰ আউটপুটৰ স্ৰোতক পুনঃ আকাৰ দিবলৈ ব্যৰ্থ '%s' ফাইল লিখাত ব্যৰ্থ: fsync() ব্যৰ্থ: %s ফাইল '%s' লিখিবলে ব্যৰ্থ: write() ব্যৰ্থ: %s "%s" ফাইল বৰ ডাঙৰ ফাইল %s সম্পদত বহুবাৰ দেখা গৈছে ফাইল enumerator ত অসমাপ্ত কৰ্ম উপস্থিত ফাইল enumerator ৰ বন্ধ ফাইলৰ নামত '%c' ব্যৱহাৰ কৰা নাযাব ফাইলচিস্টেময়ে সাংকেতিক সংযোগসমূহ সমৰ্থন নকৰে ফাইলচিস্টেম root keyring ৰ %d শাৰীৰ প্ৰথম টকেন ক্ষতিগ্ৰস্থ '%s' ত সমল '%s' ৰ সৈতে GApplication বিকল্পসমূহ GCredentials ৰ এই OS ত এটা প্ৰক্ৰিয়া ID নাই GCredentials এই OS ত প্ৰণয়ন কৰা হোৱা নাই %H:%M:%S %I.%M.%S %p %a %b %e %H:%M:%S %Y %m/%d/%y পূৰ্ব্বাহ্ন অপৰাহ্ন GSocketControlMessage ক Windows ত সমৰ্থিত নহয় নিৰ্ভৰতা তালিকা সৃজন কৰক লক্ষ্য ফাইল সম্প্ৰসাৰন দ্বাৰা নিৰ্বাচিত বিন্যাসত আউটপুট সৃজন কৰক উৎস হেডাৰ সৃজন কৰক আপোনাৰ ক'ডত সম্পদ ফাইলৰ সৈতে সংযোগ কৰিবলে ব্যৱহৃত উৎসক'ড সৃজন কৰক KEY ৰ মান প্ৰাপ্ত কৰক সহায় বিকল্পসমূহ: হস্ট প্ৰাপ্ত কৰিব নোৱাৰি হস্ট SOCKSv5 চাৰ্ভাৰ দ্বাৰা প্ৰাপ্ত নহয়। হস্টনাম  '%s' এ  '[' কিন্তু নহয় ']' অন্তৰ্ভুক্ত কৰে হস্টনাম '%s' SOCKSv4 প্ৰটোকলৰ বাবে অতি দীঘল হস্টনাম '%s' SOCKSv5 প্ৰটোকলৰ বাবে অতি দীঘল উপেক্ষা কৰা হৈছে, GTestDbus ৰ সৈতে compat ৰ বাবে এই কিৰ বাবে অভাৰৰাইড উপেক্ষা কৰা হৈছে।
 এই ফাইল উপেক্ষা কৰা হৈছে।
 ইনপুটত অবৈধ মাল্টিবাইট ক্ৰম ইনপুট স্ৰোতে পঢ়া কাৰ্য ৰূপায়ন নকৰে ইনপুট স্ট্ৰিমে সন্ধান প্ৰণয়ন নকৰে '%s' পূৰ্ণসংখ্যাৰ মান %s ৰ বাবে সীমাৰ বহিৰ্ভূত '%s' পূৰ্ণসংখ্যা মান সীমা বহিৰ্ভূত অভ্যন্তৰীক SOCKSv5 প্ৰক্সি চাৰ্ভাৰ ত্ৰুটি। অভ্যন্তৰীক ত্ৰুটি: %s এটা দূৰৱৰ্তী অবজেক্ট নিৰীক্ষণ কৰক। সন্তান নিৰীক্ষণ কৰক অৱৈধ GSeekType উল্লিখিত হৈছে নামত অৱৈধ UTF-8 সাঙ্কেতিক লিপি - অৱৈধ '%s' অবৈধ বৈশিষ্টৰ ধৰণ (প্ৰত্যাশিত byte স্ট্ৰিং) অবৈধ বৈশিষ্টৰ ধৰণ (স্ট্ৰিং প্ৰত্যাশিত) অবৈধ বৈশিষ্টৰ ধৰণ (প্ৰত্যাশিত uint32) অবৈধ বৈশিষ্টৰ ধৰণ (প্ৰত্যাশিত uint64) সলনি কৰাৰ ইনপুটত অৱৈধ byte ক্ৰম অবৈধ সংকোচিত তথ্য অবৈধ endianness মান। 0x6c ('l') অথবা 0x42 ('B') আশা কৰা হৈছিল কিন্তু মান 0x%02x পোৱা গল অবৈধ সম্প্ৰসাৰিত বৈশিষ্টৰ নাম ফাইলৰ নাম অবৈধ ফাইলৰ নাম অৱৈধ: %s দলৰ নাম অৱৈধ: %s অৱৈধ হস্টনাম অৱৈধ কিৰ নাম: %s: অবৈধ মূখ্য প্ৰটোকল সংস্কৰণ। আশা কৰা হৈছিল 1 কিন্তু পোৱা গল %d অবৈধ অবজেক্ট, আৰম্ভ কৰা হোৱা নাই অৱৈধ প্ৰগ্ৰামৰ নাম: %s অৱৈধ seek ৰ অনুৰোধ ৰূপান্তৰ কৰাৰ উদ্দেশ্যে প্ৰদত্ত তথ্যত অৱৈধ ধাৰা অবৈধ চকেট, ইয়াৰ কাৰণে আৰম্ভ কৰিব নোৱাৰি: %s অবৈধ চকেট, আৰম্ভ কৰা হোৱা নাই %d ত তৰ্ক সদিশত উল্লিখিত পংক্তি বৈধ নহয়: %s পৰিবেশত উল্লিখিত পংক্তি বৈধ নহয়: %s অৱৈধ চিমসংযোগ মান উপলব্ধ কৰা হৈছে সক্ৰিয় ডাইৰেকটৰি বৈধ নহয়: %s এটা দূৰৱৰ্তী অবজেক্টত এটা পদ্ধতি আৱাহন কৰক। এপ্লিকেচনত এটা কাৰ্য্য আৱাহন কৰক দল '%s' ত কি '%s' ৰ মান '%s' আছে যত %s প্ৰত্যাশিত আছিল কি ফাইলত পংক্তিৰ অৱশেষত এস্কেইপ আখৰ উপস্থিত আছে কি ফাইলত অৱৈধ এস্কেইপ ধাৰা উপস্থিত আছে '%s' কি ফাইলয় দল '%s' ত কি '%s' অন্তৰ্ভুক্ত কৰে যাৰ এটা অনুবাদ কৰিব নোৱাৰা মান আছে। কি ফাইলত '%s' কি উপস্থিত আছে যাৰ মান বুজিব পৰা নাযায়। কি ফাইলত '%s' কি আছে '%s' মান সহ যি UTF-8 বিন্যাসত  নাই। কি ফাইলত '%s' পংক্তি আছে যি কি-মানৰ জোৰা, দল বা মন্তব্য নহয় কি ফাইলত অসমৰ্থিত এনক'ডিং '%s' কি ফাইলত কোনো দল অনুপস্থিত '%s' কি ফাইলত কোনো কি উপস্থিত নাই '%s' কি ফাইলত '%s' কি '%s' দলত নাই কি-ফাইলৰ আৰম্ভত কোনো দল উল্লিখিত নাই কি/মান যোৰ %d, '%s', ঠিকনা উপাদান '%s' ত এটা ইকুৱেল চিহ্ন অন্তৰ্ভুক্ত নকৰে এটা এপ্লিকেচন আৰম্ভ কৰক এপ্লিকেচন আৰম্ভ কৰক (খোলিবলৈ বৈকল্পিক ফাইলসমূহৰ সৈতে) read বাফাৰত অৱশিষ্ট অপৰিবৰ্তিত তথ্য আছে দৈৰ্ঘ্য %u ঠিকনাৰ বাবে অতি দীঘল keyring ৰ শাৰী %d ক্ষতিগ্ৰস্থ '%s' ত সমল '%s' ৰ সৈতে এপ্লিকেচনসমূহ তালিকাভুক্ত কৰক উপলব্ধ কাৰ্য্যসমূহ তালিকাভুক্ত কৰক কি আৰু মানসমূহ তালিকাভুক্ত কৰক, বাৰংবাৰভাৱে
যদি কোনো SCHEMA দিয়া হোৱা নাই, সকলো কি তালিকাভুক্ত কৰক
 সম্পদসমূহ তালিকাভুক্ত কৰক
যদি SECTION দিয়া থাকে, কেৱল এই অংশত সম্পদসমূহ তালিকাভুক্ত কৰক
যদি PATH দিয়া থাকে, কেৱল মিল খোৱা সম্পদসমূহ তালিকাভুক্ত কৰক বিৱৰণ থকা সম্পদসমূহ তালিকাভুক্ত কৰক
যদি SECTION দিয়া থাকে, কেৱল এই অংশৰ সম্পদসমূহ তালিকাভুক্ত কৰক
যদি PATH দিয়া থাকে, কেৱল মিল খোৱা সম্পদসমূহ তালিকাভুক্ত কৰক
বিৱৰণসমূহে অংশ, আকাৰ আৰু সংকোচন অন্তৰ্ভুক্ত কৰে এটা elf ফাইলত সম্পদসমূহ অন্তৰ্ভুক্ত কৰা অংশসমূহ তালিকাভুক্ত কৰে এটা এপ্লিকেচনৰ বাবে স্থিৰ কাৰ্য্যসমূহ তালিকাভুক্ত কৰক (.desktop ফাইলৰ পৰা) SCHEMA সন্তানসমূহ তালিকাভুক্ত কৰক ইনস্টল (অৱস্থিত কৰিব নোৱাৰা) স্কিমাসমূহ তালিকাভুক্ত কৰক ইনস্টল্ড D-Bus সক্ৰিয়যোগ্য এপ্লিকেচনসমূহ তালিকাভুক্ত কৰক (.desktop ফাইলসমূহৰে) ইনস্টল থকা পুনৰ অৱস্থিত কৰিব পৰা স্কিমাসমূহ তালিকাভুক্ত কৰক কিসমূহক SCHEMA ত তালিকাভুক্ত কৰক স্ৰোত ইতিমধ্যে বন্ধ METHOD_CALL বাৰ্তা: PATH অথবা MEMBER হেডাৰ ক্ষেত্ৰ সন্ধানহীন METHOD_RETURN বাৰ্তা: REPLY_SERIAL হেডাৰ ক্ষেত্ৰ সন্ধানহীন GFileIcon ৰ কাৰণে ত্ৰুটি ইনপুট তথ্য GEmblem encoding ত ট'কেনৰ ত্ৰুটি সংখ্যা (%d) GEmblemedIcon encoding ত ট'কেনৰ ত্ৰুটি সংখ্যা (%d) ত্ৰুটি সংস্কৰণ সংখ্যা: %s ঠিকনা প্ৰবিষ্টি '%s' ত মূল্যহিন কি/মান যোৰ সংযুক্তি মেমৰিৰ আউটপুটৰ স্ৰোতক পুনঃ আকাৰ দিব নোৱাৰি বাৰ্তা দেহৰ স্বাক্ষৰ '%s' আছে কিন্তু কোনো স্বাক্ষৰ হেডাৰ নাই বাৰ্তা দেহৰ ধৰণ স্বাক্ষৰ '%s' আছে কিন্তু হেডাৰ ক্ষেত্ৰত স্বাক্ষৰ '%s' বাৰ্তা দেহ ৰিক্ত কিন্তু হেডাৰ ক্ষেত্ৰত স্বাক্ষৰ হল '(%s)' বাৰ্তাৰ %d ফাইল বিৱৰকসমূহ আছে কিন্তু হেডাৰ ক্ষেত্ৰয় %d ফাইল বিৱৰকসমূহৰ সূচনা দিয়ে আন্তঃপৃষ্ঠ '%s' ত স্বাক্ষৰ '%s' ৰ সৈতে পদ্ধতি '%s' অস্তিত্ববান নহয় পদ্ধতি '%s' এ ধৰণ '%s' ঘুৰাই দিছে, কিন্তু আশা কৰা হৈছিল '%s' পদ্ধতি আৰু আন্তঃপৃষ্ঠ নাম %s ৰ তৰ্ক সন্ধানহীন KEY ক পৰিবৰ্তনসমূহৰ বাবে মনিটৰ কৰক।
যদি কোনো কি ধাৰ্য্য কৰা নহয়, SCHEMA ত থকা সকলো কি মনিটৰ কৰক।
মনিটৰিং বন্ধ কৰিবলে ^C ব্যৱহাৰ কৰক।
 এটা দূৰৱৰ্তী অবজেক্ট মনিটৰ কৰক। মাউন্ট কৰা অৱস্থানত স্থানান্তৰ কৰা সম্ভৱ নহয় বহু সংযোগ অন্তবিন্দু ধাৰ্য্য কৰা হৈছে অধিক ইনপুটৰ প্ৰয়োজন নেটৱৰ্ক প্ৰাপ্ত কৰিব নোৱাৰি নেটৱৰ্ক  SOCKSv5 প্ৰক্সি দ্বাৰা প্ৰাপ্ত নহয়। '%s' ৰ বাবে অনুৰোধ কৰা ধৰণৰ কোনো DNS ৰেকৰ্ড নাই URI '%s' ৰ পত্ৰচিহ্নৰ বাবে কোনো MIME ৰ ধৰণ সংজ্ঞা দিয়া হোৱা নাই কোনো PEM এনকোডেড প্ৰমাণপত্ৰ পোৱা নগল কোনো PEM এনকোডেড ব্যক্তিগত কি পোৱা নগল কোনো ঠিকনা ধাৰ্য্য কৰা হোৱা নাই চিহ্নিত ফাইল ব্যৱস্থাপনাৰ উদ্দেশ্যে কোনো এপ্লিকেচন নিবন্ধিত নহয় '%s' নামৰ কোনো এপ্লিকেচনে '%s' ৰ বাবে কোনো পত্ৰচিহ্ন ৰেজিস্টাৰ কৰা নাই URI '%s' ৰ বাবে পত্ৰচিহ্ন পোৱা নগল কোনো সংযোগ অন্তবিন্দু ধাৰ্য্য কৰা হোৱা নাই URI '%s' ৰ পত্ৰচিহ্নৰ বাবে কোনো দল প্ৰতিষ্ঠা কৰা হোৱা নাই URI '%s' ৰ পত্ৰচিহ্নত কোনো ব্যক্তিগত চিহ্নৰ সংজ্ঞা দিয়া হোৱা নাই কোনো স্কিমা ফাইল পোৱা নগল: বাৰ্তাত কোনো স্বাক্ষৰ হেডাৰ নাই কিন্তু বাৰ্তা দেহ হল %u বাইট বাৰ্তাত কোনো স্বাক্ষৰ হেডাৰ নাই কিন্তু বাৰ্তা দেহ হল %u বাইটসমূহ এনে কোনো আন্তঃপৃষ্ঠ নাই এনে কোনো আন্তঃপৃষ্ঠ '%s' নাই পথ %s ত অবজেক্টত এনে কোনো আন্তঃপৃষ্ঠ '%s' নাই পথ %s ৰ অবজেক্টত এনে কোনো আন্তঃপৃষ্ঠ 'org.freedesktop.DBus.Properties' নাই এনে কোনো কি '%s' নাই
 অভাৰৰাইড ফাইল '%s' ত দেখুৱা দৰে স্কিমা '%s' ত এনে কোনো কি '%s' নাই এনে কোনো পদ্ধতি '%s' নাই এনে কোনো বৈশিষ্ট  '%s'  নাই এনে কোনো স্কিমা '%s' নাই
 উৎস-বিশেষ মাল্টিকাস্টৰ বাবে কোনো সমৰ্থন নাই শ্ৰেণীৰ নাম %s ৰ ধৰণ নাই কোনো বৈধ ঠিকনা পোৱা নগল তথ্য ডাইৰেকটৰিত কোনো বৈধ পত্ৰচিহ্নৰ ফাইল পোৱা নগল সাধাৰণ ফাইল নহয় পৰ্যাপ্ত মেমৰি নাই চকেট ঠিকনাৰ কাৰণে যথেষ্ট স্থান নাই গন্তব্যত পৰ্যাপ্ত স্থান নাই নিয়ন্ত্ৰণ বাৰ্তা আশা কৰা হোৱা নাছিল, কিন্তু %d পোৱা গল সংকেত এৰিবলে অবজেক্ট পথ নিৰীক্ষণ কৰিবলে অবজেক্ট পথ পদ্ধতি আৱাহন কৰিবলে অবজেক্ট পথ মনিটৰলে অবজেক্ট পথ '%s' আখৰ প্ৰত্যাশিত নহয়, এটা '=' চিহ্ন প্ৰত্যাশিত বৈশিষ্টৰ নাম '%s', পদাৰ্থ '%s' ৰ, পিছত ত্ৰুটি আখৰ '%s', এটা '>' আখৰ প্ৰত্যাশিত ৰিক্ত পদাৰ্থৰ টেগ '%s' শেষ কৰিবলৈ '%s' আখৰ প্ৰত্যাশিত নহয়, '%s' পদাৰ্থৰ প্ৰাৰম্ভিক টেগ সমাপ্ত কৰাৰ উদ্দেশ্যে '>' বা '/' চিহ্ন বা কোনো বৈশিষ্ট্যৰ উপস্থিতি কাম্য; সম্ভৱতঃ কোনো বৈশিষ্ট্যৰ নামত অৱৈধ আখৰ ব্যৱহৃত হৈছে '%s' আখৰ অপ্ৰত্যাশিত, '%s' বৈশিষ্টৰ, পদাৰ্থ '%s' ৰ, মান নিৰ্ধাৰণৰ উদ্দেশ্যে সমান চিহ্নৰ পিছত এটা উদ্ধৃতি চিহ্নৰ প্ৰাৰম্ভিক অংশ উপস্থিতি প্ৰত্যাশিত কেৱল বৈশিষ্টসমূহ প্ৰিন্ট কৰক কাৰ্য্য সমৰ্থিত নহয় কৰ্ম বাতিল কৰা হৈছে সংকেতৰ বাবে বৈকল্পিক গন্তব্য (অবিকল্প নাম) কাৰ্য্য আৱাহনৰ বাবে বৈকল্পিক প্ৰাচল, GVariant বিন্যাসত বৈকল্পিক প্ৰাসংগিক অথবা প্ৰাসংগিক ফাইলনামসমূহ, অথবা খোলিবলৈ URls সংযোগ অন্তবিন্দু ধাৰ্য্য কৰা বিকল্পসমূহ আউটপুটৰ স্ৰোতে লিখা কাৰ্য ৰূপায়ন নকৰে প্ৰাচল PATH PCRE লাইব্ৰেৰী অসংগত বিকল্পসমূহ দ্বাৰা কমপাইল কৰা আছে PCRE লাইব্ৰেৰি UTF8 বৈশিষ্ট্যৰ সমৰ্থন নোহোৱাকে কমপাইল কৰা হৈছে PCRE লাইব্ৰেৰি UTF8 সমৰ্থন নোহোৱাকে কমপাইল কৰা হৈছে POSIX কলেটিং পদাৰ্থ সমৰ্থিত নহয় POSIX নামৰ শ্ৰেণীসমূহ অকল শ্ৰেণীত সমৰ্থিত হ'ব অপৰৰ বাবে বিশ্লেষণ কৰা মান '%s' এটা বৈধ D-Bus স্বাক্ষৰ নহয় বিশ্লেষণ কৰা মান '%s' এটা বৈধ D-Bus অবজেক্ট পথ নহয় বিশ্লেষণ কৰা মান '%s' এটা বৈধ D-Bus স্বাক্ষৰ নহয় বিশ্লেষণ কৰা মান '%s' এটা বৈধ D-Bus স্বাক্ষৰ (দেহৰ বাবে) ইনপুটৰ অন্তত অসম্পূৰ্ণ আখৰৰ ক্ৰম পথ এটা স্লেশ (/) ৰ সৈতে আৰম্ভ হব লাগিব
 পথ এটা স্লেশ (/) ৰ সৈতে শেষ হব লাগিব
 পথত দুটা কাষৰীয়া স্লেশ থাকিব নালাগিব (//)
 ডাইৰেকটৰি '%s' ত অনুমতিসমূহ ক্ষতিগ্ৰস্থ। আশা কৰা অৱস্থা 0700, প্ৰাপ্ত হল 0%o XML প্ৰিন্ট কৰক ঠিকনা প্ৰিন্ট কৰক শ্বেল অৱস্থাত ঠিকনা প্ৰিন্ট কৰক প্ৰিন্ট সহায় প্ৰিন্ট সংস্কৰণ সংস্কৰণ তথ্য প্ৰিন্ট কৰক আৰু প্ৰস্থান কৰক বৈশিষ্ট '%s' পঢ়িব নোৱাৰি বৈশিষ্ট '%s' লিখিব নোৱাৰি প্ৰক্সি প্ৰটোকল '%s' সমৰ্থিত নহয়। নন-TCP সংযোগৰ ওপৰত প্ৰক্সি কৰাটো সমৰ্থন কৰা নহয়। KEY ৰ বাবে বৈধ মানসমূহৰ বিস্তাৰক প্ৰশ্ন কৰক উদ্ধৃতিৰ অংশ উদ্ধৃতি চিহ্ন দ্বাৰা আৰম্ভ কৰা নহয় অবৈধ fd পোৱা গ'ল স্ৰোতৰ আৰম্ভণিৰ আগত সন্ধানৰ অনুৰোধ কৰা হৈছে স্ৰোতৰ শেষ পাৰ হৈ সন্ধানৰ অনুৰোধ কৰা হৈছে KEY ক ইয়াৰ অবিকল্পিত মানলে পুনৰসংহতি কৰক SCHEMA ত থকা সকলো কিক সিহতৰ অবিকল্পিতসমূহলে পুনৰসংহতি কৰক এটা dbus সেৱা চলাওক SCHEMA[:PATH] SCHEMA[:PATH] KEY SCHEMA[:PATH] KEY VALUE SCHEMA[:PATH] [KEY] SECTION SELinux ৰ সন্দৰ্ভ NULL হ'ব নোৱাৰে এই চিস্টেমত SELinux সক্ৰিয় কৰা নাই SIGNAL বাৰ্তা: PATH, INTERFACE অথবা MEMBER হেডাৰ ক্ষেত্ৰ সন্ধানহীন SIGNAL বাৰ্তা: INTERFACE হেডাৰ ক্ষেত্ৰয় সংৰক্ষীত মান org.freedesktop.DBus.Local ব্যৱহাৰ কৰি আছে SIGNAL বাৰ্তা: PATH হেডাৰ ক্ষেত্ৰয় সংৰক্ষীত মান /org/freedesktop/DBus/Local ব্যৱহাৰ কৰি আছে SOCKSv4 এ IPv6 ঠিকনা '%s' ক সমৰ্থন নকৰে SOCKSv5 প্ৰমাণীকৰণ ত্ৰুটি ব্যৱহাৰকাৰীনাম অথবা পাছৱৰ্ডৰ কাৰণে ব্যৰ্থ হল। SOCKSv5 সংযোগ নিয়মসংহতি দ্বাৰা অনুমোদিত নহয়।  SOCKSv5 প্ৰক্সিয়ে 'connect' কমান্ডৰ সমৰ্থন নকৰে। SOCKSv5 প্ৰক্সিয়ে প্ৰদান কৰা ঠিকনা ধৰণ সমৰ্থন নকৰে। স্কিমা '%s' পুনৰঅৱস্থিত কৰিব নোৱাৰি (পথ ধাৰ্য্য কৰা হব নালাগিব)
 স্কিমা '%s' পুনৰঅৱস্থিত কৰিব পাৰি (পথ ধাৰ্য্য কৰিব লাগিব)
 keyring ৰ %d শাৰীৰ দ্বিতীয় টকেন ক্ষতিগ্ৰস্থ '%s' ত সমল '%s' ৰ সৈতে ভিত্তি স্ৰোতত Seek সমৰ্থিত নহয় স্ৰোত দ্বাৰা Seek সমৰ্থিত নহয় অধিবেশন dbus চলি থকা নাই, আৰু autolaunch ব্যৰ্থ হল KEY ৰ মান VALUE লে সংহতি কৰক %s বৈশিষ্টৰ মান নিৰ্ধাৰণ সমৰ্থিত নহয় বহু সুমুৱা পাছৱৰ্ড ত্ৰুটি হৈছে, আৰু আপোনাৰ অভিগম ততোধিক ব্যৰ্থতাৰ পিছত লক আউট কৰি দিয়া হব। GApplication বিকল্পসমূহ দেখুৱাওক সহায় সমস্ত বিকল্প দেখুৱাওক সহায় বিকল্পসমূহ দেখুৱাওক সংকেত আৰু আন্তঃপৃষ্ঠ নাম স্বাক্ষৰ '%s' ৰ সৈতে স্বাক্ষৰ হেডাৰ পোৱা গল কিন্তু বাৰ্তা অংশ ৰিক্ত চকেট I/O সময়অন্ত হল চকেট ইতিমধ্যে বন্ধ উৎসৰ স্ৰোত ইতিমধ্যে বন্ধ Splice সমৰ্থিত নহয় স্ৰোত দ্বাৰা query_info সমৰ্থিত নহয় স্ৰোতৰ ক্ষেত্ৰত অসমাপ্ত কৰ্ম উপস্থিত আছে স্ৰোত ইতিমধ্যে বন্ধ চিমসংযোগ সমৰ্থিত নহয় TLS সমৰ্থন উপলব্ধ নহয় লক্ষ্য ফাইল উপস্থিত আছে লক্ষ্য ফাইল এটা ডাইৰেকটৰি লক্ষ্য ফাইল সাধাৰণ ফাইল নহয় '%s' টেমপ্লেটত XXXXXX নাই '%s' টেমপ্লেট অৱৈধ, এটা '%s' থাকিব নালাগে '%s' ক অস্থায়ীভাবে বুজিব পৰা নাযায় %c ৰ ক্ষেত্ৰত সুসংগত উদ্ধৃতি চিহ্ন পোৱা নাযায়। (লিখনি আছিল '%s') '\' আখৰৰ পিছত লিখনি সমাপ্ত হৈছে। (লিখনি আছিল '%s') লিখনি ৰিক্ত (বা অকল শূণ্যস্থানসহ) SOCKSv5 প্ৰক্সিৰ এটা প্ৰমাণীকৰণ পদ্ধতিৰ প্ৰয়োজন যি GLib দ্বাৰা সমৰ্থিত নহয়। SOCKSv5 প্ৰক্সি চাৰ্ভাৰৰ প্ৰমাণীকৰণৰ প্ৰয়োজন। SOCKSv5 প্ৰক্সি চাৰ্ভাৰে অজ্ঞাত ঠিকনা ধৰণ ব্যৱহাৰ কৰে। URI '%s' ত অৱৈধভাবে মুক্তি পোৱা আখৰ আছে URI '%s' অৱৈধ "file" আঁচনি ব্যৱহাৰ কৰা URI '%s' এটা সম্পূৰ্ণ URI নহয় আৱাহন কৰিবলৈ কাৰ্য্যৰ নাম কমান্ড যাৰ বাবে বিৱৰিত সহায় প্ৰিন্ট কৰা হব সংযোগ বন্ধ ডাইৰেকটৰিসমূহ যৰ পৰা ফাইলসমূহ পঢ়া হব (বৰ্তমান ডাইৰেকটৰিলে অবিকল্পিত)  ফাইল বহিৰ্তমভাৱে পৰিবৰ্তন কৰা হৈছে দিয়া ঠিকনা ৰিক্ত URI '%s' ৰ হস্টনাম অৱৈধ কি' লিখিব পৰা নহয়
 স্থানিক ফাইলৰ URI '%s' ত এটা '#' থাকিব নোৱাৰে সুমুৱা পাছৱৰ্ড শুদ্ধ নহয়। '%s' পথৰ নাম এটা সম্পূৰ্ণ পথৰ নাম নহয় প্ৰদান কৰা মান বৈধ বিস্তাৰৰ বাহিৰ
 '%s' ত সম্পদ অস্তিত্ববান নহয় '%s' ত সম্পদ অসংকোচন হবলে ব্যৰ্থ হল '%s' ৰ সম্পদ এটা ডাইৰেকটৰি নহয় চাৰ্ভাৰ এটা SOCKSv4 প্ৰক্সি চাৰ্ভাৰ নহয়। চাৰ্ভাৰ এটা SOCKSv5 প্ৰক্সি চাৰ্ভাৰ নহয়। স্ট্ৰিং '%s' এটা বৈধ D-Bus GUID নহয় আপোনাৰ প্লেটফৰ্মৰ বাবে কোনো GCredentials সমৰ্থন নাই এই সম্পূৰ্ণ ফাইল উপেক্ষা কৰা হৈছে।
 আপোনাৰ অভিগম লকআউট হৈ যোৱাৰ আগত পাছৱৰ্ড সঠিকভাৱে সুমুৱাৰ এয়া শেষ সুযোগ। ছেকেণ্ডসমূহত সময়অন্ত সময়অন্ত প্ৰাপ্ত কৰা হৈছিল %s লৈ বহুত ডাঙৰ count মান দিয়া হৈছে আবৰ্জনা সমৰ্থিত নহয় ইনপুট স্ৰোতত Truncate ৰ অনুমতি নাই ভিত্তি স্ৰোতত Truncate ৰ সমৰ্থন নাই স্ৰোতত Truncate ৰ সমৰ্থন নাই %s ধৰণে from_tokens() প্ৰণয়ন নকৰে GIcon আন্তঃপৃষ্ঠত %s ধৰনে GIcon আন্তঃপৃষ্ঠ প্ৰণয়ন নকৰে %s ধৰণক class কৰা হোৱা নাই বাৰ্তাৰ ধৰণ, '%s', প্ৰত্যাশিত ধৰণ '%s' ৰ সৈতে মিল নাখায় URI সমৰ্থিত নহয় চকেট সৃষ্টি কৰিবলৈ সমস্যা: %s আবৰ্জনাৰ ডাইৰেকটৰি %s সৃষ্টি কৰিবলৈ সমস্যা: %s trashing তথ্যৰ ফাইল সৃষ্টি কৰিব নোৱাৰি: %s অবিকল্পিত স্থানীয় ডাইৰেকটৰিৰ মনিটৰৰ ধৰণ পোৱা নগল অবিকল্পিত স্থানীয় ফাইলৰ মনিটৰৰ ধৰণ পোৱা নগল আবৰ্জনাৰ ডাইৰেকটৰি চিনাক্ত বা সৃষ্টি কৰিবলৈ ব্যৰ্থ এপ্লিকেচনৰ বাবে আৱশ্যক টাৰ্মিনেল পোৱা নাযায় আবৰ্জনাৰ ঊৰ্ধ্বতন ডাইৰেকটৰি চিনাক্ত কৰিবলৈ ব্যৰ্থ হাৰ্ডৱেৰ আলেখ্য প্ৰাপ্ত কৰিবলে অক্ষম: %s পেন্ডিং ত্ৰুটি পাবলৈ ব্যৰ্থ: /var/lib/dbus/machine-id অথবা /etc/machine-id ল'ড কৰিবলে অক্ষম:  চকেট তথ্যসমূহ পঢ়িবলৈ অক্ষম: %s চকেট বন্ধ কৰিবলে অক্ষম: %s ফাইল বৰ্জন কৰিবলৈ ব্যৰ্থ: %s অপ্ৰত্যাশিত বৈশিষ্ট '%s' পদাৰ্থ '%s' ৰ বাবে স্ৰোতৰ অপ্ৰত্যাশিত আগতীয়া অন্ত। চাইল্ড প্ৰক্ৰিয়াৰ পৰা তথ্য পঢ়াৰ সময়ত g_io_channel_win32_poll() ত অপ্ৰত্যাশিত ত্ৰুটি চাইল্ড প্ৰক্ৰিয়াৰ পৰা তথ্য পঢ়াৰ সময়ত select() অপ্ৰত্যাশিত ত্ৰুটি (%s) waitpid() ত অপ্ৰত্যাশিত ত্ৰুটি (%s) এটা শাৰী (সুৰক্ষিতভাৱে) পঢ়াৰ চেষ্টাত অপ্ৰত্যাশিত সমল চেষ্টাৰ অভাৱ এটা শাৰী পঢ়োতে অপ্ৰত্যাশিত সমল চেষ্টাৰ অভাৱ অপ্ৰত্যাশিত উত্তৰ %d StartServiceByName("%s") পদ্ধতিৰ পৰা অপ্ৰত্যাশিত চিহ্ন '%s', '%s' ৰ ভিতৰত অপ্ৰত্যাশিত চিহ্ন '%s', '%s' চিহ্ন আশা কৰা হৈছিল এঞ্চিলাৰি তথ্যৰ অপ্ৰত্যাশিত ধৰণ অজ্ঞাত SOCKSv5 প্ৰক্সি ত্ৰুটি। অজ্ঞাত বাচ ধৰণ %d অজ্ঞাত কমান্ড %s

 চাইল্ড প্ৰক্ৰিয়া "%s" প্ৰণয়ন কৰিবলৈ অজ্ঞাত ত্ৰুটি সংযোগত অজ্ঞাত ত্ৰুটি অজ্ঞাত পৰিয়াল ধাৰ্য্য কৰা হৈছিল অজ্ঞাত বিকল্প %s ঠিকনা '%s' ৰ বাবে অজ্ঞাত অথবা অসমৰ্থিত পৰিৱহন '%s' অজ্ঞাত প্ৰক্ৰিয়াকৰণ বিকল্প "%s" অজ্ঞাত প্ৰটোকল ধাৰ্য্য কৰা হৈছিল অজ্ঞাত ধৰণ কমান্ড শাৰী বা শ্বেল ৰ উদ্ধৃতিত অসংগত উদ্ধৃতি চিহ্ন নামবিহীন এটা ক্লাএন্ট দিশ সংযোগ সৃষ্টি কৰোতে অসমৰ্থিত ফ্লেগসমূহৰ সন্মুখিন হৈছে ঠিকনা প্ৰবিষ্টি '%s' ত অসমৰ্থিত কি '%s' অসমৰ্থিত চকেট ঠিকনা ব্যৱহাৰ: ব্যৱহাৰ:
 ব্যৱহাৰ:
  gresource %s%s%s %s

%s

 ব্যৱহাৰ:
  gresource [--section SECTION] COMMAND [ARGS...]

কমান্ডসমূহ:
  help                      এই তথ্য দেখুৱাওক
  sections                  সম্পদ অংশসমূহ তালিকাভুক্ত কৰক
  list                      সম্পদসমূহ তালিকাভুক্ত কৰক
  details                   বিৱৰণৰ সৈতে সম্পদসমূহ তালিকাভুক্ত কৰক
  extract                   এটা সম্পদ নিষ্কাষণ কৰক

বিৱৰিত সহায়ৰ বাবে 'gresource help COMMAND' ব্যৱহাৰ কৰক।

 Usage:
  gsettings --version
  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]

Commands:
  help                      Show this information
  list-schemas              List installed schemas
  list-relocatable-schemas  List relocatable schemas
  list-keys                 List keys in a schema
  list-children             List children of a schema
  list-recursively          List keys and values, recursively
  range                     Queries the range of a key
  get                       Get the value of a key
  set                       Set the value of a key
  reset                     Reset the value of a key
  reset-recursively         Reset all values in a given schema
  writable                  Check if a key is writable
  monitor                   Watch for changes

Use 'gsettings help COMMAND' to get detailed help.

 ব্যৱহাৰ:
  gsettings [--schemadir SCHEMADIR] %s %s

%s

 বিৱৰিত সহায়ৰ বাবে '%s help COMMAND' ব্যৱহাৰ কৰক।

 ব্যৱহাৰকাৰীনাম SOCKSv4 প্ৰটোকলৰ বাবে অতি দীঘল ব্যৱহাৰকাৰীনাম অথবা পাছৱৰ্ড SOCKSv5 প্ৰটোকলৰ বাবে অতি দীঘল। অনুসন্ধানৰ dirs ত বৈধ কি ফাইল পোৱা নাযায় '%s' মান বুলিয়েন ৰূপে বুজিব পৰা নাযায়। '%s' মান float সংখ্যা ৰূপে বুজিব পৰা নাযায়। '%s' মান কোনো সংখ্যাৰূপে বুজিব পৰা নাযায়। চকেট অৱস্থাৰ কাৰণে প্ৰতীক্ষা কৰা হৈছে: %s %lu বাইট পঢ়িবৰ ইচ্ছা আছিল কিন্তু %lu প্ৰাপ্ত হল %lu বাইট পঢ়িবৰ ইচ্ছা আছিল কিন্তু %lu প্ৰাপ্ত হল সতৰ্কবাৰ্তা: নিৰীক্ষণ তথ্যৰ মতে, আন্তঃপৃষ্ঠ '%s' ৰ অস্তিত্ব নাই
 সতৰ্কবাৰ্তা: নিৰীক্ষণ তথ্যৰ মতে, আন্তঃপৃষ্ঠ '%s' ত পদ্ধতি '%s' ৰ অস্তিত্ব নাই
 ভুল args
 ট'কেনৰ ত্ৰুটি সংখ্যা (%d) আপুনি এটা ডাইৰেকটৰি নাম দিব লাগিব
 আপুনি এটা ফাইল নাম দিব লাগিব
 [ARGS...] [COMMAND] [OPTION...] [PATH] [SCHEMA[:PATH]] পংক্তিৰ শেষত \ উপস্থিত lookbehind assertion ত \C ৰ অনুমতি নাই \N এটা শ্ৰেণীত সমৰ্থিত নহয় পংক্তিৰ শেষত \c উপস্থিত \c এটা ASCII আখৰ দ্বাৰা অনুকৰিত হব লাগিব \g এটা ব্ৰেইচ, এঙ্ল-ব্ৰেকেট, অথবা কৌট নাম অথবা নম্বৰ, অথবা এটা সাধাৰণ নম্বৰ দ্বাৰা অনুকৰিত নহয় \k এটা ব্ৰেইচ, এঙ্ল-ব্ৰেকেট, অথবা কৌট নাম দ্বাৰা অনুকৰিত নহয় JavaScript সংগতি অৱস্থাত ] এটা অবৈধ তথ্য আখৰ এটা সাংখ্যিক প্ৰসংগ শূন্য হব নোৱাৰিব এটা পথ, যদি দিয়া আছে, এটা স্লেশৰ সৈতে আৰম্ভ আৰু অন্ত হব লাগিব এপ্ৰি আগ ডিচ ফেব্ৰু জান জুল জুন মাৰ্চ মে নভ অক্ট চেপ এপ্ৰি আগ ডিচ ফেব্ৰু জান জুল জুন মাৰ্চ মে নভ অক্ট চেপ শুক্ৰ সোম শনি দেও বৃহষ্পতি মঙ্গল বুধ কাৰ্য্যৰ নাম এপ্লিকেচন আইডিৰ পিছত দিব লাগিব
 কাৰ্য্যসমূহে সৰ্বাধিক এটা প্ৰাচল গ্ৰহণ কৰে
 (*ACCEPT), (*FAIL), অথবা (*COMMIT) ৰ বাবে এটা তৰ্কৰ অনুমতি নাই (?( ৰ পিছত assertion প্ৰত্যাশিত win32 ত এপ্লিকেচনৰ সম্বন্ধৰ সলনি সমৰ্থিত নহয় আংশিক মিল অনুসন্ধানৰ সময় বেক প্ৰসংগ সমৰ্থিত নহয় backtracking ৰ সুনিৰ্দিষ্ট সীমা পূৰ্ণ বেয়া অফচেট এটা 'list-of' স্কিমালে কিসমূহ যোগ কৰিব নোৱাৰি \u.... ক্ৰমত আখৰ মান অতি ডাঙৰ \x{...} শাৰীত আখৰৰ মান বৰ ডাঙৰ ক'ড অভাৰফ্লো চৰ্তসাপেক্ষ দলত দুটাতকৈ অধিক শাখা আছে ক্ষতিগ্ৰস্ত অৱজেক্ট স্থানীয় ঠিকনা পোৱা নাযায়: %s দূৰৰ ঠিকনা পোৱা নাযায়: %s শুনিব পৰা নগল: %s fd ৰ পৰা GSocket সৃষ্টি কৰা হৈছে: %s একে নম্বৰৰ উপবিন্যাসৰ বাবে ভিন্ন নাম অনুমোদিত নহয় সংখ্যা প্ৰত্যাশিত (?+ ৰ পিছত ডিজিট প্ৰত্যাশিত একো কৰা নাই।
 ড্ৰাইভ দ্বাৰা ইজেক্ট কৰ্ম সঞ্চালিত নহয় ড্ৰাইভ দ্বাৰা ইজেক্ট বা eject_with_operation কৰ্ম সঞ্চালিত নহয় ড্ৰাইভত মিডিয়াৰ বাবে প'ল কৰাৰ কাৰ্যক্ষমতা নাই ড্ৰাইভ দ্বাৰা আৰম্ভ কৰ্ম সঞ্চালিত নহয় ড্ৰাইভ দ্বাৰা বন্ধ কৰ্ম সঞ্চালিত নহয় ৰিক্ত নামসমূহৰ অনুমতি নাই কাৰ্য্যৰ প্ৰাচল বিশ্লেষণ কৰোতে ত্ৰুটি: %s
 অভাৰৰাইড ফাইল '%s' ত দেখুৱা দৰে স্কিমা '%s' ত কি' '%s' বিশ্লেষণ কৰোতে ত্ৰুটি: %s। এপ্লিকেচনলৈ %s বাৰ্তা পঠাওতে ত্ৰুটি: %s
 escape \L, \l, \N{name}, \U, আৰু \u সমৰ্থিত নহয় এটা 'type', 'enum' অথবা 'flags' এটা বৈশিষ্ট হিচাপে <key> লে ধাৰ্য্য কৰিব লাগিব মেমৰি প্ৰাপ্ত কৰিবলৈ ব্যৰ্থ এপ্ৰিল আগষ্ট ডিচেম্বৰ ফেব্ৰুৱাৰী জানুৱাৰী জুলাই জুন মাৰ্চ মে নভেম্বৰ অক্টোবৰ চেপ্তেম্বৰ এপ্ৰিল আগষ্ট ডিচেম্বৰ ফেব্ৰুৱাৰী জানুৱাৰী জুলাই জুন মাৰ্চ মে নভেম্বৰ অক্টোবৰ চেপ্তেম্বৰ শুক্ৰবাৰ সোমবাৰ শনিবাৰ দেওবাৰ বৃহষ্পতিবাৰ মঙ্গলবাৰ বুধবাৰ এই OS ৰ বাবে g_socket_get_credentials প্ৰণয়ন কৰা হোৱা নাই hexadecimal সংখ্যা প্ৰত্যাশিত hexadecimal সংখ্যা বা '}' প্ৰত্যাশিত অৱৈধ সাঙ্কেতিক প্ৰসংগ বিসংগত NEWLINE বিকল্পসমূহ অভ্যন্তৰীণ ত্ৰুটি অভ্যন্তৰীণ ত্ৰুটি বা ক্ষতিগ্ৰস্ত অৱজেক্ট অবৈধ GVariant ধৰণ স্ট্ৰিং '%s' অবৈধ কাৰ্য্য নাম: '%s'
কাৰ্য্যৰ নামত কেৱল আল্ফানিউমাৰিক, '-' আৰু '.' থাকিব লাগিব
 অবৈধ এপ্লিকেচন আইডি: '%s'
 নতুন পংক্তি চিহ্নকাৰী ফ্লেগৰ অৱৈধ দল অৱৈধ চৰ্ত (?(0) আখৰৰ শ্ৰেণীত অৱৈধ escape ক্ৰম অবৈধ নাম '%s': অবৈধ আখৰ '%c'; কেৱল তলৰফলা আখৰসমূহ, নম্বৰসমূহ আৰু হাইফেন ('-') ৰ অনুমতি আছে। অবৈধ নাম '%s': সৰ্বাধিক দৈৰ্ঘ হল ১০২৪ অবৈধ নাম '%s': নামসমূহ এটা তলফলা আখৰৰে আৰম্ভ হব লাগিব অবৈধ নাম '%s': শেষ আখৰ এটা হাইফেন ('-') নহবও পাৰে। অবৈধ নাম '%s': দুটা ক্ৰমাগত হাইফেন ('--') ৰ অনুমতি নাই। list-actions কমান্ডে কেৱল এপ্লিকেচন আইডি লয় lookbehind assertion সীমিত দৈৰ্ঘ্যৰ নহয় ত্ৰুটিপূৰ্ণ \P বা \p ক্ৰম (?( ৰ পিছত ত্ৰুটিপূৰ্ণ সংখ্যা বা নাম উপস্থিত আছে সাঙ্কেতিক প্ৰসংগত '<' অনুপস্থিত বক্তব্যৰ পিছত ) চিহ্ন অনুপস্থিত (?& পিছৰ উপবিন্যাস নাম সন্ধানহীন শেষৰ ) অনুপস্থিত আখৰৰ শ্ৰেণীৰ শেষত ] চিহ্ন অনুপস্থিত উপবিন্যাস নামত হেৰুৱা টাৰ্মিনেটৰ mount এ  "eject" প্ৰণয়ন নকৰে  mount এ "eject" অথবা "eject_with_operation" প্ৰণয়ন নকৰে mount এ "remount" প্ৰণয়ন নকৰে mount এ "unmount" প্ৰণয়ন নকৰে mount  এ "unmount" অথবা "unmount_with_operation" প্ৰণয়ন নকৰে mount দ্বাৰা সামগ্ৰীৰ ধৰণ অনুমান কৰা সম্ভৱ নহয় mount দ্বাৰা সুসংগতভাবে সামগ্ৰীৰ ধৰণ অনুমান কৰা সম্ভৱ নহয় (*MARK), (*PRUNE), (*SKIP), অথবা (*THEN) ত নাম অত্যাধিক ডাঙৰ আউটপুট ফাইলৰ নাম অভাৰৰাইড কৰিবলে কোনো <key name='%s'> নাই পুনৰাবৃত্তিৰ বাবে একো উপস্থিত নাই নম্বৰ অত্যাধিক ডাঙৰ {} quantifier ৰ সংখ্যা অত্যাধিক ডাঙৰ {} quantifier ত সংখ্যা ক্ৰমত নাই অক্টাল মান \377 ৰ অধিক মেমৰি অৱশিষ্ট নাই অভাৰৰেন কমপাইলিং কৰ্মস্থান অভাৰৰাইড ফাইল '%s' ত স্কিমা '%s' ত কি '%s' ৰ বাবে অভাৰৰাইড বৈধ পছন্দসমূহৰ তালিকাত নাই অভাৰৰাইড ফাইল '%s' ত স্কিমা '%s' ত কি '%s' ৰ বাবে অভাৰৰাইড স্কিমাত দিয়া বিস্তাৰৰ বাহিৰ আগতে পৰীক্ষা কৰা সন্দৰ্ভ থকা উপবিন্যাস পোৱা নগল আখৰৰ শ্ৰেণীৰ অঞ্চল সীমাৰ বাহিৰত পুনৰাবৃত্তিৰ সীমা পূৰ্ণ বাৰংবাৰতা লুপ ৰিকাৰ্ছিভ কল অনিশ্চিত কাললৈ লুপ কৰিব পাৰে অনুপস্থিত উপবিন্যাস নিৰ্দেশ কৰা হৈছে সাধাৰণ অভিব্যক্তি অত্যাধিক ডাঙৰ অস্তিত্ববান আউটপুট ফাইল আতৰোৱা হল।
 সৰু utf8 অন্তত অপ্ৰত্যাশিত '\' উপবিন্যাস নাম বৰ দীঘল (সৰ্বাধিক ৩২ টা আখৰ) চিমসংযোগ NULL হ'ব নোৱাৰে লিখনি <%s> ৰ ভিতৰত নাহিবও পাৰে এটা তালিকাৰ পথ ':/' ৰ সৈতে শেষ হব লাগিব উল্লিখিত বিন্যাসত অন্তৰ্ভুক্ত সামগ্ৰী, আংশিক মিল অনুসন্ধানত সমৰ্থিত নহয় অত্যাধিক আগবঢ়োৱা প্ৰসংগসমূহ বহুত নাম দিয়া উপবিন্যাসসমূহ (সৰ্বাধিক ১০,০০০) দুটা নাম দিয়া উপবিন্যাসসমূহ ৰ একে নাম ধৰণ INVALID D-Bus লৈ সংযোগ কৰিব নোৱাৰি: %s
 এপ্লিকেচন %s ৰ বাবে ডেস্কটপ ফাইল সন্ধান কৰিবলৈ অক্ষম
 অপ্ৰত্যাশিত পুনৰাবৃত্তি সাঙ্কেতিক প্ৰসংগ অসম্পূৰ্ণ অজ্ঞাত POSIX শ্ৰেণীৰ নাম অজ্ঞাত ত্ৰুটি অজ্ঞাত এস্কেইপ ক্ৰম \P বা \p ৰ পিছত অজ্ঞাত বৈশিষ্টৰ নাম অজ্ঞাত কমান্ড: %s

 (? অথবা (?- ৰ পিছত অপৰিচিত আখৰ (?< চিহ্নৰ পিছত অজ্ঞাত আখৰ উপস্থিত (?P চিহ্নৰ পিছত অজ্ঞাত আখৰ উপস্থিত \ ৰ পিছত অজ্ঞাত আখৰ উপস্থিত ভলিউম দ্বাৰা ইজেক্ট প্ৰয়োগ কৰা নহয় ভলিউম দ্বাৰা ইজেক্ট বা eject_with_operation প্ৰয়োগ কৰা নহয় ভলিউম দ্বাৰা mount প্ৰয়োগ কৰা নহয় gschemas.compiled ফাইল ক'ত সংৰক্ষণ কৰা হব সাঙ্কেতিক প্ৰসংগত আখৰ সংখ্যা শূণ্য                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                