aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-02-04playlist: pass const playlist pointersMax Kellermann1-9/+6
Pass constant playlist objects to functions which do not modify it.
2009-02-04playlist: renamed global "playlist" variable to "g_playlist"Max Kellermann1-32/+66
Export the "g_playlist" variable, and pass it to all playlist functions. This way, we can split playlist.c easier into separate parts. The code which initializes the singleton variable is moved to playlist_global.c.
2009-01-25playlist: moved savePlaylist() and loadPlaylsit() to playlist_save.cMax Kellermann1-2/+0
2009-01-25stored_playlist: moved configuration variables from playlist.cMax Kellermann1-4/+0
Don't declare and export variables specific to stored playlists in playlist.c/playlist.h.
2009-01-24playlist: removed locate functions to queue_print.cMax Kellermann1-11/+0
Now playlist.c does not contain any protocol specific code anymore.
2009-01-24locate: renamed LocateTagItem to "struct locate_item"Max Kellermann1-3/+3
No CamelCase and no typedefs.
2009-01-24command: use queue_print_*()Max Kellermann1-19/+0
Replaced several wrapper functions from playlist.c, and make command.c use the queue print functions directly.
2009-01-24playlist: added playlist_get_queue()Max Kellermann1-0/+6
To allow code outside playlist.c to access the "queue" object, provide a function which returns a const pointer.
2009-01-24playlist: renamed the Playlist typedef to "struct playlist"Max Kellermann1-2/+2
No typedefs.
2009-01-24playlist: moved stopOnError and errorCount into struct playlistMax Kellermann1-0/+14
Moved the 2 remaining global variables into the playlist struct.
2009-01-23playlist: moved PlaylistInfo() to playlist_print.cMax Kellermann1-2/+0
PlaylistInfo() (notice the capital 'P') sends a stored playlist to the client. Move it to a separate library, where all the code which glues the playlist and the MPD protocol together will live.
2009-01-23playlist: pass const pointers to search functionsMax Kellermann1-4/+6
The LocateTagItem objects are not modified.
2009-01-23playlist: added source commentsMax Kellermann1-1/+4
The playlist.c source is currently quite hard to understand. I have managed to wrap my head around it, and this patch attempts to explain it to the next guy.
2009-01-23playlist: removed stopOnError flag from playPlaylist()Max Kellermann1-2/+2
All callers pass false. Don't bother to collect that parameter.
2009-01-23playlist: replaced playlist_state with flag playlist.playingMax Kellermann1-0/+6
There were only two possible states: STOP and PLAY. The code looks a lot easier if we use a bool instead. Move the variable into the playlist struct.
2009-01-23playlist: documented struct membersMax Kellermann1-0/+13
Added several comments.
2009-01-22playlist: moved code to queue.cMax Kellermann1-10/+3
Attempt to untie the playlist.c knot: moved the playlist storage code to queue.c, struct queue.
2009-01-21command: don't restart player in the "status" commandMax Kellermann1-2/+0
Don't attempt to restart the player if it was stopped, but there were still songs left on the playlist. This looks like it has been a workaround for a bug which has been fixed long time ago.
2009-01-20event_pipe: added "TAG" eventMax Kellermann1-5/+0
The "TAG" event is emitted by the player thread when the current song's tag has changed. Split this event from "PLAYLIST" and make it a separate callback, which is more efficient.
2009-01-18mapper: make the playlist directory optionalMax Kellermann1-1/+2
2009-01-10playlist: pass unsigned integers to playlistInfo()Max Kellermann1-1/+10
A song index cannot be negative. Also require the second parameter to be valid.
2009-01-10command: playlistinfo now uses a range argument rather than just a song idThomas Jansen1-1/+1
Loosely based on a patch provided by lesion in bug #1766. The playlistinfo command can now retrieve ranges of the playlist. The new argument indicates which entry is the last one that will be displayed. The number of displayed entries may be smaller than expected if the end of the playlist is reached. Previous usage: playlistinfo [start] New usage: playlistinfo [start[:end]]
2009-01-04playlist: log errors during loadPlaylist()Max Kellermann1-1/+1
Don't call command_error() if loading a song from the playlist fails. This may result in assertion failures, since command_error() may be called more than once.
2008-12-30command: don't allow adding local files on WIN32Max Kellermann1-0/+2
There are no unix sockets on WIN32, and therefore no authentication. WIN32 might have similar capabilities, but until we implement them, disable that MPD feature.
2008-11-11playlist: track song metadata changesMax Kellermann1-0/+5
When the tag of the current song changes (e.g. a new tag was sent in the stream), update the playlist, so clients pick up the new tag.
2008-10-31path: moved playlist_dir to mapper.cMax Kellermann1-1/+0
Added the function map_spl_utf8_to_fs() which replaces utf8_to_fs_playlist_path().
2008-10-31added prefix to header macrosMax Kellermann1-2/+2
"LOG_H" is a macro which is also used by ffmpeg/log.h. This is ffmpeg's fault, because short macros should be reserved for applications, but since it's always a good idea to choose prefixed macro names, even for applications, we are going to do that in MPD.
2008-10-23stored_playlist: renamed and moved spl_delete() to stored_playlist.cMax Kellermann1-2/+0
The function deletePlaylist() shouldn't be in playlist.c.
2008-10-23playlist: unsigned integersMax Kellermann1-18/+18
There are some integers which have a "magic" -1 value which means "undefined" or "nothing". All others can be converted to unsigned, since they must not contain a negative number.
2008-10-22stored_playlist: moved functions from playlist.cMax Kellermann1-4/+0
The two functions clearStoredPlaylist() and addToStoredPlaylist() don't belong into playlist.c. clearStoredPlaylist() was a wrapper for spl_clear(), and is converted into a CPP macro for now.
2008-10-15playlist: added support for adding songs not in the music databaseMax Kellermann1-0/+8
Clients which have authenticated via unix socket may add local files to the MPD playlist, provided that they own the file.
2008-10-08use the "bool" data type instead of "int"Max Kellermann1-7/+8
"bool" should be used in C99 programs for boolean values.
2008-10-08song: converted typedef Song to struct songMax Kellermann1-3/+9
Again, a data type which can be forward-declared.
2008-09-29switch to C99 types, part IIMax Kellermann1-4/+4
Do full C99 integer type conversion in all modules which were not touched by Eric's merged patch.
2008-09-29playlist: deleteASongFromPlaylist takes a const Song *Eric Wong1-1/+1
We don't change the song pointer there, either.
2008-09-07playlist: don't pass "fd" to showPlaylist(), playlistChangesPosId()Max Kellermann1-2/+2
Pass the client struct instead of the raw file descriptor.
2008-09-07playlist: pass struct client to loadPlaylist()Max Kellermann1-1/+1
The function loadPlaylist() wants to report incremental errors to the client, for this reason we cannot remove its protocol dependency right now. Instead, make it use the client struct instead of the raw file descriptor.
2008-09-07pass "struct client" to dbUtils.c, song.c, tag_print.cMax Kellermann1-6/+8
Don't pass the raw file descriptor around. This migration patch is rather large, because all of the sources have inter dependencies - we have to change all of them at the same time.
2008-09-07playlist: don't pass "fd" to storedPlaylist.c functionsMax Kellermann1-5/+3
Return an "enum playlist_result" value instead of calling commandError() in storedPlaylist.c.
2008-09-07playlist: don't pass "fd" to playlist.c functionsMax Kellermann1-19/+29
The playlist library shouldn't talk to the client if possible. Introduce the "enum playlist_result" type which the caller (i.e. command.c) may use to generate an error message.
2008-09-07playlist: showPlaylist() and shufflePlaylist() cannot failMax Kellermann1-2/+2
Make them both return void.
2008-09-07playlist: moved "repeat" and "random" value checks to command.cMax Kellermann1-2/+2
Client's input values should be validated by the command implementation, and the core libraries shouldn't talk to the client directly if possible. Thus, setPlaylistRepeatStatus() and setPlaylistRandomStatus() don't get the file descriptor, and cannot fail (return void).
2008-09-07playlist: added is_valid_playlist_name()Max Kellermann1-0/+2
The function valid_playlist_name() checks the name, but it insists on reporting an eventual error to the client. The new function is_valid_playlist_name() is more generic: it just returns a boolean, and does not care what the caller will use it for. The old function valid_playlist_name() will be removed later.
2008-09-06dbUtils, playlist, directory: pass constant pointersMax Kellermann1-8/+8
The usual bunch of const pointer conversions.
2008-08-28include cleanupMax Kellermann1-1/+1
Only include headers which are really needed.
2008-08-26playlist: eliminate unused fd parametersMax Kellermann1-4/+4
Again, remove file descriptor parameters, which are not actually used. These functions can also be converted to return void.
2008-04-12clean up CPP includesMax Kellermann1-3/+0
Try to only include headers which are really needed. We should particularly check all "headers including other headers". The long-term goal is to have a manageable, small API for plugins (decoders, output) without so many mpd internals cluttering the namespace. git-svn-id: https://svn.musicpd.org/mpd/trunk@7319 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-04-12Fix a few more warnings from -WshadowEric Wong1-2/+2
git-svn-id: https://svn.musicpd.org/mpd/trunk@7300 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-26Revert the queue implementation and commandsEric Wong1-15/+0
It's too ugly and broken (both technically and usability-wise) to be worth supporting in any stable release. In one sentence: The queue is a very crippled version of the playlist that takes precedence over the normal playlist. How is it crippled? * The "queueid" command only allows the queuing of songs ALREADY IN THE PLAYLIST! This promotes having the entire mpd database of songs in the playlist, which is a stupid practice to begin with. * It doesn't allow for meaningful rearranging and movement of songs within the queue. To move a song, you'd need to dequeue and requeue it (and other songs on the list). Why? The playlist already allows _all_ these features and shows everything a client needs to know about the ordering of songs in a _single_ command! * Random was a stupid idea to begin with and unfortunately we're stuck supporting it since we've always had it. Users should learn to use "shuffle" instead and not look at their playlists. Implementing queue because we have the problem of random is just a bandage fix and digging ourselves a new hole. This protocol addition was never in a stable release of mpd, so reverting it will only break things for people following trunk; which I'm not too worried about. I am however worried about long-term support of this misfeature, so I'm removing it. Additionally, there are other points: * It's trivially DoS-able: (while true; do echo queueid $song_id; done) | nc $MPD_HOST $MPD_PORT The above commands would cause the queue to become infinitely expanding, taking up all available memory in the system. The mpd playlist was implemented as an array with a fixed (but configurable) size limit for this reason. * It's not backwards-compatible. All clients would require upgrades (and additional complexity) to even know what the next song in the playlist is. mpd is a shared architecture, and we should not violate the principle of least astonishment here. This removes the following commands: queueid, dequeue, queueinfo Additionally, the status field of "playlistqueue: " is removed from the status command. While this DoS is trivial to fix, the design is simply too broken to ever support in a real release. The overloading of the "addid" command and the allowing of negative numbers to be used as offsets is far more flexible. This improved "addid" is completely backwards-compatible with all clients, and does not require clients to have UI changes or run additional commands to display the queue. git-svn-id: https://svn.musicpd.org/mpd/trunk@7155 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-26storedPlaylist: prevent potential DoS from stored playlist commandsEric Wong1-0/+2
While mpd has always protected against the infinite expansion of the main playlist by limiting its size in memory, however the new storedPlaylist code has never checked for this limit. Malicious (or clumsy) users could repeatedly append songs to stored playlists, causing files to grow increasingly large on disk. Attempting to load extremely large files into memory will require mpd to slurp that all into memory, and ultimately the file would be unusable by mpd because of the configurable playlist size limit. Now we limit stored playlists to the max_playlist_length configuration variable set by the user (default is 16384). We will refuse to append to playlist files if they hit that limit; and also refuse to load more than the specified amount of songs into memory. git-svn-id: https://svn.musicpd.org/mpd/trunk@7154 09075e82-0dd4-0310-85a5-a0d7c8717e4f