| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Like the songvec nr_lock, only one lock is used for all
traversals since they're rarely changed. This only
projects traversals, but not the individual structures
themselves.
|
|
|
|
| |
We definitely don't modify them here.
|
|
|
|
| |
This will make it easier to introduce locking
|
|
|
|
| |
There was only one user of pathcpy_trunc(), which can be eliminated.
|
|
|
|
| |
Again, GLib's version is more robust than ours.
|
|
|
|
|
|
| |
GLib's g_path_get_basename() is much more reliable than
mpd_basename(). The latter could be tricked into an assertion
failure.
|
|
|
|
|
| |
Identifiers with two leading underscores are reserved for the C
compiler's internal use. Don't use them in the source.
|
|
|
|
|
| |
Due to an off-by-one bug in map_fs_to_utf8(), the function returned
database paths with a leading slash.
|
|
|
|
| |
The macro name is HAVE_STRUCT_UCRED, not HAVE_UCRED.
|
|
|
|
|
| |
The typedefs aren't using by anybody but struct input_stream. Remove
them and declare the method type within struct input_stream.
|
|
|
|
|
| |
The mpdurl_* code is internal, don't expose them. Also don't
initialize struct members with NULL.
|
|
|
|
| |
client->permission is a bit set, and should be unsigned.
|
|
|
|
| |
Reduce two temporary variables to only one.
|
|
|
|
|
| |
There is no sense in using the kernel's send buffer size (SO_SNDBUF)
for MPD's send buffer. Convert it into a static buffer of 4 kB.
|
|
|
|
|
|
|
| |
Use a literal in the struct declaration, and sizeof(client->buffer)
everywhere else. Also shrink the buffer from 40 kB to 4 kB. The
buffer must only be large enough to hold one line of input, and 4 kB
is still more than enough.
|
|
|
|
| |
The buffer pointers must not exceed the buffer size.
|
|
|
|
| |
Use ssize_t instead of int.
|
|
|
|
|
|
| |
Commit 6eb62e47 didn't obey partial lines correctly: when a line
wasn't finished in one read, the first part was ignored when the rest
arrived.
|
|
|
|
|
|
| |
[mk: fixed indent, changed copyright statement, added autoconf test,
fixed includes paths, fixed 2 gcc warnings, don't close input stream
twice]
|
|
|
|
|
| |
Don't compile the sources of disabled decoder plugins at all, and
don't attempt to register these.
|
|
|
|
|
| |
If a feature is disabled, don't compile the source file at all,
disable it completely in Makefile.am instead.
|
|
|
|
|
| |
The nmemb argument isn't actually useful, and one of nmemb and size
was always passed as 1. Remove it.
|
|
|
|
|
| |
Provide a struct type which can be forward-declared. The typedef
InputStream is deprecated now.
|
|
|
|
|
| |
Wake up the player as soon as the decoder thread has entered its loop.
This fixes a dead lock when the input is blocking.
|
|
|
|
|
|
| |
When adding a local file, clients have to use the "file" URI schema
described in RFC 1738 3.10. By adding this schema to "urlhandlers", a
client can detect whether this feature is available.
|
|
|
|
| |
The local variable "passcred" was only used by ucred code.
|
|
|
|
|
|
|
|
|
|
|
| |
By default, glibc 2.8 hides struct ucred behind the _GNU_SOURCE
macro. I don't want to enable that globally, because it may encourage
the use of non-portable functions. Test if "struct ucred" is
available, and enable _GNU_SOURCE if required.
For details about that issue, see glib's bug database:
http://sources.redhat.com/bugzilla/show_bug.cgi?id=6545
|
|
|
|
|
| |
Detect the following libraries with pkg-config: libshout, libid3tag,
libmad.
|
|
|
|
|
| |
The undocumented command "add /" adds the full music database to the
playlist. Don't interpret this special path as a local file path.
|
|
|
|
|
| |
Allow a local user to not only add his own files, but also all
world-readable files (mode 0444).
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
Returning the playlist_result value from a command handler does not
make sense. Call print_playlist_result() there, and forward its
return value.
|
|
|
|
|
| |
Replace some complicated checks from addToPlaylist() to the simpler
function song_by_url().
|
|
|
|
|
|
|
| |
Some functions assume that a song is not in the database when it is a
remote song. Based on that, they decide whether they are responsible
for freeing the song struct. Add a special function which checks
whether a song is in the database (currently equal to song_is_file()).
|
|
|
|
|
| |
Enable authentication over unix sockets. Store the client's uid in
the client struct.
|
|
|
|
|
| |
Skip only the special directory entries "." and "..", don't skip all
other "hidden" files.
|
|
|
|
|
| |
The switch from ogg.m4 to pkg-config intentionally disabled
libvorbisenc. Enable it when shout_ogg is used.
|
|
|
|
|
| |
This patch fixes several imports to use pkg-config instead of certain
esoteric tests.
|
|
|
|
|
|
| |
string_toupper() and strDupToUpper() were not able to deal with
character sets other than US-ASCII. Use GLib's g_utf8_casefold()
for strings.
|
|
|
|
|
| |
Moved the musicDir variable and its initialization code from path.c to
mapper.c.
|
|
|
|
| |
When the music directory is not mounted yet, let MPD start anyway.
|
|
|
|
|
|
|
| |
GLib provides an easier API for character set conversion than iconv().
Use g_convert() / g_convert_with_fallback() for all character
conversions. We should optimize the path.h API later to return a
newly allocated buffer, so we can just pass GLib's return value.
|
|
|
|
|
|
| |
GLib is a nice and portable utility library. We are going to use it
from now on, and eliminate a lot of duplicated code from MPD. Why
invent the wheel again and again?
|
|
|
|
| |
Indentation was broken in tag_id3.c: it used 4 spaces instead of tabs.
|
| |
|
|
|
|
|
|
| |
Use memchr() instead of manually traversing the input buffer. Update
the client's properties after all commands have been processed. Check
for buffer overflow once.
|
|
|
|
|
|
| |
The caller already knows the protocol family, and we can eliminate the
complicated switch statement in establishListen() if we just pass this
information. This seems more robust.
|
|
|
|
|
| |
getaddrinfo() is more robust and has proper IPv6 support. The new
code tries to bind to all IP addresses returned by getaddrinfo().
|
|
|
|
|
|
| |
"idle" waits until something noteworthy happens on the server,
e.g. song change, playlist modified, database updated. This allows
clients to keep up to date without polling.
|