This file is indexed.

/usr/share/doc/libraw1394-doc/libraw1394/x96.html is in libraw1394-doc 2.1.2-1.

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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>The Event Loop</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="libraw1394"
HREF="index.html"><LINK
REL="UP"
TITLE="Data Structures and Program Flow"
HREF="c62.html"><LINK
REL="PREVIOUS"
TITLE="Ports"
HREF="x85.html"><LINK
REL="NEXT"
TITLE="Handlers"
HREF="x127.html"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>libraw1394: version 2.0.4</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x85.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 3. Data Structures and Program Flow</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x127.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN96"
>3.4. The Event Loop</A
></H1
><P
>&#13;	All commands in libraw1394 are asynchronous, with some
	synchronous wrapper functions for some types of transactions.
	This means that there are two streams of data, one going into
	raw1394 and one coming out.  With this design you can send out
	multiple transactions without having to wait for the response
	before you can continue (sending out other transactions, for
	example).  The responses and other events (like bus resets and
	received isochronous packets) are queued, and you can get them
	with <CODE
CLASS="function"
>raw1394_loop_iterate()</CODE
> or
	<CODE
CLASS="function"
>raw1394_loop_iterate_timeout()</CODE
> (which
	always returns after a user-specified timeout if no
	raw1394 event has occurred).
      </P
><P
>&#13;	This forms an event loop you may already know from similar systems like
	GUI toolkits.  <CODE
CLASS="function"
>raw1394_loop_iterate()</CODE
> gets one
	message from the event queue in raw1394, processes it with the
	configured callback functions and returns the value returned by the
	callback (so you can signal to the main loop from your callback; the
	standard callbacks all return 0).  It normally blocks when there are no
	events and always processes only one event.  If you are only receiving
	broadcast events like isochronous packets you thus have to set up a loop
	continuously calling the iterate function to get your callbacks called.
      </P
><P
>&#13;	Often it is necessary to have multiple event loops and combine
	them, e.g. if your application uses a GUI toolkit which also
	has its own event loop.  In that case you can use
	<CODE
CLASS="function"
>raw1394_get_fd()</CODE
> to get the file
	descriptor used for this handle by libraw1394.  The fd can be
	used to for <CODE
CLASS="function"
>select()</CODE
> or
	<CODE
CLASS="function"
>poll()</CODE
> calls together with the other
	loop's fd. (Most toolkits, like GTK and Qt, have special APIs
	for integrating file descriptors into their own event loops).
      </P
><P
>&#13;        If using <CODE
CLASS="function"
>poll()</CODE
>, you must test for
	<CODE
CLASS="symbol"
>POLLIN</CODE
> and <CODE
CLASS="symbol"
>POLLPRI</CODE
>
	events. If using <CODE
CLASS="function"
>select()</CODE
>, you must test
	for both read and exception activity.
      </P
><P
> If any of these conditions trigger, you should then call
        <CODE
CLASS="function"
>raw1394_loop_iterate()</CODE
> to pick up the
        event. <CODE
CLASS="function"
>raw1394_loop_iterate()</CODE
> is
        guaranteed not to block when called immediately after select()
        or poll() indicates activity.  After the first call you
        continue the main event loop.  If more events wait, the
        <CODE
CLASS="function"
>select()</CODE
>/<CODE
CLASS="function"
>poll()</CODE
> will
        immediately return again.
      </P
><P
>&#13;	You can also use the fd to set the <CODE
CLASS="symbol"
>O_NONBLOCK</CODE
> flag with
	<CODE
CLASS="function"
>fcntl()</CODE
>.  After that, the iterate function will not
	block anymore but fail with <CODE
CLASS="symbol"
>errno</CODE
> set to
	<CODE
CLASS="symbol"
>EAGAIN</CODE
> if no events wait.  These are the only legal
	uses for the fd returned by <CODE
CLASS="function"
>raw1394_get_fd()</CODE
>.
      </P
><P
>&#13;	There are some functions which provide a synchronous wrapper for
	transactions, note that these will call
	<CODE
CLASS="function"
>raw1394_loop_iterate()</CODE
> continuously until their
	transaction is completed, thus having implicit callback invocations
	during their execution.  The standard transaction functions have names
	of the form <CODE
CLASS="function"
>raw1394_start_xxx</CODE
>, the synchronous
	wrappers are called <CODE
CLASS="function"
>raw1394_xxx</CODE
>.
      </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x85.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x127.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Ports</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c62.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Handlers</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>