aboutsummaryrefslogtreecommitdiffstats
path: root/src/song_print.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* song_print: check gmtime_r()'s return valueMax Kellermann2009-07-061-7/+11
| | | | | | When song->mtime was not initialized properly, it was revealed that strftime() might crash when gmtime_r() returns NULL due to an invalid time_t input value.
* song_print: send song modification time to clientMax Kellermann2009-07-051-0/+17
| | | | | Added the response line "Last-Modified", which sends the modification time in ISO 8601. The same was already implemented for playlists.
* all: Update copyright header.Avuton Olrich2009-03-131-6/+7
| | | | | | | | 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.
* song_print: hide HTTP password in playlistMax Kellermann2009-02-271-1/+11
| | | | | | | Added the uri_remove_auth() library function which strips username and password from a HTTP URI, and use it in song_print_url(). This allows you to add HTTP URIs to the playlist including secret username and password, without disclosing it to all MPD clients.
* directory: added directory_is_root()Max Kellermann2009-01-041-1/+1
| | | | | directory_is_root() is cheaper than isRootDirectory(directory_get_path()).
* directory: fix update in root directoryMax Kellermann2008-10-081-1/+1
| | | | | | | Commit 0bfe7802 broke update for new files in the root directory, because music_root->path was an empty string and not NULL. There were some NULL tests missing. Change them to !isRootDirectory(path) instead of path!=NULL.
* directory: eliminate CamelCaseMax Kellermann2008-10-081-1/+1
| | | | CamelCase is ugly, rename the functions.
* song: removed CamelCaseMax Kellermann2008-10-081-2/+2
| | | | CamelCase is ugly... rename all functions.
* song: converted typedef Song to struct songMax Kellermann2008-10-081-3/+6
| | | | Again, a data type which can be forward-declared.
* song: use songvec_for_each() in songvec_print() / songvec_save()Max Kellermann2008-10-071-8/+8
| | | | | songvec_for_each() has locking, use it instead of manually iterating over the songvec items.
* song: replace printSong* with song_print_*Eric Wong2008-10-071-4/+4
| | | | | | This make argument order more consistent for iterators. Additionally, these now return ssize_t results for error checking.
* Replace SongList with struct songvecEric Wong2008-09-231-6/+7
| | | | | | | Our linked-list implementation is wasteful and the SongList isn't modified enough to benefit from being a linked list. So use a more compact array of song pointers which saves ~200K on a library with ~9K songs (on x86-32).
* pass "struct client" to dbUtils.c, song.c, tag_print.cMax Kellermann2008-09-071-10/+10
| | | | | | Don't pass the raw file descriptor around. This migration patch is rather large, because all of the sources have inter dependencies - we have to change all of them at the same time.
* song: moved code to song_print.c, song_save.cMax Kellermann2008-09-071-0/+54
Move everything which dumps song information (via tag_print.c) to a separate source file. song_print.c gets code which writes song data to the client; song_save.c is responsible for serializing songs from the tag cache.