/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'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 <Eina.h></span></div>
<div class="line"><span class="preprocessor">#include <Ecore.h></span></div>
<div class="line"><span class="preprocessor">#include <Eio.h></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->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 && info->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->path, &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->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">"stat"</span>, buffer, free);</div>
<div class="line"> fprintf(stdout, <span class="stringliteral">"ACCEPTING: %s\n"</span>, info->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">"stat"</span>);</div>
<div class="line"> fprintf(stdout, <span class="stringliteral">"PROCESS: %s of size %li\n"</span>, info->path, buffer->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">"ls done\n"</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">"error: [%s]\n"</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">"eio_ls directory\n"</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 ©2014 Enlightenment</td>
<td class="generated">Docs generated Sat Jan 18 2014 19:26:44</td>
</tr></table>
</div>
</body>
</html>
|