This file is indexed.

/usr/share/doc/libreadosm-doc/html/readosm.html is in libreadosm-doc 1.0.0b+dfsg1-2.

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
<!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.4"/>
<title>readosm: ReadOSM basic architecture</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</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 style="padding-left: 0.5em;">
   <div id="projectname">readosm
   &#160;<span id="projectnumber">1.0.0b</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">ReadOSM basic architecture </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>ReadOSM implements a very simple and straightforward interface; there are only three methods:</p>
<ul>
<li><b><a class="el" href="readosm_8h.html#a9a85b0c226ebf5ff799a18ac832c3158" title="Open the .osm or .pbf file, preparing for future functions. ">readosm_open()</a></b>: this function is intended to establish a connection to some OSM input file.</li>
<li><b><a class="el" href="readosm_8h.html#a70c530eca9b20a3b3dd6cd47e8a6d5f5" title="Close the .osm or .pbf file and release any allocated resource. ">readosm_close()</a></b>: this function is intended to terminate a previously established connection.</li>
<li><b><a class="el" href="readosm_8h.html#a09dfad328c4fee83015c124dbc05ef10" title="Close the .osm or .pbf file and release any allocated resource. ">readosm_parse()</a></b>: a single function dispatching the whole parsing process (mainly based on <b>callback functions</b>).</li>
</ul>
<p>Accordingly to the above premises, implementing a complete OSM parser is incredibly simple:</p>
<pre class="fragment">#include &lt;readosm.h&gt;

static int 
parse_node (const void *user_data, const readosm_node * node)
{
/* callback function consuming Node objects */
  struct some_user_defined_struct *my_struct =
    (struct some_user_defined_struct *) user_data;

  ... some smart code ...

  return READOSM_OK;
}

static int 
parse_way (const void *user_data, const readosm_way * way)
{
/* callback function consuming Way objects */
  struct some_user_defined_struct *my_struct =
    (struct some_user_defined_struct *) user_data;

  ... some smart code ...

  return READOSM_OK;
}

static int 
parse_relation (const void *user_data, const readosm_relation * relation)
{
/* callback function consuming Relation objects */
  struct some_user_defined_struct *my_struct =
    (struct some_user_defined_struct *) user_data;

  ... some smart code ...

  return READOSM_OK;
}

int main ()
{
/* the basic OSM parser implementation */
  int ret;
  const void *handle;
  struct some_user_defined_struct my_struct;

  ret = readosm_open ("path-to-some-OSM-file", &amp;handle);

  ... error handling intentionally suppressed ...

  ret = readosm_parse (handle, &amp;my_struct, parse_node, parse_way, parse_relation);

  ... error handling intentionally suppressed ...

  ret = readosm_close (handle);

  ... error handling intentionally suppressed ...

  return 0;
}
</pre><p>So the real programming work is simply the one required in order to implement the callback-functions own code.<br/>
 You can usefully read and study the <b>Examples</b> code-samples in order to get any other relevant information about this topic. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Oct 16 2013 11:53:07 for readosm by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</small></address>
</body>
</html>