Turn the music_pipe into a simple music_chunk queue. The music_chunk
allocation code is moved to music_buffer, and is now managed with a
linked list instead of a ring buffer. Two separate music_pipe objects
are used by the decoder for the "current" and the "next" song, which
greatly simplifies the cross-fading code.
Added music_pipe_allocate(), music_pipe_push() and
music_pipe_cancel(). Those functions allow the caller (decoder thread
in this case) to do its own chunk management. The functions
music_pipe_flush() and music_pipe_tag() can now be removed.
The lastfm input plugin enables MPD to play lastfm:// URLs. This
plugin is not complete yet: it plays only the first song in the
last.fm playlist, and the playlist parser isn't even implemented
properly.
Create the socket_util.c library, the first function is
sockaddr_to_string(): it converts a sockaddr struct to a string
containing the IP address in a human-readable form.
Renamed the old AM_CFLAGS to AM_CPPFLAGS, because it contained only
preprocessor options. Append it to src_mpd_CPPFLAGS. Removed
GLIB_LIBS from src_mpd_CPPFLAGS, because it is already part of
AM_LDFLAGS.
Recursive Makefiles are inefficient and error prone (no proper way to
declare dependencies). Since there's no disadvantage in having one
single Makefile, let's do it.
With heavy use of conditionals, I broke Makefile.am for the ancient
automake version 1.6. Instead of supporting this automake version
forever, I'm removing support for it now. Since automake isn't
required on the build machine, nobody should have a serious problem
with that.
When building with the ancient automake 1.6 version, the following
errors occur:
Makefile.am:5: invalid variable `doc_DATA'
doc/Makefile.am:2: invalid variable `doc_DATA'
This patches renames some internal variables.
* Add missing headers in Makefile.am
* remove mp4ff.dsp (Win32 crap)
* Add scripts, m4, bs, autogen.sh to allow for hotfixes by the
SCM-challenged. (downloading the source via git is NOT a
lightweight operation for everybody).
thread-safety work in preparation for rewrite to use pthreads
Expect no regressions against trunk (r7078), possibly minor
performance improvements in update (due to fewer heap
allocations), but increased stack usage.
Applied the following patches:
* maxpath_str for reentrancy (temporary fix, reverted)
* path: start working on thread-safe variants of these methods
* Re-entrancy work on path/character-set conversions
* directory.c: exploreDirectory() use reentrant functions here
* directory/update: more use of reentrant functions + cleanups
* string_toupper: a strdup-less version of strDupToUpper
* get_song_url: a static-variable-free version of getSongUrl()
* Use reentrant/thread-safe get_song_url everywhere
* replace rmp2amp with the reentrant version, rmp2amp_r
* Get rid of the non-reentrant/non-thread-safe rpp2app, too.
* buffer2array: assert strdup() returns a usable value in unit tests
* replace utf8ToFsCharset and fsCharsetToUtf8 with thread-safe variants
* fix storing playlists w/o absolute paths
* parent_path(), a reentrant version of parentPath()
* parentPath => parent_path for reentrancy and thread-safety
* allow "make test" to automatically run embedded unit tests
* remove convStrDup() and maxpath_str()
* use MPD_PATH_MAX everywhere instead of MAXPATHLEN
* path: get rid of appendSlash, pfx_path and just use pfx_dir
* get_song_url: fix the ability to play songs in the top-level music_directory
git-svn-id: https://svn.musicpd.org/mpd/trunk@7106 09075e82-0dd4-0310-85a5-a0d7c8717e4f
sparse is a semantic parser developed for the Linux kernel,
but works for any project written (ANSI) C.
You can get sparse via git here:
git clone git://www.kernel.org/pub/scm/devel/sparse/sparse.git
git-svn-id: https://svn.musicpd.org/mpd/trunk@4377 09075e82-0dd4-0310-85a5-a0d7c8717e4f