vlc/doc/browsing.txt

39 lines
1.7 KiB
Plaintext

= Directory-like browsing modules
== Access modules
Directory-like browsing is done in access modules providing a pf_readdir
callback. The pf_readdir callback has a specified prototype and must
match a specific expected behavior:
=== pf_readdir prototype
int (*pf_readdir)( stream_t *p_access, input_item_node_t *p_node );
* p_access: This is a pointer to the stream_t object that you are
calling pf_readdir on. It CANNOT be NULL.
* p_node: A pointer on an input_item_node_t that you must provide and be
responsible for. In particular, you have the responsibility to free it
in case of error. Upon successful completion of this function, the
node SHOULD contain all the items present in the directory-like object
that the access was created for (psz_location field). It CANNOT be
NULL.
=== pf_readdir return values and behavior
A call to pf_readdir has 3 possible results:
* The call was successful and the node has been filled with all the
input_item_t possible depending on system state and module options. In this
case, pf_readdir MUST return VLC_SUCCESS and info.b_eof MUST be set to true.
This callback must NOT be called again.
* An unrecoverable error has occurred and no input_item_t was added to the node.
The callback returns a VLC_ENOENT error code, and sets info.b_eof to true.
This error SHOULD be propagated by the calling code (stream/demux/...)
This callback must NOT be called again.
* A recoverable error has occurred. The callback MUST return an error code
that is not VLC_SUCCESS or VLC_ENOENT (e.g. VLC_EGENERIC, VLC_ENOMEM, ...).
Some input_item_t objects might have been added to the node; they are
owned by the node which is owned by the access. This callback CAN be
called again.