Change plugin API to take a "context" instead of "db".
authorGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 7 Dec 2007 16:21:06 +0000 (16:21 +0000)
committerGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 7 Dec 2007 22:02:59 +0000 (22:02 +0000)
This makes room to passing more data to plugins without changing the
API every time, will need for upcoming charset support.

src/lib/lightmediascanner.c
src/lib/lightmediascanner_plugin.h
src/plugins/dummy/dummy.c
src/plugins/id3lib/id3lib.cpp
src/plugins/jpeg/jpeg.c
src/plugins/m3u/m3u.c
src/plugins/pls/pls.c
src/plugins/video-dummy/video-dummy.c

index 220069d..a5ed083 100644 (file)
@@ -605,23 +605,32 @@ _retrieve_file_status(struct db *db, struct lms_file_info *finfo)
         return -2;
 }
 
+static void
+_ctxt_init(struct lms_context *ctxt, const lms_t *lms, const struct db *db)
+{
+    ctxt->db = db->handle;
+}
+
 static int _parser_del_int(lms_t *lms, int i);
 
 static int
 _parsers_setup(lms_t *lms, struct db *db)
 {
+    struct lms_context ctxt;
     int i;
 
+    _ctxt_init(&ctxt, lms, db);
+
     for (i = 0; i < lms->n_parsers; i++) {
         lms_plugin_t *plugin;
         int r;
 
         plugin = lms->parsers[i].plugin;
-        r = plugin->setup(plugin, db->handle);
+        r = plugin->setup(plugin, &ctxt);
         if (r != 0) {
             fprintf(stderr, "ERROR: parser \"%s\" failed to setup: %d.\n",
                     plugin->name, r);
-            plugin->finish(plugin, db->handle);
+            plugin->finish(plugin, &ctxt);
             _parser_del_int(lms, i);
             i--; /* cancel i++ */
         }
@@ -633,18 +642,21 @@ _parsers_setup(lms_t *lms, struct db *db)
 static int
 _parsers_start(lms_t *lms, struct db *db)
 {
+    struct lms_context ctxt;
     int i;
 
+    _ctxt_init(&ctxt, lms, db);
+
     for (i = 0; i < lms->n_parsers; i++) {
         lms_plugin_t *plugin;
         int r;
 
         plugin = lms->parsers[i].plugin;
-        r = plugin->start(plugin, db->handle);
+        r = plugin->start(plugin, &ctxt);
         if (r != 0) {
             fprintf(stderr, "ERROR: parser \"%s\" failed to start: %d.\n",
                     plugin->name, r);
-            plugin->finish(plugin, db->handle);
+            plugin->finish(plugin, &ctxt);
             _parser_del_int(lms, i);
             i--; /* cancel i++ */
         }
@@ -656,14 +668,17 @@ _parsers_start(lms_t *lms, struct db *db)
 static int
 _parsers_finish(lms_t *lms, struct db *db)
 {
+    struct lms_context ctxt;
     int i;
 
+    _ctxt_init(&ctxt, lms, db);
+
     for (i = 0; i < lms->n_parsers; i++) {
         lms_plugin_t *plugin;
         int r;
 
         plugin = lms->parsers[i].plugin;
-        r = plugin->finish(plugin, db->handle);
+        r = plugin->finish(plugin, &ctxt);
         if (r != 0)
             fprintf(stderr, "ERROR: parser \"%s\" failed to finish: %d.\n",
                     plugin->name, r);
@@ -695,8 +710,11 @@ _parsers_check_using(lms_t *lms, void **parser_match, struct lms_file_info *finf
 static int
 _parsers_run(lms_t *lms, struct db *db, void **parser_match, struct lms_file_info *finfo)
 {
+    struct lms_context ctxt;
     int i, failed, available;
 
+    _ctxt_init(&ctxt, lms, db);
+
     failed = 0;
     available = 0;
     for (i = 0; i < lms->n_parsers; i++) {
@@ -707,7 +725,7 @@ _parsers_run(lms_t *lms, struct db *db, void **parser_match, struct lms_file_inf
             int r;
 
             available++;
-            r = plugin->parse(plugin, db->handle, finfo, parser_match[i]);
+            r = plugin->parse(plugin, &ctxt, finfo, parser_match[i]);
             if (r != 0)
                 failed++;
         }
index 5b2f4de..d9306d1 100644 (file)
@@ -39,12 +39,16 @@ extern "C" {
         size_t size; /**< file size in bytes */
     };
 
+    struct lms_context {
+        sqlite3 *db;
+    };
+
     typedef void *(*lms_plugin_match_fn_t)(lms_plugin_t *p, const char *path, int len, int base);
-    typedef int (*lms_plugin_parse_fn_t)(lms_plugin_t *p, sqlite3 *db, const struct lms_file_info *finfo, void *match);
+    typedef int (*lms_plugin_parse_fn_t)(lms_plugin_t *p, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match);
     typedef int (*lms_plugin_close_fn_t)(lms_plugin_t *p);
-    typedef int (*lms_plugin_setup_fn_t)(lms_plugin_t *p, sqlite3 *db);
-    typedef int (*lms_plugin_start_fn_t)(lms_plugin_t *p, sqlite3 *db);
-    typedef int (*lms_plugin_finish_fn_t)(lms_plugin_t *p, sqlite3 *db);
+    typedef int (*lms_plugin_setup_fn_t)(lms_plugin_t *p, struct lms_context *ctxt);
+    typedef int (*lms_plugin_start_fn_t)(lms_plugin_t *p, struct lms_context *ctxt);
+    typedef int (*lms_plugin_finish_fn_t)(lms_plugin_t *p, struct lms_context *ctxt);
 
     struct lms_plugin {
         const char *name;
index 673c894..8d3f7be 100644 (file)
@@ -53,7 +53,7 @@ _match(struct plugin *p, const char *path, int len, int base)
 }
 
 static int
-_parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, void *match)
+_parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
 {
     write(plugin->fd, finfo->path, finfo->path_len);
     write(plugin->fd, "\n", 1);
@@ -68,13 +68,13 @@ _close(struct plugin *plugin)
 }
 
 static int
-_setup(struct plugin *plugin, sqlite3 *db)
+_setup(struct plugin *plugin,  struct lms_context *ctxt)
 {
     return 0;
 }
 
 static int
-_start(struct plugin *plugin, sqlite3 *db)
+_start(struct plugin *plugin, struct lms_context *ctxt)
 {
     char logfile[PATH_MAX];
 
@@ -89,7 +89,7 @@ _start(struct plugin *plugin, sqlite3 *db)
 }
 
 static int
-_finish(struct plugin *plugin, sqlite3 *db)
+_finish(struct plugin *plugin, struct lms_context *ctxt)
 {
     if (close(plugin->fd) != 0)
         perror("close");
index 1de3777..7bb2f5f 100644 (file)
@@ -199,7 +199,7 @@ _match(struct plugin *p, const char *path, int len, int base)
 }
 
 static int
-_parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, void *match)
+_parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
 {
     struct lms_audio_info info = {0};
     ID3_Tag tag;
@@ -237,9 +237,9 @@ _parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, vo
 }
 
 static int
-_setup(struct plugin *plugin, sqlite3 *db)
+_setup(struct plugin *plugin, struct lms_context *ctxt)
 {
-    plugin->audio_db = lms_db_audio_new(db);
+    plugin->audio_db = lms_db_audio_new(ctxt->db);
     if (!plugin->audio_db)
         return -1;
 
@@ -247,13 +247,13 @@ _setup(struct plugin *plugin, sqlite3 *db)
 }
 
 static int
-_start(struct plugin *plugin, sqlite3 *db)
+_start(struct plugin *plugin, struct lms_context *ctxt)
 {
     return lms_db_audio_start(plugin->audio_db);
 }
 
 static int
-_finish(struct plugin *plugin, sqlite3 *db)
+_finish(struct plugin *plugin,  struct lms_context *ctxt)
 {
     if (plugin->audio_db)
         return lms_db_audio_free(plugin->audio_db);
index 42acf5d..054dc66 100644 (file)
@@ -594,7 +594,7 @@ _match(struct plugin *p, const char *path, int len, int base)
 }
 
 static int
-_parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, void *match)
+_parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
 {
     struct lms_image_info info = {0};
     int fd, type, len, r;
@@ -660,9 +660,9 @@ _parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, vo
 }
 
 static int
-_setup(struct plugin *plugin, sqlite3 *db)
+_setup(struct plugin *plugin, struct lms_context *ctxt)
 {
-    plugin->img_db = lms_db_image_new(db);
+    plugin->img_db = lms_db_image_new(ctxt->db);
     if (!plugin->img_db)
         return -1;
 
@@ -670,13 +670,13 @@ _setup(struct plugin *plugin, sqlite3 *db)
 }
 
 static int
-_start(struct plugin *plugin, sqlite3 *db)
+_start(struct plugin *plugin, struct lms_context *ctxt)
 {
     return lms_db_image_start(plugin->img_db);
 }
 
 static int
-_finish(struct plugin *plugin, sqlite3 *db)
+_finish(struct plugin *plugin, struct lms_context *ctxt)
 {
     if (plugin->img_db)
         return lms_db_image_free(plugin->img_db);
index d3cf070..f3be26f 100644 (file)
@@ -108,7 +108,7 @@ _match(struct plugin *p, const char *path, int len, int base)
 }
 
 static int
-_parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, void *match)
+_parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
 {
     struct lms_playlist_info info = {0};
     int fd, r, ext_idx;
@@ -142,9 +142,9 @@ _parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, vo
 }
 
 static int
-_setup(struct plugin *plugin, sqlite3 *db)
+_setup(struct plugin *plugin, struct lms_context *ctxt)
 {
-    plugin->playlist_db = lms_db_playlist_new(db);
+    plugin->playlist_db = lms_db_playlist_new(ctxt->db);
     if (!plugin->playlist_db)
         return -1;
 
@@ -152,13 +152,13 @@ _setup(struct plugin *plugin, sqlite3 *db)
 }
 
 static int
-_start(struct plugin *plugin, sqlite3 *db)
+_start(struct plugin *plugin, struct lms_context *ctxt)
 {
     return lms_db_playlist_start(plugin->playlist_db);
 }
 
 static int
-_finish(struct plugin *plugin, sqlite3 *db)
+_finish(struct plugin *plugin, struct lms_context *ctxt)
 {
     if (plugin->playlist_db)
         return lms_db_playlist_free(plugin->playlist_db);
index 9ed53c0..8e96ad0 100644 (file)
@@ -289,7 +289,7 @@ _match(struct plugin *p, const char *path, int len, int base)
 }
 
 static int
-_parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, void *match)
+_parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
 {
     struct lms_playlist_info info = {0};
     int fd, r, ext_idx;
@@ -324,9 +324,9 @@ _parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, vo
 }
 
 static int
-_setup(struct plugin *plugin, sqlite3 *db)
+_setup(struct plugin *plugin, struct lms_context *ctxt)
 {
-    plugin->playlist_db = lms_db_playlist_new(db);
+    plugin->playlist_db = lms_db_playlist_new(ctxt->db);
     if (!plugin->playlist_db)
         return -1;
 
@@ -334,13 +334,13 @@ _setup(struct plugin *plugin, sqlite3 *db)
 }
 
 static int
-_start(struct plugin *plugin, sqlite3 *db)
+_start(struct plugin *plugin, struct lms_context *ctxt)
 {
     return lms_db_playlist_start(plugin->playlist_db);
 }
 
 static int
-_finish(struct plugin *plugin, sqlite3 *db)
+_finish(struct plugin *plugin, struct lms_context *ctxt)
 {
     if (plugin->playlist_db)
         return lms_db_playlist_free(plugin->playlist_db);
index 7710797..40533e9 100644 (file)
@@ -66,7 +66,7 @@ _match(struct plugin *p, const char *path, int len, int base)
 }
 
 static int
-_parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, void *match)
+_parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_info *finfo, void *match)
 {
     struct lms_video_info info = {0};
     int r, ext_idx;
@@ -86,9 +86,9 @@ _parse(struct plugin *plugin, sqlite3 *db, const struct lms_file_info *finfo, vo
 }
 
 static int
-_setup(struct plugin *plugin, sqlite3 *db)
+_setup(struct plugin *plugin, struct lms_context *ctxt)
 {
-    plugin->video_db = lms_db_video_new(db);
+    plugin->video_db = lms_db_video_new(ctxt->db);
     if (!plugin->video_db)
         return -1;
 
@@ -96,13 +96,13 @@ _setup(struct plugin *plugin, sqlite3 *db)
 }
 
 static int
-_start(struct plugin *plugin, sqlite3 *db)
+_start(struct plugin *plugin, struct lms_context *ctxt)
 {
     return lms_db_video_start(plugin->video_db);
 }
 
 static int
-_finish(struct plugin *plugin, sqlite3 *db)
+_finish(struct plugin *plugin, struct lms_context *ctxt)
 {
     if (plugin->video_db)
         return lms_db_video_free(plugin->video_db);