Revision: 374
http://svn.sourceforge.net/pmplib/?rev=374&view=rev
Author: nyaochi
Date: 2007-02-17 23:34:57 -0800 (Sat, 17 Feb 2007)
Log Message:
-----------
Fixed the bug of database dump in pmp_iriverplus2.
Modified Paths:
--------------
trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c
Modified: trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c
===================================================================
--- trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-02-18 07:06:16 UTC (rev 373)
+++ trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-02-18 07:34:57 UTC (rev 374)
@@ -97,7 +97,6 @@
} pmp_internal_t;
typedef struct {
- ip2db_t ip2db;
pmp_music_record_t* records;
int num_records;
pmp_playlist_t* playlists;
@@ -480,12 +479,13 @@
static uint32_t pmpmusic_open(pmp_music_t* music)
{
+ ip2db_t ip2db;
result_t ret = 0;
pmp_t* pmp = music->pmp;
pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance;
// Initialize IP2DB.
- ip2db_init(&pmpmi->ip2db);
+ ip2db_init(&ip2db);
// Free the existing records.
pmplib_records_finish(pmpmi->records, pmpmi->num_records);
@@ -499,13 +499,13 @@
// Read the music database.
set_filenames(sys, dat, idx, pmp);
- ret = ip2db_read(&pmpmi->ip2db, dat, idx);
+ ret = ip2db_read(&ip2db, dat, idx);
if (ret) {
goto exit_this;
}
// Obtain the number of records.
- ret = ip2db_get(&pmpmi->ip2db, NULL, &pmpmi->num_records, pmp->info.path_to_root);
+ ret = ip2db_get(&ip2db, NULL, &pmpmi->num_records, pmp->info.path_to_root);
if (ret) {
goto exit_this;
}
@@ -517,7 +517,7 @@
goto exit_this;
}
- ret = ip2db_get(&pmpmi->ip2db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root);
+ ret = ip2db_get(&ip2db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root);
if (ret) {
goto exit_this;
}
@@ -525,27 +525,28 @@
exit_this:
// Finish the IP2DB.
- ip2db_finish(&pmpmi->ip2db);
+ ip2db_finish(&ip2db);
return ret;
}
static uint32_t pmpmusic_close(pmp_music_t* music)
{
+ ip2db_t ip2db;
result_t ret = 0;
pmp_t* pmp = music->pmp;
pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance;
static const ucs2char_t plp_ext[] = {'.','p','l','p',0};
// Initialize IP2DB.
- ip2db_init(&pmpmi->ip2db);
+ ip2db_init(&ip2db);
if (pmp->flag & PMPOF_MUSIC_DB_WRITE) {
ucs2char_t sys[MAX_PATH], dat[MAX_PATH], idx[MAX_PATH];
- ip2db_set(&pmpmi->ip2db, pmpmi->records, pmpmi->num_records, pmp->info.path_to_root);
+ ip2db_set(&ip2db, pmpmi->records, pmpmi->num_records, pmp->info.path_to_root);
set_filenames(sys, dat, idx, pmp);
- ret = ip2db_write(&pmpmi->ip2db, dat, idx);
+ ret = ip2db_write(&ip2db, dat, idx);
if (ret) {
goto exit_this;
}
@@ -557,7 +558,7 @@
for (i = 0;i < pmpmi->num_playlists;++i) {
const pmp_playlist_t* pl = &pmpmi->playlists[i];
if (ip2db_playlist_write(
- &pmpmi->ip2db,
+ &ip2db,
pl->name,
pl->entries,
pl->num_entries,
@@ -573,7 +574,7 @@
exit_this:
// Finish the IP2DB.
- ip2db_finish(&pmpmi->ip2db);
+ ip2db_finish(&ip2db);
return ret;
}
@@ -611,12 +612,33 @@
static result_t pmpmusic_dump(pmp_music_t* music, FILE *fp, int level)
{
- pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance;
+ ip2db_t ip2db;
+ result_t ret = 0;
+ ucs2char_t sys[MAX_PATH], dat[MAX_PATH], idx[MAX_PATH];
+
+ // Initialize IP2DB.
+ ip2db_init(&ip2db);
+
+ // Read the music database.
+ set_filenames(sys, dat, idx, music->pmp);
+ ret = ip2db_read(&ip2db, dat, idx);
+ if (ret) {
+ goto exit_this;
+ }
+
if (level > 0) {
- return ip2db_repr(&pmpmi->ip2db, fp);
+ ret = ip2db_repr(&ip2db, fp);
} else {
- return ip2db_dump(&pmpmi->ip2db, fp);
+ ret = ip2db_dump(&ip2db, fp);
}
+ if (ret) {
+ goto exit_this;
+ }
+
+exit_this:
+ // Finish the IP2DB.
+ ip2db_finish(&ip2db);
+ return ret;
}
static result_t pmpmusic_set_playlists(pmp_music_t* music, const pmp_playlist_t* playlists, uint32_t num_playlists)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|