Commit Graph

56 Commits

Author SHA1 Message Date
Max Kellermann 12bcba8b89 pass constant pointers
And again, convert arguments to const.
2008-08-29 09:01:53 +02:00
Max Kellermann e754ed01a7 renamed functions in decoder_list.h
InputPlugin to decoder_plugin, and no camelCase.
2008-08-26 08:27:09 +02:00
Max Kellermann e41be362a1 renamed InputPlugin to struct decoder_plugin
"decoder plugin" is a better name than "input plugin", since the
plugin does not actually do the input - InputStream does.  Also don't
use typedef, so we can forward-declare it if required.
2008-08-26 08:27:08 +02:00
Max Kellermann 27f12c173d use size_t
When dealing with in-memory lengths, the standard type "size_t" should
be used.  Missing one can be quite dangerous, because an attacker
could provoke an integer under-/overflow, which may provide an attack
vector.

git-svn-id: https://svn.musicpd.org/mpd/trunk@7205 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-03-26 10:38:07 +00:00
Max Kellermann c5b524e376 eliminated duplicate initialization
Local variables which are never read before the first assignment don't
need initialization.  Saves a few bytes of text.  Also don't reset
variables which are never read until function return.

git-svn-id: https://svn.musicpd.org/mpd/trunk@7199 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-03-26 10:37:36 +00:00
Max Kellermann 6fbdc721d9 fix -Wconst warnings
[ew: cleaned up the dirty union hack a bit]
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn-id: https://svn.musicpd.org/mpd/trunk@7180 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-02-05 10:17:33 +00:00
Max Kellermann 07adb14e3c fixed -Wshadow warnings
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn-id: https://svn.musicpd.org/mpd/trunk@7143 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-26 12:46:21 +00:00
Eric Wong cb8f1af3bd Cleanup #includes of standard system headers and put them in one place
This will make refactoring features easier, especially now that
pthreads support and larger refactorings are on the horizon.

Hopefully, this will make porting to other platforms (even
non-UNIX-like ones for masochists) easier, too.

os_compat.h will house all the #includes for system headers
considered to be the "core" of MPD.  Headers for optional
features will be left to individual source files.

git-svn-id: https://svn.musicpd.org/mpd/trunk@7130 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2008-01-03 07:29:49 +00:00
Eric Wong b79f6b882a Merge branches/ew r7104
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
2007-12-28 02:56:25 +00:00
Avuton Olrich a061da8fb5 The massive copyright update
git-svn-id: https://svn.musicpd.org/mpd/trunk@5834 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-04-05 03:22:33 +00:00
Eric Wong 90847fc881 Replace strdup and {c,re,m}alloc with x* variants to check for OOM errors
I'm checking for zero-size allocations and assert()-ing them,
so we can more easily get backtraces and debug problems, but we'll
also allow -DNDEBUG people to live on the edge if they wish.

We do not rely on errno when checking for OOM errors because
some implementations of malloc do not set it, and malloc
is commonly overridden by userspace wrappers.

I've spent some time looking through the source and didn't find any
obvious places where we would explicitly allocate 0 bytes, so we
shouldn't trip any of those assertions.

We also avoid allocating zero bytes because C libraries don't
handle this consistently (some return NULL, some not); and it's
dangerous either way.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4690 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-26 06:25:57 +00:00
Avuton Olrich f79a70d1b9 Fix warnings for -Wmissing-prototypes
Add -Wmissing-prototypes if compiling with gcc
Static where possible

git-svn-id: https://svn.musicpd.org/mpd/trunk@4657 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-20 00:50:44 +00:00
Eric Wong 6459b3ee29 Revert leaks from r4311, and also the leak fixes as a result of that
utf8ToFsCharset() and fsCharsetToUtf8() got very broken in r4311, and
resulted in several commits to fix those leaks.  Unfortunately, not all
of those newly introduced leaks were fixed, nor was the result pretty.

Also, fixed a double-free in lsPlaylists().  This is very hard
to trigger (and therefore exploit) at the moment because we
check printDirectoryInfo() beforehand.

Intended behavior for utf8ToFsCharset() and fsCharsetToUtf8() as
God^H^H^Hshank originally intended is now documented in path.h
to prevent future errors like this.

mpd could still use some good valgrind testing before the 0.12.0
release.

<plug>In addition to reducing heap fragmentation, malloc
reductions from mpd-ke greatly reduces the chance of leaks from
happening due to programming errors.</plug>

git-svn-id: https://svn.musicpd.org/mpd/trunk@4639 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-14 13:46:51 +00:00
Eric Wong 263a9d583a remove clumsy strncpy use
strncpy isn't really safe because it doesn't guarantee null termination,
and we have had to work around it in several places.
strlcpy (from OpenBSD) isn't great, either because it often leaves
errors going unchecked (by truncating strings).

So we'll add the pathcpy_trunc() function with is basically strlcpy
with a hardcoded MAXPATHLEN as the limit, and we'll acknowledge
truncation since we only work on paths and MAXPATHLEN should be
set correctly by the system headers[1].

file-specific notes:

inputStream_http:
eyeballing the changes here, it seems to look alright but I
haven't actually tested it myself.

ls:
don't even bother printing a file if the filename is too long
(and when is it ever?) since we won't be able to read it anyways.

metadataChunk:
it's only metadata, and it's only for showin the user, so truncating
it here souldn't be a big issue.
memset to zero in init is unecessary, so lets not waste cycles

[1] - If the system headers are screwed up, then we're majorly
screwed regardless of what we do :x

git-svn-id: https://svn.musicpd.org/mpd/trunk@4491 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-30 10:31:41 +00:00
Eric Wong 4cf5d04ca1 interface/connection malloc reductions from mpd-ke
This patch massively reduces the amount of heap allocations at
the interface/command layer.  Most commands with minimal output
should not allocate memory from the heap at all.  Things like
repeatedly polling status, currentsong, and volume changes
should be faster as a result, and more importantly, not a source
of memory fragmentation.

These changes should be safe in that there's no way for a
remote-client to corrupt memory or otherwise do bad stuff to
MPD, but an extra set of eyes to review would be good.  Of
course there's never any warranty :)

No longer do we use FILE * structures in the interface, which means
we don't have to allocate any new memory for most connections.

Now, before you go on about losing the buffering that FILE *
+implies+, remember that myfprintf() never took advantage of
any of the stdio buffering features.

To reduce the diff and make bugs easier to spot in the diff,
I've kept myfprintf in places where we write to files (and not
network interfaces).  Expect myfprintf to go away entirely soon
(we'll use fprintf for writing regular files).

git-svn-id: https://svn.musicpd.org/mpd/trunk@4483 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-30 03:43:38 +00:00
Avuton Olrich 29a25b9933 Add mpd-indent.sh
Indent the entire tree, hopefully we can keep
it indented.

git-svn-id: https://svn.musicpd.org/mpd/trunk@4410 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-20 16:02:40 +00:00
J. Alexander Treuman 39615044e3 Will the leaks never end?!
git-svn-id: https://svn.musicpd.org/mpd/trunk@4375 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-16 19:55:01 +00:00
J. Alexander Treuman fefd214b8e One more leak
git-svn-id: https://svn.musicpd.org/mpd/trunk@4373 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-16 19:20:40 +00:00
J. Alexander Treuman 5d1df8e25c Fixing a whopping 4 memory leaks
git-svn-id: https://svn.musicpd.org/mpd/trunk@4371 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-16 18:22:03 +00:00
J. Alexander Treuman 2fa7125cce Change shank's email address
git-svn-id: https://svn.musicpd.org/mpd/trunk@4333 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14 19:37:45 +00:00
Avuton Olrich d9f31b1c47 [CLEANUP] Remove 'extern int errno;'
Remove unexported functions from the header
Static what makes sense

git-svn-id: https://svn.musicpd.org/mpd/trunk@4326 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14 19:02:48 +00:00
Avuton Olrich a37348a74f Huge header update, update the copyright and add
the GPL header where necessary

git-svn-id: https://svn.musicpd.org/mpd/trunk@4317 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-13 19:20:34 +00:00
Eric Wong 6dadabea21 ls.c: remove unnecessary strdup
git-svn-id: https://svn.musicpd.org/mpd/trunk@3927 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-03-18 03:55:41 +00:00
Eric Wong 6963502213 merge with mpd/trunk up to r3925
git-svn-id: https://svn.musicpd.org/mpd/trunk@3926 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-03-16 06:52:46 +00:00
Eric Wong 402c8cd707 debug messages no longer cause segfaults :P
git-svn-id: https://svn.musicpd.org/mpd/trunk@3553 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-10-25 20:35:16 +00:00
Qball Cow edcfbef90d Patch to make the configure flag for mpd-mad and mpd-libid3tag more logic (from ticho)
git-svn-id: https://svn.musicpd.org/mpd/trunk@3477 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-09-08 21:08:02 +00:00
Warren Dukes d6a87f538d ok, now song->url is only the filename, not the full path to the song
git-svn-id: https://svn.musicpd.org/mpd/trunk@2602 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-11 02:59:16 +00:00
Warren Dukes 366e370cb0 patch from normalperson
git-svn-id: https://svn.musicpd.org/mpd/trunk@1679 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-26 17:33:42 +00:00
Warren Dukes 43afc87cc5 fix big boo boo in last commit: isFile() { myStat==0 }
git-svn-id: https://svn.musicpd.org/mpd/trunk@1599 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-21 14:32:13 +00:00
Warren Dukes 598162e395 todo update
git-svn-id: https://svn.musicpd.org/mpd/trunk@1597 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-21 04:11:23 +00:00
Warren Dukes 600091c3e0 slight bug fix for making sure url's obey the RFC's
git-svn-id: https://svn.musicpd.org/mpd/trunk@1470 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-13 20:58:22 +00:00
Warren Dukes b4adc880a1 clean up some command.h include stuff
git-svn-id: https://svn.musicpd.org/mpd/trunk@1322 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-04 00:51:31 +00:00
Warren Dukes a29e38bef5 a slight cleanup in isValidRemoteUrl()
git-svn-id: https://svn.musicpd.org/mpd/trunk@1310 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-03 00:24:33 +00:00
Warren Dukes b48ac2dfa3 add urlhandlers command, but prolly not needed
git-svn-id: https://svn.musicpd.org/mpd/trunk@1307 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-02 23:22:37 +00:00
Warren Dukes 3c0c34bcb7 '\n' are bad
git-svn-id: https://svn.musicpd.org/mpd/trunk@1296 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-02 02:07:07 +00:00
Warren Dukes efe8a04c70 validate url's before adding to playlist
git-svn-id: https://svn.musicpd.org/mpd/trunk@1289 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-02 01:26:15 +00:00
Warren Dukes fd6aa25359 mp3 and ogg plugin stuff
git-svn-id: https://svn.musicpd.org/mpd/trunk@1245 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-31 01:21:17 +00:00
Warren Dukes b65ec79c16 a small change in determining suffix of files
git-svn-id: https://svn.musicpd.org/mpd/trunk@1232 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-30 00:05:23 +00:00
Warren Dukes 45f8d47384 assume all streams are mp3's, we'll need to open the streams before calling
the decoder routines to fetch the mime-type!

git-svn-id: https://svn.musicpd.org/mpd/trunk@1054 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-18 04:35:26 +00:00
Warren Dukes 746e7477e0 yes! rudimentary stream playing for mp3's!
be gentle

git-svn-id: https://svn.musicpd.org/mpd/trunk@1051 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-18 03:37:55 +00:00
Warren Dukes daa4ceb65a oops, fix an infinate loop
git-svn-id: https://svn.musicpd.org/mpd/trunk@1004 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-14 21:35:20 +00:00
Warren Dukes 965e6edcf1 redimentary addition of url's to playlist
git-svn-id: https://svn.musicpd.org/mpd/trunk@1000 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-05-13 18:46:38 +00:00
Warren Dukes a7076a120b some cleanups of sprintf's => snprintf's
git-svn-id: https://svn.musicpd.org/mpd/trunk@794 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-16 15:01:06 +00:00
Warren Dukes 2e420db19c remove directory mtime from db!
also, only reReadDB and write DB on update if something was actually updated

git-svn-id: https://svn.musicpd.org/mpd/trunk@780 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-16 00:41:56 +00:00
Warren Dukes 549344d38a add vim shiznit to end of all source files
git-svn-id: https://svn.musicpd.org/mpd/trunk@750 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-14 14:53:41 +00:00
Warren Dukes 1004890e25 lots of fsCharset, utf8/ascii converting clean-up and robustness stuff
Also, if fsCharsetToUtf8 can't convert to valid UTF-8, then don't add
it to the db, this way clients don't have to worry about weirdness and it
will force ppl to convert it.

git-svn-id: https://svn.musicpd.org/mpd/trunk@711 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-13 04:59:57 +00:00
Warren Dukes 795a1e930b lets cleanup some file type detection and not call stat() so much
git-svn-id: https://svn.musicpd.org/mpd/trunk@575 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-03-31 22:32:44 +00:00
Warren Dukes fc84fa54fc fix some gcc-2.95 errors
git-svn-id: https://svn.musicpd.org/mpd/trunk@414 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-03-23 03:02:49 +00:00
Warren Dukes 89d096fbef some simple compilation fix
git-svn-id: https://svn.musicpd.org/mpd/trunk@341 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-03-21 12:46:13 +00:00
Warren Dukes 445d807b9c streamline ls.c code
remove dontUpSampleSBR, not in faad2 rc3

git-svn-id: https://svn.musicpd.org/mpd/trunk@330 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-03-21 03:45:58 +00:00