This file is indexed.

/usr/lib/ocaml/shout/shout.mli is in libshout-ocaml-dev 0.2.7-1build6.

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
(*
   Copyright 2003-2006 Savonet team
  
   This file is part of Ocaml-shout.
  
   Ocaml-shout is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.
  
   Ocaml-shout is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   
   You should have received a copy of the GNU General Public License
   along with Ocaml-shout; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*)
(**
  Libshout 2 bindings for OCaml.
  
  @author Samuel Mimram
*)

(* $Id: shout.mli 3589 2007-05-10 21:17:44Z smimram $ *)

(** {1 Types and exceptions.} *)

(** A shout connection. *)
type shout

(* Exceptions *)
(** Bad parameters, either nonsense or not applicable due to the current state of the connection. *)
exception Insane

(** A connection with the server could not be established. *)
exception No_connect

(** The server refused to accept a login attemp (bad user name or password?). *)
exception No_login

(** An error occured while sending or receiving data. *)
exception Socket

(** A problem occured while trying to allocate memory (no more memory left?). This exception could be raised by most of the functions. *)
exception Malloc

(** An error occured while updating the metadatas on the server. *)
exception Metadata

(** We are connected to a server. *)
exception Connected

(** We are not connected to a server. *)
exception Unconnected

(** The operation is not supported. *)
exception Unsupported

(** An error occured while sending data. *)
exception Send_error

(** Format of audio data. *)
type data_format =
  | Format_vorbis (** ogg / vorbis *)
  | Format_mp3 (** mp3 *)

(** Kind of protocol to use. *)
type protocol =
  | Protocol_http (** http *)
  | Protocol_xaudiocast (** audiocast *)
  | Protocol_icy (** shoutcast *)




(** {1 Initialization and creation functions.} *)

(** Initialize the shout library. Must be called before anything else. *)
val init : unit -> unit

(** Shut down the shout library, deallocating any global storage. Don't call anything afterwards. This function should be called after having finished to use the shout library. *)
val shutdown : unit -> unit

(** Get a version string as well as the value of the library major, minor, and patch levels, respectively. *)
val version : unit -> string * int * int * int

(** Get a string describing the last shout error to occur.  Only valid until the next call to a [Shout] function. *)
val get_error : shout -> string

(** Get the number of the last error. *)
val get_errno : shout -> int

(** Create a new [shout] value. *)
val new_shout : unit -> shout

(** Am I connected to a shoutcast server? *)
val is_connected : shout -> bool




(** {1 Setting and retrieving preliminary parameters.} *)

(** The following parameters may be set only {i before} calling [open_shout]. They might raise the [Malloc] exception or the [Connected] exception when attempting to change a connection attribute while the connection is open. *)

(** {2 Connection parameters} *)

(** Set the server's hostname or ip address (default: localhost). *)
val set_host : shout -> string -> unit

(** Retrieve the server's hostname or ip address. *)
val get_host : shout -> string

(** Set the server's port (default: 8000). *)
val set_port : shout -> int -> unit

(** Retrieve the server's port. *)
val get_port : shout -> int

(** Set the user to authenticate as (default: source). *)
val set_user : shout -> string -> unit

(** Retrieve the user to authenticate as. *)
val get_user : shout -> string

(** Set the password to authenticate the server with. *)
val set_password : shout -> string -> unit

(** Retrieve the server's password. *)
val get_password : shout -> string

(** Set the protocol to connect to the server with (default: Protocol_http). *)
val set_protocol : shout -> protocol -> unit

(** Retrieve the protocol used to connect to the server. *)
val get_protocol : shout -> protocol

(** Set the stream's audio format (default: Format_vorbis). *)
val set_format : shout -> data_format -> unit

(** Retrieve the stream's audio format. *)
val get_format : shout -> data_format

(** Set the the mountpoint (not supported by the [Protocol_icy] protocol). *)
val set_mount : shout -> string -> unit

(** Retrieve the mountpoint. *)
val get_mount : shout -> string

(** Request that your stream be archived on the server under the specified name. *)
val set_dumpfile : shout -> string -> unit

(** Retrieve the dumpfile name. *)
val get_dumpfile : shout -> string

(** Set the user agent header (default: libshout/VERSION). *)
val set_agent : shout -> string -> unit

(** Retrieve the user agent header. *)
val get_agent : shout -> string



(** {2 Directory parameters (optionnal)} *)

(** Should we ask the server to list the stream in any directories it knows about (default: [false])? *)
val set_public : shout -> bool -> unit

(** Should we ask the server to list the stream in any directories it knows about? *)
val get_public : shout -> bool

(** Set the name of the stream. *)
val set_name : shout -> string -> unit

(** Retrieve the name of the stream. *)
val get_name : shout -> string

(** Set the url of a site about this stream. *)
val set_url : shout -> string -> unit

(** Retrieve the url of a site about this stream. *)
val get_url : shout -> string

(** Set the stream genre. *)
val set_genre : shout -> string -> unit

(** Retrieve the stream genre. *)
val get_genre : shout -> string

(** Set the stream description. *)
val set_description : shout -> string -> unit

(** Retrieve the stream description. *)
val get_description : shout -> string

(** [set_audio_info shout name value] sets the stream audio parameter [name] to the value [value]. *)
val set_audio_info : shout -> string -> string -> unit

(** Retrieve a stream audio parameter. *)
val get_audio_info : shout -> string -> string



(** {2 Multicasting} *)

(** Set the ip for multicasting the stream. *)
val set_multicast_ip : shout -> string -> unit

(** Retrieve the ip for multicasting the stream. *)
val get_multicast_ip : shout -> string




(** {1 Managing the connection and sending data.} *)

(** Open a connection to the server.  All parameters must already be set.
  @raise Insane if host, port or password is unset.
  @raise Connected if the connection has already been opened.
  @raise Unsupported if the protocol / format combination is unsupported (e.g. ogg / vobis may only be sent via the http protocol).
  @raise No_connect if a connection to the server could not be established.
  @raise Socket if an error occured while talking to the server.
  @raise No_login if the server refused login (authentication failed). *)
val open_shout : shout -> unit

(** Close a connection to the server.
  @raise Unconnected if the [shout] value is not currently connected. *)
val close : shout -> unit

(** Send data to the server, parsing it for format specific timing info.
  @raise Unconnected if the [shout] value is not currently connected.
  @raise Socket if an error occured while talking to the server. *)
val send : shout -> string -> unit

(** @deprecated Send unparsed data to the server.  Do not use this unless you know what you are doing.
  @raise Unconnected if the [shout] value is not currently connected.
  @raise Socket if an error occured while talking to the server.
  @return the number of bytes written. *)
val send_raw : shout -> string -> int

(** Put caller to sleep until it is time to send more data to the server. Should be called before every call to [send] (the function [delay] could also be used to determine the amout of time the caller should wait before sendig data). *)
val sync : shout -> unit

(** Amount of time in miliseconds caller should wait before sending again. *)
val delay : shout -> int

(** Set metadata for mp3 streams.
  @raise No_connect if the server refused the connection attempt.
  @raise No_login if the server did not accept your authorization credentials.
  @raise Socket if an error occured talking to the server.
  @raise Unsupported if the format is not mp3.
  @raise Metadata if an other error happened (e.g. bad mount point). *)
val set_metadata : shout -> (string * string) array -> unit