Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | protocol/ArgParser: add struct RangeArg | Max Kellermann | 2015-08-11 | 3 | -31/+32 |
| | |||||
* | command/{Queue,Other}: eliminate local "bool" variable | Max Kellermann | 2015-08-11 | 3 | -13/+6 |
| | |||||
* | PlaylistSave: return bool/Error instead of PlaylistResult | Max Kellermann | 2015-03-24 | 1 | -2/+4 |
| | |||||
* | *: change C-style prototypes, drop "(void)" | Max Kellermann | 2015-03-03 | 2 | -4/+8 |
| | |||||
* | FileCommands: use Path::HasNewline() | Max Kellermann | 2015-03-03 | 1 | -3/+3 |
| | |||||
* | StorageCommands: use PathTraitsUTF8 for protocol argument | Max Kellermann | 2015-03-02 | 1 | -1/+1 |
| | |||||
* | FileCommands: use PathTraitsFS typedefs | Max Kellermann | 2015-02-28 | 1 | -2/+2 |
| | |||||
* | fs/FileInfo: new library providing GetFileInfo() | Max Kellermann | 2015-02-28 | 1 | -7/+7 |
| | | | | Replaces StatFile(), with a portable data object. | ||||
* | FileCommands: skip special files completely | Max Kellermann | 2015-02-28 | 1 | -0/+2 |
| | | | | | Previously, MPD printed the time stamp without printing the file name. That made no sense. | ||||
* | storage/FileInfo: rename to StorageFileInfo | Max Kellermann | 2015-02-28 | 1 | -4/+4 |
| | |||||
* | command/{Queue,File}Commands: drop "file:///" prefix for absolute paths | Max Kellermann | 2015-02-09 | 2 | -13/+15 |
| | | | | | | | | | | | | Requiring this prefix makes the client's intention very clear, but it was too hard to understand why this prefix was needed. Initially, my intention was to differentiate from broken clients which prefix relate URIs with a slash; once MPD allowed that. In the past few years however, MPD has disallowed that, and there was no significant breakage (except for the "add /" special case which some clients apparently still do). So I figure it's about time to define that an URI that begins with a slash points to an arbitrary file on the file system. | ||||
* | StickerDatabase: convert the struct name to upper case | Max Kellermann | 2015-01-28 | 1 | -1/+1 |
| | |||||
* | Copyright year 2015 | Max Kellermann | 2015-01-01 | 31 | -31/+31 |
| | |||||
* | sticker/Match: add inequality operators | Max Kellermann | 2014-12-12 | 1 | -0/+4 |
| | |||||
* | sticker/Match: add operator "EQUALS" | Max Kellermann | 2014-12-12 | 1 | -1/+17 |
| | | | | | Mapped to "=" in the MPD protocol. This is the first operator, initially supporting value matches in the MPD protocol. | ||||
* | sticker/Song: add enum StickerOperator to sticker_song_find() | Max Kellermann | 2014-12-12 | 1 | -0/+4 |
| | |||||
* | sticker/Database: use the Error library | Max Kellermann | 2014-12-12 | 1 | -7/+23 |
| | |||||
* | AllCommands: use ARRAY_SIZE() | Max Kellermann | 2014-12-09 | 1 | -1/+2 |
| | |||||
* | command: use ConstBuffer<const char *> for argument list | Max Kellermann | 2014-12-08 | 25 | -420/+417 |
| | |||||
* | AllCommands: simplify the tokenizer loop | Max Kellermann | 2014-12-08 | 1 | -17/+19 |
| | |||||
* | AllCommands: assign current_command early | Max Kellermann | 2014-12-08 | 1 | -5/+4 |
| | |||||
* | AllCommands: remove redundant initializer | Max Kellermann | 2014-12-08 | 1 | -1/+1 |
| | |||||
* | AllCommands: make variables more local | Max Kellermann | 2014-12-06 | 1 | -16/+13 |
| | |||||
* | AllCommands: make the commands array "constexpr" | Max Kellermann | 2014-12-06 | 1 | -1/+1 |
| | |||||
* | {Tag,Song}Print, PlayerCommands: report song duration with milliseconds ↵ | Max Kellermann | 2014-11-25 | 1 | -0/+4 |
| | | | | precision | ||||
* | Merge tag 'v0.19.4' | Max Kellermann | 2014-11-18 | 1 | -1/+10 |
|\ | |||||
| * | QueueCommands: workaround for buggy clients that send "add /" | Max Kellermann | 2014-11-18 | 1 | -1/+10 |
| | | |||||
* | | DatabaseCommands: add "window" parameter to "search"/"find" | Max Kellermann | 2014-11-18 | 1 | -1/+13 |
| | | |||||
* | | AllCommands: "commands" returns playlist commands only if playlist_directory ↵ | Max Kellermann | 2014-10-25 | 3 | -0/+23 |
|/ | | | | configured | ||||
* | StoragePlugin: pass EventLoop to constructor | Max Kellermann | 2014-10-09 | 1 | -2/+4 |
| | |||||
* | storage/Interface: include cleanup | Max Kellermann | 2014-10-01 | 1 | -0/+1 |
| | |||||
* | Merge branch 'v0.18.x' | Max Kellermann | 2014-09-24 | 1 | -0/+1 |
|\ | |||||
| * | command/list: reset used size after the list has been processed | Andrzej Rybczak | 2014-09-18 | 1 | -0/+1 |
| | | |||||
* | | PlayerThread: use SongTime for elapsed_time | Max Kellermann | 2014-08-29 | 1 | -2/+2 |
| | | |||||
* | | PlayerControl: use SignedSongTime for the song duration | Max Kellermann | 2014-08-29 | 1 | -1/+3 |
| | | |||||
* | | PlaylistEdit: pass std::chrono::duration to SetSongIdRange() | Max Kellermann | 2014-08-28 | 1 | -11/+11 |
| | | |||||
* | | Playlist: use std::chrono::duration for Seek*() | Max Kellermann | 2014-08-28 | 1 | -6/+8 |
| | | |||||
* | | AllCommands: close connection after syntax error | Max Kellermann | 2014-08-12 | 1 | -1/+3 |
| | | | | | | | | Stop HTTP clients from exploiting MPD via forged POST requests. | ||||
* | | db/Interface: add virtual method Update() | Max Kellermann | 2014-07-29 | 1 | -0/+24 |
| | | | | | | | | For database plugins that don't use the UpdateService. | ||||
* | | OtherCommands: split handle_update() | Max Kellermann | 2014-07-29 | 1 | -16/+22 |
| | | |||||
* | | QueueCommands: new command "rangeid" | Max Kellermann | 2014-07-12 | 3 | -0/+58 |
| | | | | | | | | Manipulates the playback range of a queued song. | ||||
* | | Merge branch 'v0.18.x' | Max Kellermann | 2014-07-11 | 3 | -0/+9 |
|\| | |||||
| * | PlaylistEdit: postpone UpdateQueuedSong() when adding multiple songs | Max Kellermann | 2014-07-11 | 3 | -0/+9 |
| | | | | | | | | | | | | | | | | | | | | Implement a "bulk" edit mode that postpones both UpdateQueuedSong() and OnModified(). This way, the playlist version gets incremented only once. More importantly: when adding multiple songs to a queue that consists of only one song, the first song that got added will always be played next. By postponing this choice, all newly added songs get a chance to become the next song. Fixes the second (and last) part of Mantis ticket 0004005. | ||||
| * | QueueCommands: make "result" more local | Max Kellermann | 2014-07-11 | 1 | -3/+2 |
| | | |||||
* | | command: make argc unsigned | Max Kellermann | 2014-06-16 | 25 | -206/+205 |
| | | |||||
* | | ClientList: use class boost::intrusive::list | Max Kellermann | 2014-06-11 | 1 | -4/+4 |
| | | | | | | | | Eliminate extra allocations for the std::list node instances. | ||||
* | | PlaylistCommands: remove redundant playlist_load_spl() call | Max Kellermann | 2014-05-10 | 1 | -17/+1 |
| | | | | | | | | | | This case is handled already by playlist_open_in_playlist_dir() (via playlist_mapper_open()). And the call didn't work anyway. | ||||
* | | db/Count: implement grouping | Max Kellermann | 2014-04-27 | 1 | -2/+16 |
| | | |||||
* | | DatabasePrint: move PrintSongCount() to Count.cxx | Max Kellermann | 2014-04-26 | 1 | -0/+1 |
| | | |||||
* | | DatabasePrint: refactor variable/function names | Max Kellermann | 2014-04-25 | 1 | -2/+2 |
| | |