diff src/xs_length.c @ 230:608f31f6c095

Raw cleanup.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 21 Dec 2004 09:25:03 +0000
parents 92bad4c7b998
children 291715a519e2
line wrap: on
line diff
--- a/src/xs_length.c	Sun Dec 19 16:57:01 2004 +0000
+++ b/src/xs_length.c	Tue Dec 21 09:25:03 2004 +0000
@@ -21,6 +21,7 @@
 */
 #include "xs_length.h"
 #include "xs_support.h"
+#include "xs_config.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
@@ -553,3 +554,86 @@
  
  return pResult;
 }
+
+
+/*
+ * These should be moved out of this module some day ...
+ */
+static t_xs_sldb	*xs_sldb_db = NULL;
+XS_MUTEX(xs_sldb_db);
+
+gint xs_songlen_init(void)
+{
+ XS_MUTEX_LOCK(xs_cfg);
+ 
+ if (!xs_cfg.songlenDBPath)
+ 	{
+ 	XS_MUTEX_UNLOCK(xs_cfg);
+ 	return -1;
+ 	}
+
+ XS_MUTEX_LOCK(xs_sldb_db);
+ 
+ /* Check if already initialized */
+ if (xs_sldb_db) xs_sldb_free(xs_sldb_db);
+ 
+ /* Allocate database */
+ xs_sldb_db = (t_xs_sldb *) g_malloc0(sizeof(t_xs_sldb));
+ if (!xs_sldb_db)
+ 	{
+ 	XS_MUTEX_UNLOCK(xs_cfg);
+ 	XS_MUTEX_UNLOCK(xs_sldb_db);
+ 	return -2;
+ 	}
+ 
+ /* Read the database */
+ if (xs_sldb_read(xs_sldb_db, xs_cfg.songlenDBPath) != 0)
+ 	{
+ 	xs_sldb_free(xs_sldb_db);
+ 	xs_sldb_db = NULL;
+ 	XS_MUTEX_UNLOCK(xs_cfg);
+ 	XS_MUTEX_UNLOCK(xs_sldb_db);
+ 	return -3;
+ 	}
+
+ /* Create index */
+ if (xs_sldb_index(xs_sldb_db) != 0)
+ 	{
+ 	xs_sldb_free(xs_sldb_db);
+ 	xs_sldb_db = NULL;
+ 	XS_MUTEX_UNLOCK(xs_cfg);
+ 	XS_MUTEX_UNLOCK(xs_sldb_db);
+ 	return -4;
+ 	}
+
+ XS_MUTEX_UNLOCK(xs_cfg);
+ XS_MUTEX_UNLOCK(xs_sldb_db);
+ return 0;
+}
+
+
+void xs_songlen_close(void)
+{
+ XS_MUTEX_LOCK(xs_sldb_db);
+ xs_sldb_free(xs_sldb_db);
+ xs_sldb_db = NULL;
+ XS_MUTEX_UNLOCK(xs_sldb_db);
+}
+
+
+t_xs_sldb_node * xs_songlen_get(gchar *pcFilename)
+{
+ t_xs_sldb_node *pResult;
+
+ XS_MUTEX_LOCK(xs_sldb_db);
+
+ if (xs_cfg.songlenDBEnable && xs_sldb_db)
+ 	pResult = xs_sldb_get(xs_sldb_db, pcFilename);
+ 	else
+ 	pResult = NULL;
+
+ XS_MUTEX_UNLOCK(xs_sldb_db);
+ 
+ return pResult;
+}
+