aboutsummaryrefslogtreecommitdiffstats
path: root/src/ls.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2008-12-31ls.c: include config.h to have HAVE_CURL hereLaszlo Ashin1-0/+1
2008-12-29removed os_compat.hMax Kellermann1-1/+2
Only include headers which are really needed. os_compat.h aimed to make MPD easily portable, but was never actually made portable.
2008-12-27disable archive API without pluginsMax Kellermann1-0/+2
When there are no archive plugins, we do not need the archive API at all. Drop all its overhead.
2008-12-16ls: adding get_archive_by_suffix() functionViliam Mateicka1-0/+15
2008-12-16ls: added uri_has_scheme()Max Kellermann1-0/+4
uri_has_scheme() checks if an URI contains the sub string "://", which makes MPD assume that it is a remote URI.
2008-12-16ls: don't return suffix from parent directory nameMax Kellermann1-1/+1
When a file had no file name extension, getSuffix() could return the extension of the parent directory (if it had one).
2008-12-16ls: reimplement getSuffix() with strrchr()Max Kellermann1-8/+2
The old getSuffix() code was quite wasteful, and can be replaced completely with strrchr().
2008-12-16ls: use boolMax Kellermann1-5/+4
Use the C99 "bool" data type instead of "int".
2008-12-16ls: make printRemoteUrlHandlers() return voidMax Kellermann1-3/+1
printRemoteUrlHandlers() cannot fail, and does not need a return value.
2008-12-16ls: removed isValidRemoteUtf8Url()Max Kellermann1-40/+0
The function didn't do anything useful, it was just several lines obfuscating that it was only forwarding isRemoteUrl()'s return value.
2008-11-01decoder: return const decoder_plugin structsMax Kellermann1-2/+3
The decoder_plugin structs must never change. Don't work with non-const pointers.
2008-10-28utils: use g_str_has_prefix() instead of prefixcmp()Max Kellermann1-2/+1
Remove duplicated code from MPD.
2008-10-26http: use libcurlMax Kellermann1-0/+2
MPD's HTTP client code has always been broken, no matter how effort was put into fixing it. Replace it with libcurl, which is known to be quite stable. This adds a fat library dependency, but only for people who need streaming.
2008-10-22command: added print_spl_list()Max Kellermann1-18/+0
The function print_spl_list() replaces the old function lsPlaylists() from ls.c.
2008-10-22stored_playlist: added spl_list()Max Kellermann1-73/+9
spl_list() provides an interface for enumerating all stored playlists. This separates the internal playlist logic from the protocol specific function lsPlaylists().
2008-10-14ls: removed myStat(), isFile(), isDir()Max Kellermann1-47/+0
The mapper code has replaced these functions.
2008-10-13song: stat file in song_file_update(), don't use isMusic()Max Kellermann1-12/+0
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().
2008-10-13playlist: don't use isPlaylist() in deletePlaylist()Max Kellermann1-16/+0
The only caller of deletePlaylist() appends PLAYLIST_FILE_SUFFIX, so we can be sure it's already there. We don't need to stat the file, since unlink() does all the checking.
2008-09-26song: removed type SongListMax Kellermann1-0/+1
SongList has been superseded by struct songvec.
2008-09-23start using prefixcmp()Eric Wong1-2/+1
LOC reduction and less noise makes things easier for tired old folks to follow.
2008-09-07ls: don't pass "fd" to lsPlaylists(), printRemoteUrlHandlers()Max Kellermann1-6/+6
Pass the client struct instead of the raw file descriptor.
2008-08-29pass constant pointersMax Kellermann1-3/+3
And again, convert arguments to const.
2008-08-26renamed functions in decoder_list.hMax Kellermann1-1/+1
InputPlugin to decoder_plugin, and no camelCase.
2008-08-26renamed InputPlugin to struct decoder_pluginMax Kellermann1-4/+5
"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-03-26use size_tMax Kellermann1-5/+5
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-26eliminated duplicate initializationMax Kellermann1-1/+1
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-02-05fix -Wconst warningsMax Kellermann1-17/+17
[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-01-26fixed -Wshadow warningsMax Kellermann1-17/+18
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-03Cleanup #includes of standard system headers and put them in one placeEric Wong1-4/+1
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
2007-12-28Merge branches/ew r7104Eric Wong1-12/+17
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-04-05The massive copyright updateAvuton Olrich1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@5834 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-08-26Replace strdup and {c,re,m}alloc with x* variants to check for OOM errorsEric Wong1-1/+2
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-20Fix warnings for -Wmissing-prototypesAvuton Olrich1-1/+1
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-14Revert leaks from r4311, and also the leak fixes as a result of thatEric Wong1-9/+1
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-07-30remove clumsy strncpy useEric Wong1-2/+4
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-30interface/connection malloc reductions from mpd-keEric Wong1-4/+4
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-20Add mpd-indent.shAvuton Olrich1-142/+153
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-16Will the leaks never end?!J. Alexander Treuman1-1/+6
git-svn-id: https://svn.musicpd.org/mpd/trunk@4375 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-16One more leakJ. Alexander Treuman1-0/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@4373 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-16Fixing a whopping 4 memory leaksJ. Alexander Treuman1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@4371 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14Change shank's email addressJ. Alexander Treuman1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@4333 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14[CLEANUP] Remove 'extern int errno;'Avuton Olrich1-19/+3
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-13Huge header update, update the copyright and addAvuton Olrich1-1/+1
the GPL header where necessary git-svn-id: https://svn.musicpd.org/mpd/trunk@4317 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-03-18ls.c: remove unnecessary strdupEric Wong1-2/+0
git-svn-id: https://svn.musicpd.org/mpd/trunk@3927 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-03-16merge with mpd/trunk up to r3925Eric Wong1-5/+5
git-svn-id: https://svn.musicpd.org/mpd/trunk@3926 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-10-25debug messages no longer cause segfaults :PEric Wong1-5/+3
git-svn-id: https://svn.musicpd.org/mpd/trunk@3553 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2005-09-08Patch to make the configure flag for mpd-mad and mpd-libid3tag more logic ↵Qball Cow1-4/+22
(from ticho) git-svn-id: https://svn.musicpd.org/mpd/trunk@3477 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-11ok, now song->url is only the filename, not the full path to the songWarren Dukes1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@2602 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-26patch from normalpersonWarren Dukes1-1/+4
git-svn-id: https://svn.musicpd.org/mpd/trunk@1679 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-21fix big boo boo in last commit: isFile() { myStat==0 }Warren Dukes1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@1599 09075e82-0dd4-0310-85a5-a0d7c8717e4f