Commit Graph

50 Commits

Author SHA1 Message Date
Kai Elwert ebd673601d Set an empty album_artist for songs part of a compilation if not set
Songs in a compilation must all have the same album_artist and album (due to
songalbumid); if a song in a compilation doesn't have an album_artist, set it
to an empty string instead of defaulting to the value of artist. This is less
likely to break the compilation.
2010-09-04 11:04:49 +02:00
Julien BLACHE 7df92ae6bd Stop inotify event at deinit 2010-07-30 22:15:38 +02:00
Julien BLACHE 3b7a71527a Check & fix UTF-8 strings before adding/updating files 2010-06-21 17:50:09 +02:00
Dustin King 4551d530f9 Lower logging level for files with no metadata 2010-04-10 11:23:11 +02:00
Julien BLACHE 19b6780a3c Remove provisions for multi-library support
It is now clear that multi-library support will not happen, so remove whatever
provisions were in the code for that.

It comes with a small change to the configuration file, too.

With this, DB schema version went to 9.
2010-03-19 19:09:18 +01:00
Julien BLACHE 224ef48137 Make album groups persistent
Store groups (only album groups supported at the moment) in the DB,
so their ids are persistent for the duration of the forked-daapd session.

Those ids are used to, among other things, retrieve artwork, so we must
provide ourselves some persistence here.

This brings us to schema version 8.
2010-03-06 19:02:49 +01:00
Julien BLACHE 88dde32fc7 Recompute all songalbumids at startup
Due to the two Murmur64 implementations for 64 and 32bit machines, the
hash is not compatible when moving the SQLite DB between 32/64 bit hosts.

So we'll recompute all the songalbumids at startup, just in case.
2010-03-06 18:59:58 +01:00
Julien BLACHE cb4320791b Use eventfd instead of pipes if available
eventfd has less overhead than a pipe, works as a counter and uses a
single fd. Use it on Linux if available (that should be pretty much
always given the glibc and kernel requirements).
2010-02-04 18:52:13 +01:00
Julien BLACHE f85fa927c8 Dereference library directories before processing
The filescanner dereferences symlinks as it encounters them, but it did
not dereference the top-level library directories given in the config.

Also the playlist scanner always dereferences the filenames.

As a result, there was a mismatch between the paths in the files table and
the paths in the playlistitems table if the library directory given in the
config contain a symlink somewhere along the way.
2010-01-24 10:54:52 +01:00
Julien BLACHE d47c205452 Feed .remote files to the Remote pairing agent 2010-01-17 10:52:58 +01:00
Ace Jones 1b34c9d555 Always set media_kind, for real
The problem is, you can't set INITIAL values for the file scanner, because
the filescanner doesn't fill in values on top of already existing values.
2010-01-13 19:45:04 +01:00
Julien BLACHE ed3dbc1f35 Fill in the watch_info struct only when it's needed 2010-01-12 18:50:04 +01:00
Julien BLACHE 364b22c030 Implement directory rescanning on top of kqueue/kevent for FreeBSD 2010-01-12 18:45:44 +01:00
Julien BLACHE 69bae139bb Make push_dir()/pop_dir() accept a stack as first argument 2010-01-12 18:45:31 +01:00
Julien BLACHE 79cdb4f9aa Make forked-daapd build on GNU/kFreeBSD 2010-01-10 17:49:01 +01:00
Julien BLACHE 5b5e142c22 Replace inotify with kqueue on FreeBSD - stub
Start replacing inotify in the filescanner with kqueue. Only a stub at
this point, kqueue/kevent doesn't deliver nearly as much information
as inotify does. This will require some work, and someone willing to
do that work.
2010-01-09 13:48:52 +01:00
Julien BLACHE 8d7c566d95 Use m_realpath(path) instead of realpath(path, NULL) 2010-01-09 13:44:10 +01:00
Julien BLACHE 99df67b53c Include sys/param.h for PATH_MAX 2010-01-09 13:42:23 +01:00
Julien BLACHE 6033e29348 Use standard pipe() syscall on non-Linux platforms 2010-01-09 13:41:14 +01:00
Ace Jones fc971974f0 Fill in media_kind=1 for music
Also move item_kind initialization further up.
2010-01-06 18:41:27 +01:00
Julien BLACHE 974a74a833 Update copyright notices for 2010 2010-01-05 19:34:00 +01:00
Ace Jones e16d8a9747 Use the 'artist' field for 'album_artist' if there is no album artist set 2010-01-04 17:56:20 +01:00
Julien BLACHE 6114c31c61 Hook up iTunes library scanner 2009-11-28 10:55:43 +01:00
Julien BLACHE 0ad20e5220 Rework process_media_file() and related DB support routines
Avoid pulling all the file info from the DB in process_media_file() as
anything besides the file id and timestamp is not used at all.
2009-06-11 20:44:22 +02:00
Julien BLACHE 3b7ff30c1b Remove useless force_update field in media file info 2009-06-11 19:15:22 +02:00
Julien BLACHE c918c5c689 Always rescan directories to update playlists 2009-06-11 19:11:03 +02:00
Julien BLACHE 538d81b402 Always rescan and update playlists
This is needed to keep relative playlist items up to date in the
database when the playlist file moves around.
2009-06-11 19:04:21 +02:00
Julien BLACHE 2d1c35b855 Count playlist items on the fly 2009-06-11 18:28:01 +02:00
Julien BLACHE 30204cbb76 Remove unused toplevel watch attribute 2009-06-11 17:36:13 +02:00
Julien BLACHE c81b33bd02 Bring db_watch_delete_bywd() prototype back in line with other db_watch_delete_by*() 2009-06-11 17:35:32 +02:00
Julien BLACHE 582f0e6746 Handle inotify events for directories 2009-06-11 17:35:25 +02:00
Julien BLACHE 34b0c22e46 Handle symlink-to-directory creation 2009-06-11 13:51:19 +02:00
Julien BLACHE 279fb95979 Watch for IN_CLOSE_WRITE in addition to IN_MODIFY and IN_CREATE
When receiving IN_CREATE or IN_MODIFY, there's no guarantee the file is
in its final state. Similarly, IN_MOVED_TO doesn't guarantee the file is
available when we receive it. And it actually isn't.

Watching for IN_CLOSE_WRITE fixes all that.
2009-06-11 13:45:02 +02:00
Julien BLACHE 467b177c17 Handle IN_DELETE, IN_MOVED_FROM and IN_MOVED_TO for files 2009-06-10 22:28:59 +02:00
Julien BLACHE ac96ac6baf Move to the SQL database for storage of inotify watch info 2009-06-10 22:28:49 +02:00
Julien BLACHE 177fb35d81 Add missing argument to DPRINTF() call 2009-06-10 19:11:12 +02:00
Julien BLACHE 94421b0b1b Handle IN_IGNORED events in inotify callback 2009-06-10 19:10:44 +02:00
Julien BLACHE cbab1f80e0 ie->len is 0 for events reported on the watch subject
ie->len is non-0 only when the event is being reported for a file or
directory inside a watched directory.
2009-06-10 19:10:37 +02:00
Julien BLACHE c8cc6bd603 Run event loop for each directory and each playlist when scanning in bulk mode 2009-06-10 19:04:18 +02:00
Julien BLACHE 7314dd21c7 Purge old files and playlists after bulk scan 2009-06-10 19:04:18 +02:00
Julien BLACHE a200703393 Switch to the new database code 2009-06-10 19:04:18 +02:00
Julien BLACHE 4872077319 Make the file scanner non-recursive 2009-06-07 19:06:51 +02:00
Julien BLACHE ffb5a2fb06 Make wd2path static 2009-06-07 19:06:51 +02:00
Julien BLACHE d384f3c395 Rename E_INF to E_INFO 2009-05-09 17:14:07 +02:00
Julien BLACHE 11fd038d16 Use new logger facility 2009-05-09 17:14:06 +02:00
Julien BLACHE 10bb9dec57 Remove useless daapd.h 2009-05-05 16:22:11 +02:00
Julien BLACHE 7afc55307d Change prototype and return values for new file scanners 2009-04-24 15:45:44 +02:00
Julien BLACHE 69d6acad37 Remove support for iTunes XML playlist
No plans for OS X nor Windows in the near future, and those are most
probably useless on other platforms.
2009-04-24 15:45:43 +02:00
Julien BLACHE 831016bb05 Use new m3u scanner 2009-04-24 15:45:43 +02:00
Julien BLACHE c0e3c1bc5f Introduce new file scanner
The new file scanner has inotify support and runs in its own thread, including
for performing the initial rescan.
2009-04-20 16:41:01 +02:00