| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
Decouple some more from GLib.
|
|
|
|
|
|
Prepare to migrate away from GLib. Currently, we're still using GLib
as a backend.
|
|
Replaces GLib's GError.
|
|
|
|
Eliminate input_stream_init() and input_stream_deinit().
|
|
|
|
Hide the definition from C code, to prepare the transition to C++.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
Windows compatibility.
|
|
|
|
All close() implementations must call this method.
|
|
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 code has never made any sense, and has broken some of the archive
plugin.
|
|
This code has never made any sense, and has broken some of the archive
plugin.
|
|
Add a "mode" argument to open_cloexec() instead.
|
|
Added the "fd_util" library, which attempts to use the new thread-safe
Linux system calls pipe2(), accept4() and the options O_CLOEXEC,
SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is
not thread safe.
This is particularly important for the "pipe" output plugin (and
others, such as JACK/PulseAudio), because we were heavily leaking file
descriptors to child processes.
|
|
Try to be as portable as possible, use GLib path name functions and
macros.
|
|
The "off_t" type may change when you enable or disable large file
support on 32 bit platforms. This caused severe ABI problems within
MPD when we enabled LFS for the first time: two sources included
config.h and sys/types.h in different order, and had different off_t
sizes - leading to memory corruption because of ABI incompatibility.
This patch attempts to get rid of all public "off_t" uses: it removes
"off_t" from the input_stream ABI/API, and switches to GLib's 64 bit
"goffset" type. This may hurt 32 bit embedded platforms a tiny bit,
but that's not even measurable.
|
|
If a file is removed the library, next time mpd will try to play it it
will result in an error 'ERROR: problems decoding some/file.ogg'.
Nothing is written in log files (verbose mode or not)
[mk: append strerror(errno)]
|
|
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.
|
|
[mk: fixed whitespace errors; use delete_song() instead of
songvec_delete()]
|
|
Allow input plugins to configure with an "input" block in mpd.conf.
Also allow the user to disable a plugin completely.
|
|
Create a sub directory for input plugins.
|
|
Start to separate private from public input_stream API.
|
|
Define G_LOG_DOMAIN.
|
|
Make those two methods optional to implement, and let input_stream.c
provide fallbacks. The buffer() method will be removed one day, and
there is now only one implementation left (input_curl.c).
|
|
This way, plugins can manipulate the plugin pointer during open().
|
|
|
|
Don't allow users to open a file which is non-regular (e.g. pipes,
devices).
|
|
|
|
|
|
Yet another superfluous buffering layer. input_file was using FILE*,
but we're better off with unbuffered I/O using open(), read(), ...
|
|
size_t and long aren't 64 bit safe (i.e. files larger than 2 GB on a
32 bit OS). Use off_t instead, which is a 64 bit integer if compiled
with large file support.
|
|
Don't attempt to open a HTTP URL as a local file, and don't send a
local path to libcurl.
|
|
For boolean values and success flags, use bool instead of integer (1/0
for true/false, 0/-1 for success/failure).
|
|
close() shouldn't fail with read-only streams.
|
|
Instead of managing a set of method pointers in each input_stream
struct, move these into the new input_plugin struct. Each
input_stream has only a pointer to the plugin struct. Pointers to all
implementations are kept in the array "input_plugins".
|