summaryrefslogtreecommitdiffstats
path: root/src/db-artwork-parser.c
diff options
context:
space:
mode:
authorJorg Schuler <jcsjcs@users.sourceforge.net>2006-03-16 15:34:34 +0000
committerJorg Schuler <jcsjcs@users.sourceforge.net>2006-03-16 15:34:34 +0000
commitd3bab54a791fbc5b7835e069dcada96fb6c82efe (patch)
treec5a18421b35013c3fcd1ac5dbe72daa649a30b2b /src/db-artwork-parser.c
parent435acf166a4aeda13d14ce7818fa33f2b7855b4f (diff)
downloadlibgpod-d3bab54a791fbc5b7835e069dcada96fb6c82efe.tar.gz
libgpod-d3bab54a791fbc5b7835e069dcada96fb6c82efe.tar.xz
libgpod-d3bab54a791fbc5b7835e069dcada96fb6c82efe.zip
* itdb_device.[ch]: rewrote ipod-device.c, removed all hal-code,
removed all code irrelevant to writing the iTunesDB and ArtworkDB. * autodetect iControl directory now also works for ArtworkDB. * db-artwork-parser.c (ipod_db_get_artwork_db_path): create Artwork directory if not already present. * itdb.h: Itdb_iTunesDB: moved mountpoint and musicdirs into private Itdb_Device. Use itdb_set_mountpoint() and itdb_get_mountpoint() to access the mountpoint. git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1220 f01d2545-417e-4e96-918e-98f8d0dbbcb6
Diffstat (limited to 'src/db-artwork-parser.c')
-rw-r--r--src/db-artwork-parser.c48
1 files changed, 34 insertions, 14 deletions
diff --git a/src/db-artwork-parser.c b/src/db-artwork-parser.c
index 8731050..0599b78 100644
--- a/src/db-artwork-parser.c
+++ b/src/db-artwork-parser.c
@@ -27,6 +27,8 @@
#endif
#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
#include "itdb.h"
#include "db-artwork-debug.h"
@@ -440,21 +442,38 @@ parse_mhfd (DBParseContext *ctx, Itdb_iTunesDB *db, GError **error)
G_GNUC_INTERNAL char *
ipod_db_get_artwork_db_path (const char *mount_point)
{
- gchar *filename;
- const char *paths[] = {"iPod_Control", "Artwork", "ArtworkDB", NULL};
- filename = itdb_resolve_path (mount_point, paths);
+ gchar *filename=NULL;
+
+ /* fail silently if no mount point given */
+ if (!mount_point) return NULL;
+
+ filename = itdb_get_artworkdb_path (mount_point);
/* itdb_resolve_path() only returns existing paths */
if (!filename)
{
- gchar *path;
- paths[2] = NULL;
- path = itdb_resolve_path (mount_point, (const char **)paths);
- if (path)
+ gchar *artwork_dir;
+
+ artwork_dir = itdb_get_artwork_dir (mount_point);
+ if (!artwork_dir)
+ {
+ /* attempt to create Artwork dir */
+ gchar *control_dir = itdb_get_control_dir (mount_point);
+ gchar *dir;
+ if (control_dir)
+ {
+ dir = g_build_filename (control_dir, "Artwork", NULL);
+ mkdir (dir, 0777);
+ g_free (dir);
+ g_free (control_dir);
+ }
+ }
+ if (artwork_dir)
{
- filename = g_build_filename (path, "ArtworkDB", NULL);
+ filename = g_build_filename (artwork_dir,
+ "ArtworkDB", NULL);
+ g_free (artwork_dir);
}
- g_free (path);
}
return filename;
@@ -471,15 +490,15 @@ ipod_db_get_photo_db_path (const char *mount_point)
}
static gboolean
-ipod_supports_cover_art (IpodDevice *ipod)
+ipod_supports_cover_art (Itdb_Device *device)
{
- const IpodArtworkFormat *formats;
+ const Itdb_ArtworkFormat *formats;
- if (ipod == NULL) {
+ if (device == NULL) {
return FALSE;
}
- g_object_get (G_OBJECT (ipod), "artwork-formats", &formats, NULL);
+ formats = itdb_device_get_artwork_formats (device);
if (formats == NULL) {
return FALSE;
}
@@ -502,12 +521,13 @@ ipod_parse_artwork_db (Itdb_iTunesDB *db)
char *filename;
g_return_val_if_fail (db, -1);
+ g_return_val_if_fail (db->device, -1);
if (!ipod_supports_cover_art (db->device)) {
return -1;
}
ctx = NULL;
- filename = ipod_db_get_artwork_db_path (db->mountpoint);
+ filename = ipod_db_get_artwork_db_path (itdb_get_mountpoint (db));
if (filename == NULL) {
goto error;
}