This file is indexed.

/usr/share/doc/libeio-doc/html/tutorial_dir_direct_ls.html is in libeio-doc 1.7.7-1ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<html>
<head>
    <title>eio_dir_direct_ls() tutorial</title>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8">
    <meta name="author" content="Andres Blanc" >
    <link rel="icon" href="img/favicon.png" type="image/x-icon">
    <link rel="shortcut icon" href="img/favicon.png" type="image/x-icon">
    <link rel="icon" href="img/favicon.png" type="image/ico">
    <link rel="shortcut icon" href="img/favicon.png" type="image/ico">
    <link rel="stylesheet" type="text/css" media="screen" href="e.css">
    <link rel="stylesheet" type="text/css" media="screen" href="edoxy.css">
</head>
<body>
<div id="container">
<div id="header">
<div class="layout">
    <h1><span>Enlightenment</span></h1>
    <h2><span>Beauty at your fingertips</span></h2>
    <div class="menu-container">
        <div class="menu">
            <ul>
	        <li class="current"><a href="http://web.enlightenment.org/p.php?p=docs">Docs</a></li>
                <li><a href="http://trac.enlightenment.org/e">Tracker</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=contact">Contact</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=contribute">Contribute</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=support">Support</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=download">Download</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=about">About</a></li>
                <li><a href="http://www.enlightenment.org/p.php?p=news">News</a></li>
                <li><a href="http://www.enlightenment.org/">Home</a></li>
            </ul>
        </div>
    </div>
    <div class="doxytitle">
        Eio Documentation <small>at Sat Jan 18 2014</small>
    </div>
    <div class="menu-container">
        <div class="submenu">
            <ul class="current">
                <li><a href="pages.html">Tutorials</a></li>
                <li><a href="group__Eio__Helper.html">Helper API</a></li>
                <li><a href="group__Eio__Monitor.html">monitoring API</a></li>
                <li><a href="group__Eio__Xattr.html">eXtended attribute API</a></li>
                <li><a href="group__Eio__Eet.html">EET API</a></li>
                <li><a href="group__Eio__Map.html">reading file API</a></li>
                <li><a href="group__Eio__Group.html">Reference API</a></li>
	        <li class="current"><a  href="index.html">Main Page</a></li>
            </ul>
        </div>
    </div>
    <div class="clear"></div>
</div>
</div>
<div id="content">
<div class="layout">
<!-- Generated by Doxygen 1.8.6 -->
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title"><a class="el" href="group__Eio__Group.html#gabf4f5a47f2151249a92fbdebf28d5fea" title="List the content of a directory and all it&#39;s sub-content asynchronously. ">eio_dir_direct_ls()</a> tutorial </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><ul>
<li>The filter callback, which allow or not a file to be seen by the main loop handler. This callback run in a separated thread. It also take care of getting a stat buffer needed by the main callback to display the file size. </li>
<li>The main callback, which receive in the main loop all the file that are allowed by the filter. If you are updating a user interface it make sense to delay the insertion a little, so you get a chance to update the canvas for a bunch of file instead of one by one. </li>
<li>The end callback, which is called in the main loop when the content of the directory has been correctly scanned and all the file notified to the main loop. </li>
<li>The error callback, which is called if an error occured or if the listing was cancelled during it's run. You can then retrieve the error type as an errno error.</li>
</ul>
<p>Here is a simple example that implement a stupidly simple recursive ls that display file size:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;Eina.h&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;Ecore.h&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;Eio.h&gt;</span></div>
<div class="line"></div>
<div class="line"><span class="keyword">static</span> Eina_Bool</div>
<div class="line">_test_filter_cb(<span class="keywordtype">void</span> *data, <a class="code" href="group__Eio__Group.html#ga1145f009745ecb4d9f6a01a9bc5a9ac0">Eio_File</a> *handler, Eina_File_Direct_Info *info)</div>
<div class="line">{</div>
<div class="line">   Eina_Stat *buffer;</div>
<div class="line">   Eina_Bool isdir;</div>
<div class="line"></div>
<div class="line">   isdir = info-&gt;type == EINA_FILE_DIR;</div>
<div class="line"></div>
<div class="line">   buffer = malloc(<span class="keyword">sizeof</span> (Eina_Stat));</div>
<div class="line">   <span class="keywordflow">if</span> (eina_file_statat(<a class="code" href="group__Eio__Helper.html#ga44520dafc4a5066e9e1378d4a7a892c5">eio_file_container_get</a>(handler), info, buffer))</div>
<div class="line">     {</div>
<div class="line">        free(buffer);</div>
<div class="line">        <span class="keywordflow">return</span> EINA_FALSE;</div>
<div class="line">     }</div>
<div class="line"></div>
<div class="line">   <span class="keywordflow">if</span> (!isdir &amp;&amp; info-&gt;type == EINA_FILE_DIR)</div>
<div class="line">     {</div>
<div class="line">        <span class="keyword">struct </span>stat st;</div>
<div class="line">        <span class="keywordflow">if</span> (lstat(info-&gt;path, &amp;st) == 0)</div>
<div class="line">          {</div>
<div class="line">             <span class="keywordflow">if</span> (S_ISLNK(st.st_mode))</div>
<div class="line">               info-&gt;type = EINA_FILE_LNK;</div>
<div class="line">          }</div>
<div class="line">     }</div>
<div class="line"></div>
<div class="line">   <a class="code" href="group__Eio__Helper.html#ga335a93b8e07bb926b1347c02303f58c6">eio_file_associate_direct_add</a>(handler, <span class="stringliteral">&quot;stat&quot;</span>, buffer, free);</div>
<div class="line">   fprintf(stdout, <span class="stringliteral">&quot;ACCEPTING: %s\n&quot;</span>, info-&gt;path);</div>
<div class="line">   <span class="keywordflow">return</span> EINA_TRUE;</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line">_test_main_cb(<span class="keywordtype">void</span> *data, <a class="code" href="group__Eio__Group.html#ga1145f009745ecb4d9f6a01a9bc5a9ac0">Eio_File</a> *handler, <span class="keyword">const</span> Eina_File_Direct_Info *info)</div>
<div class="line">{</div>
<div class="line">   <span class="keyword">struct </span>stat *buffer;</div>
<div class="line"></div>
<div class="line">   buffer = <a class="code" href="group__Eio__Helper.html#ga67e04d574f768dae03ab1143ed15990c">eio_file_associate_find</a>(handler, <span class="stringliteral">&quot;stat&quot;</span>);</div>
<div class="line">   fprintf(stdout, <span class="stringliteral">&quot;PROCESS: %s of size %li\n&quot;</span>, info-&gt;path, buffer-&gt;st_size);</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line">_test_done_cb(<span class="keywordtype">void</span> *data, <a class="code" href="group__Eio__Group.html#ga1145f009745ecb4d9f6a01a9bc5a9ac0">Eio_File</a> *handler)</div>
<div class="line">{</div>
<div class="line">   printf(<span class="stringliteral">&quot;ls done\n&quot;</span>);</div>
<div class="line">   ecore_main_loop_quit();</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line">_test_error_cb(<span class="keywordtype">void</span> *data, <a class="code" href="group__Eio__Group.html#ga1145f009745ecb4d9f6a01a9bc5a9ac0">Eio_File</a> *handler, <span class="keywordtype">int</span> error)</div>
<div class="line">{</div>
<div class="line">   fprintf(stdout, <span class="stringliteral">&quot;error: [%s]\n&quot;</span>, strerror(error));</div>
<div class="line">   ecore_main_loop_quit();</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span></div>
<div class="line">main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)</div>
<div class="line">{</div>
<div class="line">   <a class="code" href="group__Eio__Group.html#ga1145f009745ecb4d9f6a01a9bc5a9ac0">Eio_File</a> *cp;</div>
<div class="line"></div>
<div class="line">   <span class="keywordflow">if</span> (argc != 2)</div>
<div class="line">     {</div>
<div class="line">        fprintf(stdout, <span class="stringliteral">&quot;eio_ls directory\n&quot;</span>);</div>
<div class="line">        <span class="keywordflow">return</span> -1;</div>
<div class="line">     }</div>
<div class="line"></div>
<div class="line">   ecore_init();</div>
<div class="line">   <a class="code" href="group__Eio__Helper.html#gac612fe5df9b9c93c275ee373745c2471">eio_init</a>();</div>
<div class="line"></div>
<div class="line">   cp = <a class="code" href="group__Eio__Group.html#gabf4f5a47f2151249a92fbdebf28d5fea">eio_dir_direct_ls</a>(argv[1],</div>
<div class="line">                          _test_filter_cb,</div>
<div class="line">                          _test_main_cb,</div>
<div class="line">                          _test_done_cb,</div>
<div class="line">                          _test_error_cb,</div>
<div class="line">                          NULL);</div>
<div class="line"></div>
<div class="line">   ecore_main_loop_begin();</div>
<div class="line"></div>
<div class="line">   <a class="code" href="group__Eio__Helper.html#ga2281001078f6f99e3662bc889524831b">eio_shutdown</a>();</div>
<div class="line">   ecore_shutdown();</div>
<div class="line"></div>
<div class="line">   <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --> </div></div><!-- contents -->
 
 <div id="push"></div>
 </div> <!-- #content -->
  </div> <!-- .layout -->
 </div> <!-- #container -->
  <div id="footer">
    <table><tr>
      <td class="poweredby"><img src="doxygen.png"></td>
      <td class="copyright">Copyright &copy;2014 Enlightenment</td>
      <td class="generated">Docs generated Sat Jan 18 2014 19:26:44</td>
    </tr></table>
  </div>
</body>
</html>