diff --git a/NEWS b/NEWS index 5dee60534..46ee9dbb1 100644 --- a/NEWS +++ b/NEWS @@ -20,7 +20,17 @@ ver 0.18 (2012/??/??) * improved decoder/output error reporting * eliminate timer wakeup on idle MPD -ver 0.17.4 (2013/??/??) +ver 0.17.5 (2013/08/04) +* protocol: + - fix "playlistadd" with URI + - fix "move" relative to current when there is no current song +* decoder: + - ffmpeg: support "application/flv" + - mikmod: adapt to libmikmod 3.2 +* configure.ac: + - detect system "ar" + +ver 0.17.4 (2013/04/08) * protocol: - allow to omit END in ranges (START:END) - don't emit IDLE_PLAYER before audio format is known diff --git a/configure.ac b/configure.ac index f6b6868ac..2816a2b48 100644 --- a/configure.ac +++ b/configure.ac @@ -23,6 +23,11 @@ AC_PROG_CC_C99 AC_PROG_CXX AC_PROG_RANLIB +AN_MAKEVAR([AR], [AC_PROG_AR]) +AN_PROGRAM([ar], [AC_PROG_AR]) +AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)]) +AC_PROG_AR + AC_PROG_INSTALL AC_PROG_MAKE_SET PKG_PROG_PKG_CONFIG diff --git a/doc/mpd.conf.5 b/doc/mpd.conf.5 index 59d5e623a..62f5565e1 100644 --- a/doc/mpd.conf.5 +++ b/doc/mpd.conf.5 @@ -29,29 +29,18 @@ See \fBdocs/mpdconf.example\fP in the source tarball for an example configuration file. .SH REQUIRED PARAMETERS .TP -.B follow_outside_symlinks -Control if MPD will follow symbolic links pointing outside the music dir. -You must recreate the database after changing this option. -The default is "yes". -.TP -.B follow_inside_symlinks -Control if MPD will follow symbolic links pointing inside the music dir, -potentially adding duplicates to the database. -You must recreate the database after changing this option. -The default is "yes". -.TP .B db_file This specifies where the db file will be stored. .TP -.B sticker_file -The location of the sticker database. This is a database which -manages dynamic information attached to songs. -.TP .B log_file This specifies where the log file should be located. The special value "syslog" makes MPD use the local syslog daemon. .SH OPTIONAL PARAMETERS .TP +.B sticker_file +The location of the sticker database. This is a database which +manages dynamic information attached to songs. +.TP .B pid_file This specifies the file to save mpd's process ID in. .TP @@ -99,6 +88,17 @@ reports from what address a connection is opened, and when it is closed, and "verbose" records excessive amounts of information for debugging purposes. The default is "default". .TP +.B follow_outside_symlinks +Control if MPD will follow symbolic links pointing outside the music dir. +You must recreate the database after changing this option. +The default is "yes". +.TP +.B follow_inside_symlinks +Control if MPD will follow symbolic links pointing inside the music dir, +potentially adding duplicates to the database. +You must recreate the database after changing this option. +The default is "yes". +.TP .B zeroconf_enabled If yes, and MPD has been compiled with support for Avahi or Bonjour, service information will be published with Zeroconf. The default is yes. diff --git a/src/PlaylistCommands.cxx b/src/PlaylistCommands.cxx index e3b5ad5f8..d68a30ba7 100644 --- a/src/PlaylistCommands.cxx +++ b/src/PlaylistCommands.cxx @@ -193,7 +193,7 @@ handle_playlistadd(Client *client, G_GNUC_UNUSED int argc, char *argv[]) return COMMAND_RETURN_ERROR; } - success = spl_append_uri(argv[1], playlist, &error); + success = spl_append_uri(uri, playlist, &error); } else success = search_add_to_playlist(uri, playlist, nullptr, &error); diff --git a/src/PlaylistEdit.cxx b/src/PlaylistEdit.cxx index e3d3eac25..0d46f66aa 100644 --- a/src/PlaylistEdit.cxx +++ b/src/PlaylistEdit.cxx @@ -342,7 +342,12 @@ playlist::MoveRange(player_control &pc, unsigned start, unsigned end, int to) * (-playlist.length == to) => move to position BEFORE current song */ const int currentSong = GetCurrentPosition(); - if (to < 0 && currentSong >= 0) { + if (to < 0) { + if (currentSong < 0) + /* can't move relative to current song, + because there is no current song */ + return PLAYLIST_RESULT_BAD_RANGE; + if (start <= (unsigned)currentSong && (unsigned)currentSong < end) /* no-op, can't be moved to offset of itself */ return PLAYLIST_RESULT_SUCCESS; diff --git a/src/SongUpdate.cxx b/src/SongUpdate.cxx index 9c4d44227..f08e0c20a 100644 --- a/src/SongUpdate.cxx +++ b/src/SongUpdate.cxx @@ -173,7 +173,7 @@ Song::UpdateFileInArchive() if (suffix == NULL) return false; - plugin = decoder_plugin_from_suffix(suffix, nullptr); + plugin = decoder_plugin_from_suffix(suffix, NULL); if (plugin == NULL) return false; diff --git a/src/decoder/FfmpegDecoderPlugin.cxx b/src/decoder/FfmpegDecoderPlugin.cxx index f42fc36a3..89e57c874 100644 --- a/src/decoder/FfmpegDecoderPlugin.cxx +++ b/src/decoder/FfmpegDecoderPlugin.cxx @@ -586,6 +586,7 @@ static const char *const ffmpeg_suffixes[] = { }; static const char *const ffmpeg_mime_types[] = { + "application/flv", "application/m4a", "application/mp4", "application/octet-stream", diff --git a/src/decoder/MikmodDecoderPlugin.cxx b/src/decoder/MikmodDecoderPlugin.cxx index b7d113265..f9896ef98 100644 --- a/src/decoder/MikmodDecoderPlugin.cxx +++ b/src/decoder/MikmodDecoderPlugin.cxx @@ -199,7 +199,11 @@ mikmod_decoder_scan_file(const char *path_fs, if (title != nullptr) { tag_handler_invoke_tag(handler, handler_ctx, TAG_TITLE, title); +#if (LIBMIKMOD_VERSION >= 0x030200) + MikMod_free(title); +#else free(title); +#endif } return true;