# HG changeset patch # User Matti Hamalainen # Date 1169682125 0 # Node ID 1d55247ad0cc77e32b3bdcb3c7baf38215c98cbc # Parent a1224c1f8670cb6f3854250eeed555c3d3713b3e Moved again. :D diff -r a1224c1f8670 -r 1d55247ad0cc src/xmms-sid.c --- a/src/xmms-sid.c Wed Jan 24 23:28:01 2007 +0000 +++ b/src/xmms-sid.c Wed Jan 24 23:42:05 2007 +0000 @@ -93,13 +93,8 @@ static GtkObject *xs_subctrl_adj = NULL; XS_MUTEX(xs_subctrl); -static t_xs_stildb *xs_stildb_db = NULL; -XS_MUTEX(xs_stildb_db); - void xs_subctrl_close(void); void xs_subctrl_update(void); -gint xs_stil_init(void); -void xs_stil_close(void); /* @@ -1049,98 +1044,3 @@ g_free(pTune); } - -/* - * STIL-database handling - */ -gint xs_stil_init(void) -{ - XS_MUTEX_LOCK(xs_cfg); - - if (!xs_cfg.stilDBPath) { - XS_MUTEX_UNLOCK(xs_cfg); - return -1; - } - - XS_MUTEX_LOCK(xs_stildb_db); - - /* Check if already initialized */ - if (xs_stildb_db) - xs_stildb_free(xs_stildb_db); - - /* Allocate database */ - xs_stildb_db = (t_xs_stildb *) g_malloc0(sizeof(t_xs_stildb)); - if (!xs_stildb_db) { - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return -2; - } - - /* Read the database */ - if (xs_stildb_read(xs_stildb_db, xs_cfg.stilDBPath) != 0) { - xs_stildb_free(xs_stildb_db); - xs_stildb_db = NULL; - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return -3; - } - - /* Create index */ - if (xs_stildb_index(xs_stildb_db) != 0) { - xs_stildb_free(xs_stildb_db); - xs_stildb_db = NULL; - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return -4; - } - - XS_MUTEX_UNLOCK(xs_cfg); - XS_MUTEX_UNLOCK(xs_stildb_db); - return 0; -} - - -void xs_stil_close(void) -{ - XS_MUTEX_LOCK(xs_stildb_db); - xs_stildb_free(xs_stildb_db); - xs_stildb_db = NULL; - XS_MUTEX_UNLOCK(xs_stildb_db); -} - - -t_xs_stil_node *xs_stil_get(gchar *pcFilename) -{ - t_xs_stil_node *pResult; - gchar *tmpFilename; - - XS_MUTEX_LOCK(xs_stildb_db); - XS_MUTEX_LOCK(xs_cfg); - - if (xs_cfg.stilDBEnable && xs_stildb_db) { - if (xs_cfg.hvscPath) { - /* Remove postfixed directory separator from HVSC-path */ - tmpFilename = xs_strrchr(xs_cfg.hvscPath, '/'); - if (tmpFilename && (tmpFilename[1] == 0)) - tmpFilename[0] = 0; - - /* Remove HVSC location-prefix from filename */ - tmpFilename = strstr(pcFilename, xs_cfg.hvscPath); - if (tmpFilename) - tmpFilename += strlen(xs_cfg.hvscPath); - else - tmpFilename = pcFilename; - } else - tmpFilename = pcFilename; - - XSDEBUG("xs_stil_get('%s') = '%s'\n", pcFilename, tmpFilename); - - pResult = xs_stildb_get_node(xs_stildb_db, tmpFilename); - } else - pResult = NULL; - - XS_MUTEX_UNLOCK(xs_stildb_db); - XS_MUTEX_UNLOCK(xs_cfg); - - return pResult; -} diff -r a1224c1f8670 -r 1d55247ad0cc src/xs_fileinfo.c --- a/src/xs_fileinfo.c Wed Jan 24 23:28:01 2007 +0000 +++ b/src/xs_fileinfo.c Wed Jan 24 23:42:05 2007 +0000 @@ -30,6 +30,10 @@ #include "xs_interface.h" #include "xs_glade.h" + +static t_xs_stildb *xs_stildb_db = NULL; +XS_MUTEX(xs_stildb_db); + static GtkWidget *xs_fileinfowin = NULL; static t_xs_stil_node *xs_fileinfostil = NULL; XS_MUTEX(xs_fileinfowin); @@ -37,6 +41,101 @@ #define LUW(x) lookup_widget(xs_fileinfowin, x) +/* STIL-database handling + */ +gint xs_stil_init(void) +{ + XS_MUTEX_LOCK(xs_cfg); + + if (!xs_cfg.stilDBPath) { + XS_MUTEX_UNLOCK(xs_cfg); + return -1; + } + + XS_MUTEX_LOCK(xs_stildb_db); + + /* Check if already initialized */ + if (xs_stildb_db) + xs_stildb_free(xs_stildb_db); + + /* Allocate database */ + xs_stildb_db = (t_xs_stildb *) g_malloc0(sizeof(t_xs_stildb)); + if (!xs_stildb_db) { + XS_MUTEX_UNLOCK(xs_cfg); + XS_MUTEX_UNLOCK(xs_stildb_db); + return -2; + } + + /* Read the database */ + if (xs_stildb_read(xs_stildb_db, xs_cfg.stilDBPath) != 0) { + xs_stildb_free(xs_stildb_db); + xs_stildb_db = NULL; + XS_MUTEX_UNLOCK(xs_cfg); + XS_MUTEX_UNLOCK(xs_stildb_db); + return -3; + } + + /* Create index */ + if (xs_stildb_index(xs_stildb_db) != 0) { + xs_stildb_free(xs_stildb_db); + xs_stildb_db = NULL; + XS_MUTEX_UNLOCK(xs_cfg); + XS_MUTEX_UNLOCK(xs_stildb_db); + return -4; + } + + XS_MUTEX_UNLOCK(xs_cfg); + XS_MUTEX_UNLOCK(xs_stildb_db); + return 0; +} + + +void xs_stil_close(void) +{ + XS_MUTEX_LOCK(xs_stildb_db); + xs_stildb_free(xs_stildb_db); + xs_stildb_db = NULL; + XS_MUTEX_UNLOCK(xs_stildb_db); +} + + +t_xs_stil_node *xs_stil_get(gchar *pcFilename) +{ + t_xs_stil_node *pResult; + gchar *tmpFilename; + + XS_MUTEX_LOCK(xs_stildb_db); + XS_MUTEX_LOCK(xs_cfg); + + if (xs_cfg.stilDBEnable && xs_stildb_db) { + if (xs_cfg.hvscPath) { + /* Remove postfixed directory separator from HVSC-path */ + tmpFilename = xs_strrchr(xs_cfg.hvscPath, '/'); + if (tmpFilename && (tmpFilename[1] == 0)) + tmpFilename[0] = 0; + + /* Remove HVSC location-prefix from filename */ + tmpFilename = strstr(pcFilename, xs_cfg.hvscPath); + if (tmpFilename) + tmpFilename += strlen(xs_cfg.hvscPath); + else + tmpFilename = pcFilename; + } else + tmpFilename = pcFilename; + + XSDEBUG("xs_stil_get('%s') = '%s'\n", pcFilename, tmpFilename); + + pResult = xs_stildb_get_node(xs_stildb_db, tmpFilename); + } else + pResult = NULL; + + XS_MUTEX_UNLOCK(xs_stildb_db); + XS_MUTEX_UNLOCK(xs_cfg); + + return pResult; +} + + void xs_fileinfo_update(void) { gboolean isEnabled; diff -r a1224c1f8670 -r 1d55247ad0cc src/xs_fileinfo.h --- a/src/xs_fileinfo.h Wed Jan 24 23:28:01 2007 +0000 +++ b/src/xs_fileinfo.h Wed Jan 24 23:42:05 2007 +0000 @@ -7,6 +7,8 @@ extern "C" { #endif +gint xs_stil_init(void); +void xs_stil_close(void) void xs_fileinfo_update(void); void xs_fileinfo(gchar *);