This file is indexed.

/usr/include/audacious/playlist-api.h is in audacious-dev 3.4.3-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
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
/*
 * playlist-api.h
 * Copyright 2010-2012 John Lindgren
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions, and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions, and the following disclaimer in the documentation
 *    provided with the distribution.
 *
 * This software is provided "as is" and without any warranty, express or
 * implied. In no event shall the authors be liable for any damages arising from
 * the use of this software.
 */

/* Do not include this file directly; use playlist.h instead. */

/* Any functions in this API with a return type of (char *) return pooled
 * strings that must not be modified and must be released with str_unref() when
 * no longer needed. */

/* --- PLAYLIST CORE API --- */

/* Returns the number of playlists currently open.  There will always be at
 * least one playlist open.  The playlists are numbered starting from zero. */
AUD_FUNC0 (int, playlist_count)

/* Adds a new playlist before the one numbered <at>.  If <at> is -1 or equal to
 * the number of playlists, adds a new playlist after the last one. */
AUD_VFUNC1 (playlist_insert, int, at)

/* Moves a contiguous block of <count> playlists starting with the one numbered
 * <from> such that that playlist ends up at the position <to>. */
AUD_VFUNC3 (playlist_reorder, int, from, int, to, int, count)

/* Closes a playlist.  CAUTION: The playlist is not saved, and no confirmation
 * is presented to the user.  If <playlist> is the only playlist, a new playlist
 * is added.  If <playlist> is the active playlist, another playlist is marked
 * active.  If <playlist> is the currently playing playlist, playback is
 * stopped. */
AUD_VFUNC1 (playlist_delete, int, playlist)

/* Returns a unique non-negative integer which can be used to identify a given
 * playlist even if its numbering changes (as when playlists are reordered).
 * On error, returns -1. */
AUD_FUNC1 (int, playlist_get_unique_id, int, playlist)

/* Returns the number of the playlist identified by a given integer ID as
 * returned by playlist_get_unique_id().  If the playlist no longer exists,
 * returns -1. */
AUD_FUNC1 (int, playlist_by_unique_id, int, id)

/* Sets the filename associated with a playlist.  (Audacious currently makes no
 * use of the filename.) */
AUD_VFUNC2 (playlist_set_filename, int, playlist, const char *, filename)

/* Returns the filename associated with a playlist. */
AUD_FUNC1 (char *, playlist_get_filename, int, playlist)

/* Sets the title associated with a playlist. */
AUD_VFUNC2 (playlist_set_title, int, playlist, const char *, title)

/* Returns the title associated with a playlist. */
AUD_FUNC1 (char *, playlist_get_title, int, playlist)

/* Sets the active playlist.  This is the playlist that user interfaces will
 * show to the user. */
AUD_VFUNC1 (playlist_set_active, int, playlist)

/* Returns the number of the active playlist. */
AUD_FUNC0 (int, playlist_get_active)

/* Sets the currently playing playlist.  Starts playback, resuming from the
 * position last played if possible.  If <playlist> is -1 or if the requested
 * playlist is empty, stops playback. */
AUD_VFUNC1 (playlist_set_playing, int, playlist)

/* Returns the number of the currently playing playlist.  If no playlist is
 * playing, returns -1. */
AUD_FUNC0 (int, playlist_get_playing)

/* Returns the number of a "blank" playlist.  The active playlist is returned if
 * it has the default title and has no entries; otherwise, a new playlist is
 * added and returned. */
AUD_FUNC0 (int, playlist_get_blank)

/* Returns the number of the "temporary" playlist (which is no different from
 * any other playlist except in name).  If the playlist does not exist, a
 * "blank" playlist is obtained from playlist_get_blank() and is renamed to
 * become the temporary playlist. */
AUD_FUNC0 (int, playlist_get_temporary)

/* Returns the number of entries in a playlist.  The entries are numbered
 * starting from zero. */
AUD_FUNC1 (int, playlist_entry_count, int, playlist)

/* Adds a song file, playlist file, or folder to a playlist before the entry
 * numbered <at>.  If <at> is negative or equal to the number of entries, the
 * item is added after the last entry.  <tuple> may be NULL, in which case
 * Audacious will attempt to read metadata from the song file.  The caller gives
 * up one reference count to <tuple>.  If <play> is nonzero, Audacious will
 * begin playback of the items once they have been added.
 *
 * Because adding items to the playlist can be a slow process, this function may
 * return before the process is complete.  Hence, the caller must not assume
 * that there will be new entries in the playlist immediately. */
AUD_VFUNC5 (playlist_entry_insert, int, playlist, int, at, const char *,
 filename, Tuple *, tuple, bool_t, play)

/* Similar to playlist_entry_insert, adds multiple song files, playlist files,
 * or folders to a playlist.  The filenames, stored as (char *) in an index
 * (see libaudcore/index.h), must be pooled with str_get(); the caller gives up
 * one reference count to each filename.  Tuples are likewise stored as
 * (Tuple *) in an index of the same length; the caller gives up one reference
 * count to each tuple.  <tuples> may be NULL, or individual pointers within it
 * may be NULL.  Finally, the caller also gives up ownership of the indexes
 * themselves and should not access them after the call.   */
AUD_VFUNC5 (playlist_entry_insert_batch, int, playlist, int, at,
 Index *, filenames, Index *, tuples, bool_t, play)

/* Similar to playlist_entry_insert_batch, but allows the caller to prevent some
 * items from being added by returning false from the <filter> callback.  Useful
 * for searching a folder and adding only new files to the playlist.  <user> is
 * an untyped pointer passed to the <filter> callback. */
AUD_VFUNC7 (playlist_entry_insert_filtered, int, playlist, int, at,
 Index *, filenames, Index *, tuples, PlaylistFilterFunc, filter,
 void *, user, bool_t, play)

/* Removes a contiguous block of <number> entries starting from the one numbered
 * <at> from a playlist.  If necessary, the playback position is moved elsewhere
 * in the playlist and playback is restarted (or stopped). */
AUD_VFUNC3 (playlist_entry_delete, int, playlist, int, at, int, number)

/* Returns the filename of an entry. */
AUD_FUNC2 (char *, playlist_entry_get_filename, int, playlist, int, entry)

/* Returns a handle to the decoder plugin associated with an entry, or NULL if
 * none can be found.  If <fast> is nonzero, returns NULL if no decoder plugin
 * has yet been found. */
AUD_FUNC3 (PluginHandle *, playlist_entry_get_decoder, int, playlist, int,
 entry, bool_t, fast)

/* Returns the tuple associated with an entry, or NULL if one is not available.
 * The reference count of the tuple is incremented.  If <fast> is nonzero,
 * returns NULL if metadata for the entry has not yet been read from the song
 * file. */
AUD_FUNC3 (Tuple *, playlist_entry_get_tuple, int, playlist, int, entry,
 bool_t, fast)

/* Returns a formatted title string for an entry.  This may include information
 * such as the filename, song title, and/or artist.  If <fast> is nonzero,
 * returns a "best guess" based on the entry's filename if metadata for the
 * entry has not yet been read. */
AUD_FUNC3 (char *, playlist_entry_get_title, int, playlist, int, entry,
 bool_t, fast)

/* Returns three strings (title, artist, and album) describing an entry.  The
 * strings are pooled, and the usual cautions apply.  If <fast> is nonzero,
 * returns a "best guess" based on the entry's filename if metadata for the
 * entry has not yet been read.  The caller may pass NULL for any values that
 * are not needed; NULL may also be returned for any values that are not
 * available. */
AUD_VFUNC6 (playlist_entry_describe, int, playlist, int, entry,
 char * *, title, char * *, artist, char * *, album, bool_t, fast)

/* Returns the length in milliseconds of an entry, or -1 if the length is not
 * known.  <fast> is as in playlist_entry_get_tuple(). */
AUD_FUNC3 (int, playlist_entry_get_length, int, playlist, int, entry,
 bool_t, fast)

/* Moves the playback position to the beginning of the entry at <position>.  If
 * <position> is -1, unsets the playback position.  If <playlist> is the
 * currently playing playlist, playback is restarted (or stopped). */
AUD_VFUNC2 (playlist_set_position, int, playlist, int, position)

/* Returns the playback position, or -1 if it is not set.  Note that the
 * position may be set even if <playlist> is not currently playing. */
AUD_FUNC1 (int, playlist_get_position, int, playlist)

/* Sets whether an entry is selected. */
AUD_VFUNC3 (playlist_entry_set_selected, int, playlist, int, entry,
 bool_t, selected)

/* Returns whether an entry is selected. */
AUD_FUNC2 (bool_t, playlist_entry_get_selected, int, playlist, int, entry)

/* Returns the number of selected entries in a playlist. */
AUD_FUNC1 (int, playlist_selected_count, int, playlist)

/* Selects all (or none) of the entries in a playlist. */
AUD_VFUNC2 (playlist_select_all, int, playlist, bool_t, selected)

/* Moves a selected entry within a playlist by an offset of <distance> entries.
 * Other selected entries are gathered around it.  Returns the offset by which
 * the entry was actually moved, which may be less in absolute value than the
 * requested offset. */
AUD_FUNC3 (int, playlist_shift, int, playlist, int, position, int, distance)

/* Removes the selected entries from a playlist.  If necessary, the playback
 * position is moved elsewhere in the playlist and playback is restarted (or
 * stopped). */
AUD_VFUNC1 (playlist_delete_selected, int, playlist)

/* Sorts the entries in a playlist based on filename.  The callback function
 * should return negative if the first filename comes before the second,
 * positive if it comes after, or zero if the two are indistinguishable. */
AUD_VFUNC2 (playlist_sort_by_filename, int, playlist,
 PlaylistStringCompareFunc, compare)

/* Sorts the entries in a playlist based on tuple.  May fail if metadata
 * scanning is still in progress (or has been disabled). */
AUD_VFUNC2 (playlist_sort_by_tuple, int, playlist,
 PlaylistTupleCompareFunc, compare)

/* Sorts the entries in a playlist based on formatted title string.  May fail if
 * metadata scanning is still in progress (or has been disabled). */
AUD_VFUNC2 (playlist_sort_by_title, int, playlist,
 PlaylistStringCompareFunc, compare)

/* Sorts only the selected entries in a playlist based on filename. */
AUD_VFUNC2 (playlist_sort_selected_by_filename, int, playlist,
 PlaylistStringCompareFunc, compare)

/* Sorts only the selected entries in a playlist based on tuple.  May fail if
 * metadata scanning is still in progress (or has been disabled). */
AUD_VFUNC2 (playlist_sort_selected_by_tuple, int, playlist,
 PlaylistTupleCompareFunc, compare)

/* Sorts only the selected entries in a playlist based on formatted title
 * string.  May fail if metadata scanning is still in progress (or has been
 * disabled). */
AUD_VFUNC2 (playlist_sort_selected_by_title, int, playlist,
 PlaylistStringCompareFunc, compare)

/* Reverses the order of the entries in a playlist. */
AUD_VFUNC1 (playlist_reverse, int, playlist)

/* Reorders the entries in a playlist randomly. */
AUD_VFUNC1 (playlist_randomize, int, playlist)

/* Discards the metadata stored for all the entries in a playlist and starts
 * reading it afresh from the song files in the background. */
AUD_VFUNC1 (playlist_rescan, int, playlist)

/* Like playlist_rescan, but applies only to the selected entries in a playlist. */
AUD_VFUNC1 (playlist_rescan_selected, int, playlist)

/* Discards the metadata stored for all the entries that refer to a particular
 * song file, in whatever playlist they appear, and starts reading it afresh
 * from that file in the background. */
AUD_VFUNC1 (playlist_rescan_file, const char *, filename)

/* Calculates the total length in milliseconds of all the entries in a playlist.
 * Only takes into account entries for which metadata has already been read. */
AUD_FUNC1 (int64_t, playlist_get_total_length, int, playlist)

/* Calculates the total length in milliseconds of only the selected entries in a
 * playlist.  Only takes into account entries for which metadata has already
 * been read. */
AUD_FUNC1 (int64_t, playlist_get_selected_length, int, playlist)

/* Returns the number of entries in a playlist queue.  The entries are numbered
 * starting from zero, lower numbers being played first. */
AUD_FUNC1 (int, playlist_queue_count, int, playlist)

/* Adds an entry to a playlist's queue before the entry numbered <at> in the
 * queue.  If <at> is negative or equal to the number of entries in the queue,
 * adds the entry after the last one in the queue.  The same entry cannot be
 * added to the queue more than once. */
AUD_VFUNC3 (playlist_queue_insert, int, playlist, int, at, int, entry)

/* Adds the selected entries in a playlist to the queue, if they are not already
 * in it. */
AUD_VFUNC2 (playlist_queue_insert_selected, int, playlist, int, at)

/* Returns the position in the playlist of the entry at a given position in the
 * queue. */
AUD_FUNC2 (int, playlist_queue_get_entry, int, playlist, int, at)

/* Returns the position in the queue of the entry at a given position in the
 * playlist.  If it is not in the queue, returns -1. */
AUD_FUNC2 (int, playlist_queue_find_entry, int, playlist, int, entry)

/* Removes a contiguous block of <number> entries starting with the one numbered
 * <at> from the queue. */
AUD_VFUNC3 (playlist_queue_delete, int, playlist, int, at, int, number)

/* Removes the selected entries in a playlist from the queue, if they are in it. */
AUD_VFUNC1 (playlist_queue_delete_selected, int, playlist)

/* Returns nonzero if a "playlist update" hook call is pending.  If called from
 * within the hook, the current hook call is not considered pending. */
AUD_FUNC0 (bool_t, playlist_update_pending)

/* May be called within the "playlist update" hook to determine the update level
 * and number of entries changed in a playlist.  Returns the update level for
 * the playlist, storing the number of the first entry changed in <at> and the
 * number of contiguous entries to be updated in <count>.  Note that entries may
 * have been added or removed within this range.  If no entries in the playlist
 * have changed, returns zero. */
AUD_FUNC3 (int, playlist_updated_range, int, playlist, int *, at, int *, count)

/* Returns nonzero if entries are being added to a playlist in the background.
 * If <playlist> is -1, checks all playlists. */
AUD_FUNC1 (bool_t, playlist_add_in_progress, int, playlist)

/* Returns nonzero if entries in a playlist are being scanned for metadata in
 * the background.  If <playlist> is -1, checks all playlists. */
AUD_FUNC1 (bool_t, playlist_scan_in_progress, int, playlist)

/* --- PLAYLIST UTILITY API --- */

/* Sorts the entries in a playlist according to one of the schemes listed in
 * playlist.h. */
AUD_VFUNC2 (playlist_sort_by_scheme, int, playlist, int, scheme)

/* Sorts only the selected entries in a playlist according to one of those
 * schemes. */
AUD_VFUNC2 (playlist_sort_selected_by_scheme, int, playlist, int, scheme)

/* Removes duplicate entries in a playlist according to one of those schemes.
 * As currently implemented, first sorts the playlist. */
AUD_VFUNC2 (playlist_remove_duplicates_by_scheme, int, playlist, int,
 scheme)

/* Removes all entries referring to unavailable files in a playlist.  ("Remove
 * failed" is something of a misnomer for the current behavior.)  As currently
 * implemented, only works for file:// URIs. */
AUD_VFUNC1 (playlist_remove_failed, int, playlist)

/* Selects all the entries in a playlist that match regular expressions stored
 * in the fields of a tuple.  Does not free the memory used by the tuple.
 * Example: To select all the songs whose title starts with the letter "A",
 * create a blank tuple and set its title field to "^A". */
AUD_VFUNC2 (playlist_select_by_patterns, int, playlist, const Tuple *,
 patterns)

/* Returns nonzero if <filename> refers to a playlist file. */
AUD_FUNC1 (bool_t, filename_is_playlist, const char *, filename)

/* Saves the entries in a playlist to a playlist file.  The format of the file
 * is determined from the file extension.  Returns nonzero on success. */
AUD_FUNC2 (bool_t, playlist_save, int, playlist, const char *, filename)

/* added in Audacious 3.4 */

/* Reverses the order of the selected entries in a playlist. */
AUD_VFUNC1 (playlist_reverse_selected, int, playlist)

/* Reorders the selected entries in a playlist randomly. */
AUD_VFUNC1 (playlist_randomize_selected, int, playlist)

/* Sets the entry which has keyboard focus (-1 means no entry). */
AUD_VFUNC2 (playlist_set_focus, int, playlist_num, int, entry_num)

/* Gets the entry which has keyboard focus (-1 means no entry). */
AUD_FUNC1 (int, playlist_get_focus, int, playlist_num)