From: <ny...@us...> - 2007-02-10 17:34:16
|
Revision: 327 http://svn.sourceforge.net/pmplib/?rev=327&view=rev Author: nyaochi Date: 2007-02-10 09:34:14 -0800 (Sat, 10 Feb 2007) Log Message: ----------- Fix update mode for all driver modules. Modified Paths: -------------- trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c Modified: trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c =================================================================== --- trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-02-10 17:34:14 UTC (rev 327) @@ -484,6 +484,9 @@ pmp_t* pmp = music->pmp; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize IP2DB. + ip2db_init(&pmpmi->ip2db); + // Free the existing records. pmplib_records_finish(pmpmi->records, pmpmi->num_records); pmpmi->records = 0; @@ -494,40 +497,36 @@ ucs2char_t sys[MAX_PATH], dat[MAX_PATH], idx[MAX_PATH]; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)pmp->music->instance; - // Initialize IP2DB. - ip2db_init(&pmpmi->ip2db); - // Read the music database. set_filenames(sys, dat, idx, pmp); ret = ip2db_read(&pmpmi->ip2db, dat, idx); if (ret) { - return ret; + goto exit_this; } // Obtain the number of records. ret = ip2db_get(&pmpmi->ip2db, NULL, &pmpmi->num_records, pmp->info.path_to_root); if (ret) { - return ret; + goto exit_this; } // Allocate record array. pmpmi->records = (pmp_music_record_t*)malloc(sizeof(pmp_music_record_t) * pmpmi->num_records); if (!pmpmi->records) { - return PMPERR_INSUFFICIENTMEMORY; + ret = PMPERR_INSUFFICIENTMEMORY; + goto exit_this; } ret = ip2db_get(&pmpmi->ip2db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root); if (ret) { - return ret; + goto exit_this; } - - // Finish the IP2DB. - ip2db_finish(&pmpmi->ip2db); - - return ret; } - return 0; +exit_this: + // Finish the IP2DB. + ip2db_finish(&pmpmi->ip2db); + return ret; } static uint32_t pmpmusic_close(pmp_music_t* music) @@ -537,18 +536,18 @@ 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); + if (pmp->flag & PMPOF_MUSIC_DB_WRITE) { ucs2char_t sys[MAX_PATH], dat[MAX_PATH], idx[MAX_PATH]; - // Initialize IP2DB. - ip2db_init(&pmpmi->ip2db); - ip2db_set(&pmpmi->ip2db, pmpmi->records, pmpmi->num_records, pmp->info.path_to_root); set_filenames(sys, dat, idx, pmp); ret = ip2db_write(&pmpmi->ip2db, dat, idx); if (ret) { - return ret; + goto exit_this; } } @@ -566,14 +565,15 @@ pmp->info.path_to_playlist, plp_ext ) != 0) { - return PMPERR_WRITE; + ret = PMPERR_WRITE; + goto exit_this; } } } +exit_this: // Finish the IP2DB. ip2db_finish(&pmpmi->ip2db); - return ret; } Modified: trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c =================================================================== --- trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c 2007-02-10 17:34:14 UTC (rev 327) @@ -448,7 +448,6 @@ free(music); return PMPERR_INSUFFICIENTMEMORY; } - ip3db_init(&pmpmi->ip3db); music->set_records = pmpmusic_set_records; music->get_records = pmpmusic_get_records; @@ -467,7 +466,6 @@ static uint32_t pmpmusic_release(pmp_music_t* music) { pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; - ip3db_finish(&pmpmi->ip3db); pmplib_records_finish(pmpmi->records, pmpmi->num_records); free(pmpmi->playlists); free(pmpmi); @@ -481,6 +479,9 @@ pmp_t* pmp = music->pmp; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize IP3DB. + ip3db_init(&pmpmi->ip3db); + // Free the existing records. pmplib_records_finish(pmpmi->records, pmpmi->num_records); pmpmi->records = 0; @@ -496,7 +497,7 @@ set_filenames(dat, dic, idx, pmp); ret = ip3db_read(&pmpmi->ip3db, dat, dic, idx); if (ret) { - return ret; + goto exit_this; } // The number of music records. @@ -546,7 +547,9 @@ } } - return 0; +exit_this: + ip3db_finish(&pmpmi->ip3db); + return ret; } static uint32_t pmpmusic_close(pmp_music_t* music) @@ -555,6 +558,9 @@ pmp_t* pmp = music->pmp; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize IP3DB. + ip3db_init(&pmpmi->ip3db); + if (pmp->flag & PMPOF_MUSIC_DB_WRITE) { int i; ucs2char_t dat[MAX_PATH], dic[MAX_PATH], idx[MAX_PATH]; @@ -615,7 +621,8 @@ free(records); } - return 0; + ip3db_finish(&pmpmi->ip3db); + return ret; } static ucs2char_t* _filepath_removeslash(ucs2char_t* path) Modified: trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c =================================================================== --- trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c 2007-02-10 17:34:14 UTC (rev 327) @@ -318,7 +318,6 @@ free(music); return PMPERR_INSUFFICIENTMEMORY; } - irivnavi_init(&pmpmi->db); music->set_records = pmpmusic_set_records; music->get_records = pmpmusic_get_records; @@ -334,7 +333,6 @@ static uint32_t pmpmusic_release(pmp_music_t* music) { pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; - irivnavi_finish(&pmpmi->db); pmplib_records_finish(pmpmi->records, pmpmi->num_records); free(pmpmi->playlists); free(pmpmi); @@ -356,6 +354,8 @@ static const ucs2char_t ucs2cs_wma[] = {'.','w','m','a',0}; static const ucs2char_t ucs2cs_wav[] = {'.','w','a','v',0}; + irivnavi_init(&pmpmi->db); + if (music->pmp->flag & PMPOF_MUSIC_DB_READ) { // Open a database file in the root directory. ucs2cpy(filename, music->pmp->info.path_to_root); @@ -438,11 +438,13 @@ ++j; } } + irivnavi_finish(&pmpmi->db); return 0; error_exit: free(buffer); if (fp) fclose(fp); + irivnavi_finish(&pmpmi->db); return ret; } @@ -457,6 +459,8 @@ static const ucs2char_t ucs2cs_unknown[] = {'u','n','k','n','o','w','n',0}; static const ucs2char_t m3u_ext[] = {'.','m','3','u',0}; + irivnavi_init(&pmpmi->db); + if (music->pmp->flag & PMPOF_MUSIC_DB_WRITE) { // Clear the database. irivnavi_finish(&pmpmi->db); @@ -464,7 +468,8 @@ // Initialize the record array. if (irivnavi_init_records(&pmpmi->db, pmpmi->num_records) != 0) { - return PMPERR_INSUFFICIENTMEMORY; + ret = PMPERR_INSUFFICIENTMEMORY; + goto error_exit; } // Convert records from pmp_music_record_t to ip2db_record_t. @@ -493,7 +498,8 @@ filepath_removefile(filename); fp = ucs2fopen(filename, "wb"); if (!fp) { - return PMPERR_OPENFORREAD; + ret = PMPERR_OPENFORREAD; + goto error_exit; } irivnavi_update(&pmpmi->db); @@ -544,11 +550,13 @@ } } + irivnavi_finish(&pmpmi->db); return 0; error_exit: free(buffer); if (fp) fclose(fp); + irivnavi_finish(&pmpmi->db); return ret; } Modified: trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-10 17:34:14 UTC (rev 327) @@ -592,7 +592,6 @@ free(music); return PMPERR_INSUFFICIENTMEMORY; } - pp1db_init(&pmpmi->pp1db, pmpi->decl->hdr_initproc); music->set_records = pmpmusic_set_records; music->get_records = pmpmusic_get_records; @@ -611,7 +610,6 @@ static uint32_t pmpmusic_release(pmp_music_t* music) { pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; - pp1db_finish(&pmpmi->pp1db); pmplib_records_finish(pmpmi->records, pmpmi->num_records); free(pmpmi->playlists); free(pmpmi); @@ -623,8 +621,12 @@ { result_t ret = 0; pmp_t* pmp = music->pmp; + pmp_internal_t* pmpi = (pmp_internal_t*)pmp->instance; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize PP1DB. + pp1db_init(&pmpmi->pp1db, pmpi->decl->hdr_initproc); + // Free the existing records. pmplib_records_finish(pmpmi->records, pmpmi->num_records); pmpmi->records = 0; @@ -639,34 +641,45 @@ set_filenames(hdr, pmp); ret = pp1db_read(&pmpmi->pp1db, hdr); if (ret) { - return ret; + goto exit_this; } // Obtain the number of records. ret = pp1db_get(&pmpmi->pp1db, NULL, &pmpmi->num_records, pmp->info.path_to_root); if (ret) { - return ret; + goto exit_this; } // Allocate record array. pmpmi->records = (pmp_music_record_t*)malloc(sizeof(pmp_music_record_t) * pmpmi->num_records); if (!pmpmi->records) { - return PMPERR_INSUFFICIENTMEMORY; + ret = PMPERR_INSUFFICIENTMEMORY; + goto exit_this; } - return pp1db_get(&pmpmi->pp1db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root); + ret = pp1db_get(&pmpmi->pp1db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root); + if (ret) { + goto exit_this; + } + } - return 0; +exit_this: + pp1db_finish(&pmpmi->pp1db); + return ret; } static uint32_t pmpmusic_close(pmp_music_t* music) { result_t ret = 0; pmp_t* pmp = music->pmp; + pmp_internal_t* pmpi = (pmp_internal_t*)pmp->instance; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; static const ucs2char_t plp_ext[] = {'.','p','l','p',0}; + // Initialize PP1DB. + pp1db_init(&pmpmi->pp1db, pmpi->decl->hdr_initproc); + if (pmp->flag & PMPOF_MUSIC_DB_WRITE) { ucs2char_t hdr[MAX_PATH]; @@ -675,7 +688,7 @@ set_filenames(hdr, pmp); ret = pp1db_write(&pmpmi->pp1db, hdr); if (ret) { - return ret; + goto exit_this; } } @@ -693,11 +706,15 @@ pmp->info.path_to_playlist, plp_ext ) != 0) { - return PMPERR_WRITE; + pp1db_finish(&pmpmi->pp1db); + ret = PMPERR_WRITE; + goto exit_this; } } } +exit_this: + pp1db_finish(&pmpmi->pp1db); return ret; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |