aboutsummaryrefslogtreecommitdiffstats
path: root/src/ls.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* input_lastfm: new input plugin for last.fm radioMax Kellermann2009-03-021-0/+3
| | | | | | | The lastfm input plugin enables MPD to play lastfm:// URLs. This plugin is not complete yet: it plays only the first song in the last.fm playlist, and the playlist parser isn't even implemented properly.
* ls: moved generic URI utilities to uri.cMax Kellermann2009-02-251-13/+1
| | | | | "ls" is a bad name for a library which parses URIs. We'll move the rest of the "ls" library later.
* added support for the MMS protocolMax Kellermann2009-01-291-0/+6
| | | | | | | This patch implements the MMS protocol, by using libmms. It is quite experimental: it does not support seeking yet, and it is currently using synchronous I/O, which causes MPD to hang while waiting for the server.
* ls: renamed functions, no CamelCaseMax Kellermann2009-01-041-4/+7
|
* ls: removed hasMusicSuffix() and get_archive_by_suffix()Max Kellermann2009-01-041-35/+0
| | | | | | | | 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.
* ls: include cleanupMax Kellermann2009-01-041-6/+4
| | | | | Don't include headers which are not used. Fix some includes in decoder_thread.c.
* list: removed linked list libraryMax Kellermann2009-01-021-1/+0
| | | | It's been superseded by GLib's GSList.
* ls.c: include config.h to have HAVE_CURL hereLaszlo Ashin2008-12-311-0/+1
|
* removed os_compat.hMax Kellermann2008-12-291-1/+2
| | | | | Only include headers which are really needed. os_compat.h aimed to make MPD easily portable, but was never actually made portable.
* disable archive API without pluginsMax Kellermann2008-12-271-0/+2
| | | | | When there are no archive plugins, we do not need the archive API at all. Drop all its overhead.
* Merge branch 'experimental' of git://git.musicpd.org/metyl/mpdMax Kellermann2008-12-271-0/+15
|\ | | | | | | | | | | | | | | Conflicts: configure.ac src/ls.h src/output/shout_plugin.c
| * ls: adding get_archive_by_suffix() functionViliam Mateicka2008-12-161-0/+15
| |
* | ls: added uri_has_scheme()Max Kellermann2008-12-161-0/+4
| | | | | | | | | | uri_has_scheme() checks if an URI contains the sub string "://", which makes MPD assume that it is a remote URI.
* | ls: don't return suffix from parent directory nameMax Kellermann2008-12-161-1/+1
| | | | | | | | | | When a file had no file name extension, getSuffix() could return the extension of the parent directory (if it had one).
* | ls: reimplement getSuffix() with strrchr()Max Kellermann2008-12-161-8/+2
| | | | | | | | | | The old getSuffix() code was quite wasteful, and can be replaced completely with strrchr().
* | ls: use boolMax Kellermann2008-12-161-5/+4
| | | | | | | | Use the C99 "bool" data type instead of "int".
* | ls: make printRemoteUrlHandlers() return voidMax Kellermann2008-12-161-3/+1
| | | | | | | | | | printRemoteUrlHandlers() cannot fail, and does not need a return value.
* | ls: removed isValidRemoteUtf8Url()Max Kellermann2008-12-161-40/+0
|/ | | | | The function didn't do anything useful, it was just several lines obfuscating that it was only forwarding isRemoteUrl()'s return value.
* decoder: return const decoder_plugin structsMax Kellermann2008-11-011-2/+3
| | | | | The decoder_plugin structs must never change. Don't work with non-const pointers.
* utils: use g_str_has_prefix() instead of prefixcmp()Max Kellermann2008-10-281-2/+1
| | | | Remove duplicated code from MPD.
* http: use libcurlMax Kellermann2008-10-261-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.
* command: added print_spl_list()Max Kellermann2008-10-221-18/+0
| | | | | The function print_spl_list() replaces the old function lsPlaylists() from ls.c.
* stored_playlist: added spl_list()Max Kellermann2008-10-221-73/+9
| | | | | | spl_list() provides an interface for enumerating all stored playlists. This separates the internal playlist logic from the protocol specific function lsPlaylists().
* ls: removed myStat(), isFile(), isDir()Max Kellermann2008-10-141-47/+0
| | | | The mapper code has replaced these functions.
* song: stat file in song_file_update(), don't use isMusic()Max Kellermann2008-10-131-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().
* playlist: don't use isPlaylist() in deletePlaylist()Max Kellermann2008-10-131-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.
* song: removed type SongListMax Kellermann2008-09-261-0/+1
| | | | SongList has been superseded by struct songvec.
* start using prefixcmp()Eric Wong2008-09-231-2/+1
| | | | | LOC reduction and less noise makes things easier for tired old folks to follow.
* ls: don't pass "fd" to lsPlaylists(), printRemoteUrlHandlers()Max Kellermann2008-09-071-6/+6
| | | | Pass the client struct instead of the raw file descriptor.
* pass constant pointersMax Kellermann2008-08-291-3/+3
| | | | And again, convert arguments to const.
* renamed functions in decoder_list.hMax Kellermann2008-08-261-1/+1
| | | | InputPlugin to decoder_plugin, and no camelCase.
* renamed InputPlugin to struct decoder_pluginMax Kellermann2008-08-261-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.
* use size_tMax Kellermann2008-03-261-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
* eliminated duplicate initializationMax Kellermann2008-03-261-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
* fix -Wconst warningsMax Kellermann2008-02-051-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
* fixed -Wshadow warningsMax Kellermann2008-01-261-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
* Cleanup #includes of standard system headers and put them in one placeEric Wong2008-01-031-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
* Merge branches/ew r7104Eric Wong2007-12-281-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
* The massive copyright updateAvuton Olrich2007-04-051-1/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@5834 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Replace strdup and {c,re,m}alloc with x* variants to check for OOM errorsEric Wong2006-08-261-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
* Fix warnings for -Wmissing-prototypesAvuton Olrich2006-08-201-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
* Revert leaks from r4311, and also the leak fixes as a result of thatEric Wong2006-08-141-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
* remove clumsy strncpy useEric Wong2006-07-301-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
* interface/connection malloc reductions from mpd-keEric Wong2006-07-301-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
* Add mpd-indent.shAvuton Olrich2006-07-201-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
* Will the leaks never end?!J. Alexander Treuman2006-07-161-1/+6
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4375 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* One more leakJ. Alexander Treuman2006-07-161-0/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4373 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Fixing a whopping 4 memory leaksJ. Alexander Treuman2006-07-161-1/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4371 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* Change shank's email addressJ. Alexander Treuman2006-07-141-1/+1
| | | git-svn-id: https://svn.musicpd.org/mpd/trunk@4333 09075e82-0dd4-0310-85a5-a0d7c8717e4f
* [CLEANUP] Remove 'extern int errno;'Avuton Olrich2006-07-141-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