| Commit message (Collapse) | Author | Files | Lines |
|
Don't open the music directory for each "lsinfo" call. Get the list
of playlist files from the memory database.
|
|
inode numbers don't work on WIN32, and very few WIN32 users actually
use symlinks - seems ok to disable that check.
|
|
|
|
|
|
Make archive_file a "real" struct, extended by all plugins. Add the
plugin pointer to it. Wrap all method calls in functions.
|
|
|
|
Use struct forward declarations.
|
|
This broke sticker and archive support.
|
|
|
|
When a song's tags could not be loaded during database update, log
this as a debug message. Same for a song being removed because its
updated tag could not be read.
|
|
Try to be as portable as possible, use GLib path name functions and
macros.
|
|
|
|
"rescan" is the same as "update", but it discards existing songs in
the database.
|
|
|
|
Duplicate the path string within update.c, do not expect an allocated
string as parameter.
|
|
|
|
MPD checks if every flac (possibly other types as well) file contains
cuesheet on every update, which produces unneeded I/O. My music
collection is on NFS share, so it's quite noticeable. IMHO, it
shouldn't re-read unchanged files, so I wrote simple patch to fix it.
|
|
The return value of map_directory_child_fs() must be freed.
|
|
When you pass an empty string to directory_update_init(), it was not
freed by update_task().
|
|
Renamed all playlist functions to non-CamelCase.
|
|
|
|
Some clients have visual feedback for "database update is running".
Using the "database" idle event is unreliable, because it is only
emitted when the database was actually modified. This patch adds the
"update" event, which is emitted when the update is started, and again
when the update is finished, disregarding whether it has been
modified.
|
|
Check for NULL not necessary here
|
|
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.
|
|
After adding the container_scan() method the update_regular_file() method was quite hard to read.
Now there's update_container_file() which deals with container files.
That way normal container files (i.e. without embedded tracks) are handled by the old code like a regular file.
This will fix some of the odd behaviour observed.
|
|
Until now every flac file got removed unconditionally (and then re-added)
whenever the update command was issued. Now there is a check if we need
to that, so the file will only be removed if there is a embedded cuesheet
in that file
|
|
So far only seekpoints are supported, so no proper tagging yet
except for track number and track length.
Tagging should be done by parsing the cue sheet which
is often embedded as vorbis comment in flac files.
Furthermore the pathname should be configurable like "%A - %t - %T",
where %A means Artist, %t track number and %T Title or so.
|
|
[mk: fixed whitespace errors; use delete_song() instead of
songvec_delete()]
|
|
When checking whether database entries have been deleted, don't check
if an archive file is a directory (G_FILE_TEST_IS_DIR), use
G_FILE_TEST_IS_REGULAR for this case instead. To determine if a
"struct directory" is an archive, check for device==DEVICE_INARCHIVE.
This is always false after loading the database, so this patch is not
complete yet.
|
|
When the mtime of an archive time hasn't changed, don't update it
again.
|
|
Remember the modification time of each directory. This is important
for archives (which are virtual directories right now), but may also
be useful for an automatic update mechanism.
|
|
Simplify the rather large function update_regular_file().
|
|
MPD used to be silent when it could stat() a directory, but could not
opendir() it to read its contents. This caused a lot of support
headache with users who have wrong file permissions. Add another
warning message.
|
|
"ls" is a bad name for a library which parses URIs. We'll move the
rest of the "ls" library later.
|
|
Use delete_directory() for removing sub directories instead of
dirvec_clear(). This ensures that all memory occupied by
subdirectories of deleted directories is freed.
|
|
When a directory is deleted, MPD deleted only the directory from the
database; it did not bother to walk the full tree to free all memory
and to remove deleted songs from the playlist. Replace a
dirvec_delete() with delete_directory().
|
|
If stickers are not configured at runtime, don't call
sticker_song_delete().
|
|
Export the "g_playlist" variable, and pass it to all playlist
functions. This way, we can split playlist.c easier into separate
parts. The code which initializes the singleton variable is moved to
playlist_global.c.
|
|
On some platforms, g_free() must be used for memory allocated by
GLib. This patch intends to correct a lot of occurrences, but is
probably not complete.
|
|
When a song is deleted from the database, remove its sticker, too.
What's still missing is some sort of garbage collector after a fresh
database create (--create-db).
|
|
Without a music_directory, MPD is an excellent streaming client.
|
|
|
|
Don't use fixed static buffers. GLib allocates a new string for us
anyway, let's just return this one instead of copying it.
|
|
The archive code was disabled, because config.h was not included and
thus ENABLE_ARCHIVE was not defined.
|
|
Save an empty database, even if the music directory is empty.
|
|
|
|
The notify library is easier to use, and has no disadvantages.
|
|
|
|
Handle the DELETE and UPDATE events in separate callbacks:
song_delete_event() safely deletes a song, and update_finished_event()
is called when database update is complete.
|
|
GLib mandates that you initialize all GError objects with NULL prior
to passing it.
|