| Commit message (Collapse) | Author | Files | Lines |
|
|
|
Use _scan() instead, to have more control.
|
|
Pass a callback table to scan_file() and scan_stream(), instead of
returning a tag object.
|
|
Add GMutex, GCond attributes which will be used by callers to
conditionally wait on the stream.
Remove the (now-useless) plugin method buffer(), wait on GCond
instead. Lock the input_stream before each method call. Do the same
with the playlist plugins.
|
|
These fixes were mostly generated with `codespell' [0] and manually
reviewed.
[0] http://git.profusion.mobi/cgit.cgi/lucas/codespell/
|
|
|
|
Major API redesign: don't let the caller allocate the input_stream
object. Let each input plugin allocate its own (derived/extended)
input_stream pointer. The "data" attribute can now be removed, and
all input plugins simply cast the input_stream pointer to their own
structure (with an "struct input_stream base" as the first attribute).
|
|
|
|
This is like tag_dup(), but works with an input_stream object instead
of a file path.
|
|
Minor code simplification.
|
|
All sources which might work with large files must include config.h,
to get Large File Support on 32 bit platforms.
|
|
Remove the static integer hack, that's not thread safe and sucks.
|
|
Try to be as portable as possible, use GLib path name functions and
macros.
|
|
|
|
Moved all the code which depends on the decoder plugins to a separate
source. That allows leaner test programs.
|
|
|
|
|
|
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
|
|
|
|
"ls" is a bad name for a library which parses URIs. We'll move the
rest of the "ls" library later.
|
|
The decoder_plugin struct is used by both the MPD core and the decoder
plugin implementations. Move it to a shared header file, to minimize
header dependencies.
|
|
Removed unused includes.
|
|
If a song is not within the music directory ("file:///..."), it has no
"parent directory". The archive code nonetheless dereferences the
parent pointer, causing a segmentation fault. Check parent!=NULL.
|
|
Some plugins used the APE or ID3 tag loader as a fallback when their
own methods of loading tags did not work. Move this code out of all
decoder plugins, into song_file_update().
|
|
|
|
directory_is_root() is cheaper than
isRootDirectory(directory_get_path()).
|
|
|
|
Determine the suffix manually, and use decoder_plugin_from_suffix()
and archive_plugin_from_suffix() instead.
This way, song_file_update_inarchive() can be optimized: it does not
have to translate its path.
|
|
Newline characters are already checked in skip_path() (update.c).
|
|
|
|
Don't use fixed stack buffers.
|
|
Only include headers which are really needed. os_compat.h aimed to
make MPD easily portable, but was never actually made portable.
|
|
|
|
The decoder_plugin structs must never change. Don't work with
non-const pointers.
|
|
Nearly all mapper functions can fail and will then return NULL. Add
checks to all callers.
|
|
Don't load non-regular files.
|
|
Clients which have authenticated via unix socket may add local files
to the MPD playlist, provided that they own the file.
|
|
The mapper library maps directory and song objects to file system
paths. With this central library, the code mixture in path.c should
be cleaned up, and we will be able to add neat features like aliasing.
|
|
song_get_url() doesn't modify the song object.
|
|
isMusic() used to be a very inefficient function: with every
invocation, it did another stat() on the specified file. There is
only one caller, do the stat() there manually and use hasMusicSuffix()
instead of isMusic().
|
|
|
|
CamelCase is ugly, rename the functions.
|
|
The runtime check suggests that the author has somehow thought
song_get_url(NULL) might be valid. It should not be. Replace it with
an assertion.
|
|
Eliminate duplicated code.
|
|
Instead of returning 0 or -1, return true on success and false on
failure. This seems more natural, and when the C library was
designed, there was no "bool" data type.
|
|
This function was never used on remote songs. Replace the runtime
check with an assertion.
|
|
CamelCase is ugly... rename all functions.
|
|
Provide separate constructors for creating a remote song, a local
song, and one for loading data from a song file. This way, we can add
more assertions.
|
|
When there are standardized headers, use these instead of the bloated
os_compat.h.
|
|
Again, a data type which can be forward-declared.
|