diff options
| author | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2006-03-16 15:34:34 +0000 |
|---|---|---|
| committer | Jorg Schuler <jcsjcs@users.sourceforge.net> | 2006-03-16 15:34:34 +0000 |
| commit | d3bab54a791fbc5b7835e069dcada96fb6c82efe (patch) | |
| tree | c5a18421b35013c3fcd1ac5dbe72daa649a30b2b /src/db-artwork-parser.c | |
| parent | 435acf166a4aeda13d14ce7818fa33f2b7855b4f (diff) | |
| download | libgpod-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.c | 48 |
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; } |
