commit 42ef488e32706794c103bda6a8f11743c1cd00ef
Author: Kris Maglione <maglion...@gmail.com>
Date:   Mon Jan 4 18:20:30 2010 -0500

    [sqlite] Minor itdb writeout refactoring.

 src/itdb_sqlite.c |  111 +++++++++++++++--------------------------------------
 1 files changed, 31 insertions(+), 80 deletions(-)
---
diff --git a/src/itdb_sqlite.c b/src/itdb_sqlite.c
index 626511f..28d49da 100644
--- a/src/itdb_sqlite.c
+++ b/src/itdb_sqlite.c
@@ -21,6 +21,7 @@
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
+#include <stdarg.h>
 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
@@ -468,6 +469,24 @@ static void free_key_val_strings(gpointer key, gpointer 
value, gpointer user_dat
        g_free(value);
 }
 
+static void bind_first_text(sqlite3_stmt *stmt, int idx, int n, ...)
+{
+    va_list ap;
+    int i;
+
+    va_start(ap, n);
+    for (i = 0; i < n; i++) {
+        char *str = va_arg(ap, char*);
+        if (str && *str) {
+           sqlite3_bind_text(stmt, idx, str, -1, SQLITE_STATIC);
+            goto done;
+        }
+    }
+    sqlite3_bind_null(stmt, idx);
+done:
+    va_end(ap);
+}
+
 static int mk_Library(Itdb_iTunesDB *itdb,
                       GHashTable *album_ids, GHashTable *artist_ids,
                       GHashTable *composer_ids, const char *outpath)
@@ -892,85 +911,25 @@ static int mk_Library(Itdb_iTunesDB *itdb,
        }
        sqlite3_bind_int64(stmt_item, ++idx, composer_pid);
        /* title */
-       if (track->title && *track->title) {
-           sqlite3_bind_text(stmt_item, ++idx, track->title, -1, 
SQLITE_STATIC);
-       } else {
-           sqlite3_bind_null(stmt_item, ++idx);
-       }
+        bind_first_text(stmt_item, ++idx, 1, track->title);
        /* artist */
-       if (track->artist && *track->artist) {
-           sqlite3_bind_text(stmt_item, ++idx, track->artist, -1, 
SQLITE_STATIC);
-       } else {
-           sqlite3_bind_null(stmt_item, ++idx);
-       }
+        bind_first_text(stmt_item, ++idx, 1, track->artist);
        /* album */
-       if (track->album && *track->album) {
-           sqlite3_bind_text(stmt_item, ++idx, track->album, -1, 
SQLITE_STATIC);
-       } else {
-           sqlite3_bind_null(stmt_item, ++idx);
-       }
+        bind_first_text(stmt_item, ++idx, 1, track->album);
        /* album_artist */
-       if (track->albumartist && *track->albumartist) {
-           sqlite3_bind_text(stmt_item, ++idx, track->albumartist, -1, 
SQLITE_STATIC);
-       } else {
-           sqlite3_bind_null(stmt_item, ++idx);
-       }
+        bind_first_text(stmt_item, ++idx, 1, track->albumartist);
        /* composer */
-       if (track->composer && *track->composer) {
-           sqlite3_bind_text(stmt_item, ++idx, track->composer, -1, 
SQLITE_STATIC);
-       } else {
-           sqlite3_bind_null(stmt_item, ++idx);
-       }
+        bind_first_text(stmt_item, ++idx, 1, track->composer);
        /* sort_title */
-       if (track->sort_title && *track->sort_title) {
-           sqlite3_bind_text(stmt_item, ++idx, track->sort_title, -1, 
SQLITE_STATIC);
-       } else {
-           if (track->title && *track->title) {
-               sqlite3_bind_text(stmt_item, ++idx, track->title, -1, 
SQLITE_STATIC);
-           } else {
-               sqlite3_bind_null(stmt_item, ++idx);
-           }
-       }
+        bind_first_text(stmt_item, ++idx, 2, track->sort_title, track->title);
        /* sort_artist */
-       if (track->sort_artist && *track->sort_artist) {
-           sqlite3_bind_text(stmt_item, ++idx, track->sort_artist, -1, 
SQLITE_STATIC);
-       } else {
-           if (track->artist && *track->artist) {
-               sqlite3_bind_text(stmt_item, ++idx, track->artist, -1, 
SQLITE_STATIC);
-           } else {
-               sqlite3_bind_null(stmt_item, ++idx);
-           }
-       }
+        bind_first_text(stmt_item, ++idx, 2, track->sort_artist, 
track->artist);
        /* sort_album */
-       if (track->sort_album && *track->sort_album) {
-           sqlite3_bind_text(stmt_item, ++idx, track->sort_album, -1, 
SQLITE_STATIC);
-       } else {
-           if (track->album && *track->album) {
-               sqlite3_bind_text(stmt_item, ++idx, track->album, -1, 
SQLITE_STATIC);
-           } else {
-               sqlite3_bind_null(stmt_item, ++idx);
-           }
-       }
+        bind_first_text(stmt_item, ++idx, 2, track->sort_album, track->album);
        /* sort_album_artist */
-       if (track->sort_albumartist && *track->sort_albumartist) {
-           sqlite3_bind_text(stmt_item, ++idx, track->sort_albumartist, -1, 
SQLITE_STATIC);
-       } else {
-           if (track->albumartist && *track->albumartist) {
-               sqlite3_bind_text(stmt_item, ++idx, track->albumartist, -1, 
SQLITE_STATIC);
-           } else {
-               sqlite3_bind_null(stmt_item, ++idx);
-           }
-       }
+        bind_first_text(stmt_item, ++idx, 2, track->sort_albumartist, 
track->albumartist);
        /* sort_composer */
-       if (track->sort_composer && *track->sort_composer) {
-           sqlite3_bind_text(stmt_item, ++idx, track->sort_composer, -1, 
SQLITE_STATIC);
-       } else {
-           if (track->composer && *track->composer) {
-               sqlite3_bind_text(stmt_item, ++idx, track->composer, -1, 
SQLITE_STATIC);
-           } else {
-               sqlite3_bind_null(stmt_item, ++idx);
-           }
-       }
+        bind_first_text(stmt_item, ++idx, 2, track->sort_composer, 
track->composer);
 
        /* TODO figure out where these values are stored */
        /* title_order */
@@ -993,17 +952,9 @@ static int mk_Library(Itdb_iTunesDB *itdb,
        /* comment */
        sqlite3_bind_text(stmt_item, ++idx, track->comment, -1, SQLITE_STATIC);
        /* grouping */
-       if (!track->grouping) {
-           sqlite3_bind_null(stmt_item, ++idx);
-       } else {
-           sqlite3_bind_text(stmt_item, ++idx, track->grouping, -1, 
SQLITE_STATIC);
-       }
+        bind_first_text(stmt_item, ++idx, 1, track->grouping);
        /* description */
-       if (!track->description) {
-           sqlite3_bind_null(stmt_item, ++idx);
-       } else {
-           sqlite3_bind_text(stmt_item, ++idx, track->description, -1, 
SQLITE_STATIC);
-       }
+        bind_first_text(stmt_item, ++idx, 1, track->description);
        /* description_long */
        /* TODO libgpod doesn't know about it */
        sqlite3_bind_null(stmt_item, ++idx);

------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
gtkpod-cvs2 mailing list
gtkpod-cvs2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to