Commit Graph

1356 Commits

Author SHA1 Message Date
Julien BLACHE 1a397ca79b Check that db_pl_fetch_byquery only gets 1 query result 2009-11-28 10:55:42 +01:00
Julien BLACHE 6a1c01fa15 Allow playlists from different files to have the same title 2009-11-28 10:55:42 +01:00
Julien BLACHE 8f07db5c10 Add support for FLAC files with ID3v2 tags.
Patch from Wolfgang Holler <woelfs@googlemail.com>.
2009-11-18 20:14:03 +01:00
Julien BLACHE 946758cec7 Rework iTunes 9 absolute request uri fix 2009-11-14 11:23:03 +01:00
Julien BLACHE f8f183f2f6 Fixup iTunes 9 Request-URI before processing
iTunes 9 sends requests with a Request-URI like
  daap://10.1.1.20:3689/server-info

The DAAP server expected the Request-URI to be just /server-info, and so
couldn't match the request to any handler.

In addition, evhttp would declare this request a proxy request which also
broke keep-alive handling resulting in the server closing the connection
after the reply. iTunes doesn't like that.
2009-11-13 21:53:47 +01:00
Julien BLACHE 6cc9abadbd Skip files that have no audio streams 2009-11-01 12:52:30 +01:00
Julien BLACHE 9b56d51f92 Avoid divide-by-zero for files with duration < AV_TIME_BASE 2009-11-01 12:51:50 +01:00
Julien BLACHE c36b3c360d Fix DAAP request regexps - IDs can (thankfully) be more than 1-digit long 2009-11-01 12:39:11 +01:00
Julien BLACHE 9229f3dff9 Flush log as we go. 2009-10-04 12:08:46 +02:00
Julien BLACHE aa52f1d30b Add license and copyright statement to -v/--version and usage message 2009-09-21 19:52:05 +02:00
Julien BLACHE 11909725e2 Use ffmpeg's memory allocator for transcode buffer
ffmpeg's allocator ensures the allocated memory is properly aligned for
any kind of optimized operation used in ffmpeg.
2009-07-24 08:19:31 +02:00
Julien BLACHE 2323fd302c Fix memory leak (transcode buffer) 2009-07-24 08:18:53 +02:00
Julien BLACHE 1bd3b3a076 Fix paths and rename the project 2009-06-12 13:00:34 +02:00
Julien BLACHE e1c0b6d4b7 Move *_offsetof() macro definitions to db.h 2009-06-11 23:17:17 +02:00
Julien BLACHE 1f92052409 Rename the songs table 2009-06-11 23:03:53 +02:00
Julien BLACHE 3cadbdb1e3 Remove unused db_file_fetch_bypath() 2009-06-11 20:46:11 +02: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 0a8c171187 Store playlist items paths instead of resolving to file ids
This allows for more dynamic playlists now that files can move
around while we're running.
2009-06-11 20:27:31 +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 c589d92b14 Use db_get_count() wherever applicable; simplify db_{pl,files}_get_count() prototypes 2009-06-11 18:41:50 +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 07e22d8870 Add watch query/enumeration 2009-06-11 16:44:49 +02:00
Julien BLACHE 129ca8dfff Add watch deletion by path/match/cookie routines 2009-06-11 16:15:35 +02:00
Julien BLACHE 267ab7cb1a Rename db_query_get_count() to db_get_count()
Make that a generic helper, given it's used outside queries.
2009-06-11 15:45:49 +02:00
Julien BLACHE cef1636415 Add watch-moving routines 2009-06-11 15:42:51 +02:00
Julien BLACHE 87aa24454d Add watch-marking routines 2009-06-11 15:24:10 +02:00
Julien BLACHE 56127b3ecc Add file and playlist disable-by-match routines 2009-06-11 15:09:10 +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 d63da9f08f Add file and playlist enable/disable routines 2009-06-10 22:28:54 +02:00
Julien BLACHE 9ff8913dd6 Add file and playlist deletion (by path) routines 2009-06-10 22:28:49 +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 a9697eccdf Add storage of inotify watch info 2009-06-10 22:28:43 +02:00
Julien BLACHE bfa2488343 Add support for disabled files and playlists 2009-06-10 19:11:12 +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 4e38d168e1 Set and check database schema version 2009-06-10 19:04:18 +02:00
Julien BLACHE ab1f9db6b3 Remove unused L_LOCK logdomain 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 4e3b29f502 Remove the old database code 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 f2c677462b Add new database code 2009-06-10 19:04:12 +02:00
Julien BLACHE 52d3fd1064 Clear evkeyvalq structs before use; fix crasher 2009-06-07 19:06:59 +02:00
Julien BLACHE 149d5432c6 Rework error handling and cleanup 2009-06-07 19:06:59 +02:00
Julien BLACHE 0ff33f12d6 Move mDNS services registration out of main() 2009-06-07 19:06:59 +02:00
Julien BLACHE f3c0145346 Move runas down into daemonize() 2009-06-07 19:06:59 +02:00
Julien BLACHE f39c48b989 Cleanup options and add long options 2009-06-07 19:06:59 +02:00
Julien BLACHE 6e64e54429 General main.c cleanup 2009-06-07 19:06:59 +02:00
Julien BLACHE 64cd2ee383 Factor out RSP query parameters handling 2009-06-07 19:06:59 +02:00
Julien BLACHE c59217f58e Remove the unused L_PARSE logdomain 2009-06-07 19:06:58 +02:00
Julien BLACHE 2cc5f6928e Remove the unused smart parser 2009-06-07 19:06:58 +02:00
Julien BLACHE 8b5a25c972 Remove/disable last users of the smart parser 2009-06-07 19:06:58 +02:00
Julien BLACHE 91e34a77c8 Use the new ANTLR parser for RSP queries 2009-06-07 19:06:58 +02:00
Julien BLACHE f9d9964914 Add new ANTLR parser for RSP queries
This parser actually supports way more than is needed for RSP proper,
as mt-daapd was piggybacking on the RSP queries for its smart playlists.

As I don't have (yet?) the RSP specs, better safe than sorry here. This
will be revisited at some point. Or not.
2009-06-07 19:06:51 +02:00
Julien BLACHE 272d8bca04 Fix error message 2009-06-07 19:06:51 +02:00
Julien BLACHE 68c74e6a88 Replace the mxml RSP root element hack by a better one
There's no proper way to add attributes to the root XML element in mxml;
the best way to do that is to create the root element like we would
create any other element and put the whole "? ... ?" stuff in there.
2009-06-07 19:06:51 +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 977afbbc5e Add workaround for empty XML tags in RSP replies
The SoundBridge does not support empty XML tags (<foo/>) and treats anything
containing such tags as invalid. Adding an empty string to the element works
around that, in that mxml won't produce empty tags in this case.

Hackish, but dealing with a hackish implementation on the other side :)
2009-06-07 19:06:51 +02:00
Julien BLACHE 28350ae9a6 Look for a query or filter parameter in DAAP queries
The filter is passed in the query parameter if it's a search, but if it's
a browse it's in the filter parameter.
2009-06-07 19:06:51 +02:00
Julien BLACHE 7642b1c6d7 Use the new ANTLR parser for DAAP queries 2009-06-07 19:06:50 +02:00
Julien BLACHE 68db2ae7c2 Add new ANTLR parser for DAAP queries 2009-06-07 19:06:46 +02:00
Julien BLACHE cefd3f3d1d Make dmap_fields_hash static 2009-06-01 18:01:24 +02:00
Julien BLACHE 512731c9dc Turn DPRINTF into a wrapper to a generic logging function
DPRINTF() made a generic logging function taking a va_list called
vlogger() and reimplemented as a wrapper on top of vlogger().
2009-06-01 16:01:47 +02:00
Julien BLACHE c3a5222f84 Log libevent errors through our own logger 2009-05-09 17:14:07 +02:00
Julien BLACHE 11f18eaf6f Remove unneeded log.c from evhttp copy 2009-05-09 17:14:07 +02:00
Julien BLACHE be0ac2b103 Add missing cleanup calls 2009-05-09 17:14:07 +02:00
Julien BLACHE 7b3b538ea6 Rename L_REND to L_MDNS 2009-05-09 17:14:07 +02:00
Julien BLACHE d384f3c395 Rename E_INF to E_INFO 2009-05-09 17:14:07 +02:00
Julien BLACHE b6f23a8273 Remove old error logging facility 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 3a2a218a0f Introduce new logger 2009-05-09 17:14:01 +02:00
Julien BLACHE 2127aff906 Use a single log domain on DPRINTF() calls 2009-05-05 20:28:40 +02:00
Julien BLACHE 803ca7e59f Rename foreground to background and change logic accordingly 2009-05-05 17:54:20 +02:00
Julien BLACHE 10bb9dec57 Remove useless daapd.h 2009-05-05 16:22:11 +02:00
Julien BLACHE d2999aafec Add missing stdint.h include to ff-dbstruct.h 2009-05-05 16:21:39 +02:00
Julien BLACHE c85f9ed7dd Move main event base extern declaration to mdns_avahi.c where it's used 2009-05-05 16:10:49 +02:00
Julien BLACHE 524bdd3f0d Remove old config framwork include and wrappers 2009-05-05 16:10:44 +02:00
Julien BLACHE 9fce6d7abd Use new config framework in main.c 2009-05-05 15:53:36 +02:00
Julien BLACHE c1a2bf6fcf Remove conf_*() usage in DB module 2009-05-05 15:45:48 +02:00
Julien BLACHE ed0ff0c136 Unlink PID file on exit 2009-05-04 17:51:42 +02:00
Julien BLACHE be4286b2e8 Remove -export-dynamic libtool flag now that we don't have plugins anymore 2009-05-04 17:48:31 +02:00
Julien BLACHE 8e14495bc2 Remove unused struct tag_stats (STATS) 2009-05-03 13:33:16 +02:00
Julien BLACHE d1449a875b Get rid of the global struct tag_config (CONFIG) config 2009-05-03 13:32:00 +02:00
Julien BLACHE 2530c3512b Rename webface_cb() to httpd_gen_cb() 2009-05-03 12:26:01 +02:00
Julien BLACHE cd6f87401a Rename struct stream_chunk to struct stream_ctx 2009-05-03 12:19:04 +02:00
Julien BLACHE ed7c848702 Remove I/O layer 2009-05-03 12:10:17 +02:00
Julien BLACHE 07fb43ca8c Remove I/O layer init/deinit 2009-05-03 12:09:25 +02:00
Julien BLACHE f0ca987d78 Replace io_* routines by standard I/O functions 2009-05-03 12:08:14 +02:00
Julien BLACHE e8843a99aa Remove util.[ch] 2009-05-03 11:38:32 +02:00
Julien BLACHE 1e0ffb6808 Remove use of util_* routines, last user 2009-05-03 11:37:30 +02:00
Julien BLACHE 9ef8acfa28 Remove old webserver 2009-05-03 11:20:12 +02:00