From: <ny...@us...> - 2007-02-18 07:34:58
|
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. |