在修改了BOOKMARK NVRAM后,如何不格式化手机更新成新的预置书签

来源:互联网 发布:万达电商 淘宝卖 编辑:程序博客网 时间:2024/04/24 18:16
请增加和修改下面函数。 
//add 
void srv_brw_bookmark_delete_all_default_files(U8 *selected_folder_path) 

 /*----------------------------------------------------------------*/ 
 /* Local Variables */ 
 /*----------------------------------------------------------------*/ 
 FS_HANDLE handle; 
 FS_DOSDirEntry file_info; 
 U8 filename[(SRV_BRW_BKM_MAX_FILE_NAME_LEN + 1) * ENCODING_LENGTH]; 
 U8 *pattern; 
 U8 *file_path; 
 FS_Pattern_Struct TestArray[1]; 
 S32 error_code; 
 U8 num_of_patterns; 
 /*----------------------------------------------------------------*/ 
 /* Code Body */ 
 /*----------------------------------------------------------------*/ 
 num_of_patterns = 1; 
 pattern = (U8*) OslMalloc((SRV_BRW_BKM_MAX_PATH_LEN + 1) * ENCODING_LENGTH); 
 memset(pattern, 0, (SRV_BRW_BKM_MAX_PATH_LEN + 1) * ENCODING_LENGTH); 
 file_path = (U8*) OslMalloc((SRV_BRW_BKM_MAX_PATH_LEN + 1) * ENCODING_LENGTH); 
 memset(file_path, 0, (SRV_BRW_BKM_MAX_PATH_LEN + 1) * ENCODING_LENGTH); 
 mmi_ucs2cpy((S8*) pattern, (S8*) selected_folder_path); 
 mmi_ucs2cat((S8*) pattern, (S8*) L"\\*"); 
 kal_wstrcpy(TestArray[0].Pattern, SRV_BRW_BKM_FILE_SEARCH_PATTERN_DFT); 
 if ((handle = FS_FindFirstN( 
 (UI_string_type) pattern, 
 TestArray, 
 num_of_patterns, 
 0, 
 0, 
 0, 
 &file_info, 
 (U16*) filename, 
 (SRV_BRW_BKM_MAX_FILE_NAME_LEN + 1) * ENCODING_LENGTH, 
 0, 
 0)) >= 0) 
 { 
 do 
 { 
 mmi_ucs2cpy((S8*) file_path, (S8*) selected_folder_path); 
 mmi_ucs2cat((S8*) file_path, (S8*) L"\\"); 
 mmi_ucs2cat((S8*) file_path, (S8*) filename); 
 error_code = FS_Delete((UI_string_type) file_path); 
 } while ((FS_FindNextN( 
 handle, 
 TestArray, 
 num_of_patterns, 
 0, 
 &file_info, 
 (UI_string_type) filename, 
 (SRV_BRW_BKM_MAX_FILE_NAME_LEN + 1) * ENCODING_LENGTH, 
 0) >= 0)); 
 FS_FindClose(handle); 
 } 
 OslMfree(pattern); 
 OslMfree(file_path); 

//add 
void createDefaultBkm() 

 U8 index; 
 FS_HANDLE file_handle; 
 U16 record_count; 
 S16 NvramError; 
 S32 error_code; 
 srv_brw_default_bookmark_struct *def_bkm_data; 
 nvram_wap_bookmark_struct* def_bkms_list; 
 def_bkm_data = (srv_brw_default_bookmark_struct*)
OslMalloc(sizeof(srv_brw_default_bookmark_struct)); 
 memset(def_bkm_data, 0, sizeof(srv_brw_default_bookmark_struct)); 
 def_bkms_list = (nvram_wap_bookmark_struct*) OslMalloc(NVRAM_WAP_BOOKMARK_MAX_ENTRY_IN_ONE_RECORD *
sizeof(nvram_wap_bookmark_struct)); 
 /*Reading default bookmarks from NVRAM*/ 
 for (record_count = 1; record_count <= NVRAM_EF_WAP_BOOKMARK_LIST_TOTAL_RECORDS; record_count++) 
 { 
 memset(def_bkms_list, 0, NVRAM_WAP_BOOKMARK_MAX_ENTRY_IN_ONE_RECORD *
sizeof(nvram_wap_bookmark_struct)); 
 ReadRecord( 
 NVRAM_EF_WAP_BOOKMARK_LIST_LID, 
 record_count, 
 def_bkms_list, 
 NVRAM_EF_WAP_BOOKMARK_LIST_SIZE, 
 &NvramError); 
 /* create bookmark file for each available URL */ 
 for (index = 0; index < NVRAM_WAP_BOOKMARK_MAX_ENTRY_IN_ONE_RECORD; index++) 
 { 
 if (!def_bkms_list[index].empty) 
 { 
 if(def_bkms_list[index].dcs_flag == 0) 
 { 
 if (mmi_chset_utf8_strlen((U8*)def_bkms_list[index].title) >
SRV_BRW_BKM_MAX_INPUT_FILE_NAME_LEN) 
 { 
 continue; 
 } 
 else 
 { 
 mmi_chset_utf8_to_ucs2_string( 
 (U8*) def_bkm_data->title, 
 (SRV_BRW_BKM_MAX_INPUT_FILE_NAME_LEN + 1) * ENCODING_LENGTH, 
 (U8*) def_bkms_list[index].title); 
 } 
 } 
 else if (def_bkms_list[index].dcs_flag == 1) 
 { 
 if (mmi_ucs2strlen((S8*)def_bkms_list[index].title) >
SRV_BRW_BKM_MAX_INPUT_FILE_NAME_LEN) 
 { 
 continue; 
 } 
 else 
 { 
 mmi_ucs2ncpy((S8*)def_bkm_data->title, (S8*) def_bkms_list[index].title,
SRV_BRW_BKM_MAX_INPUT_FILE_NAME_LEN + 1); 
 } 
 } 
 mmi_asc_to_ucs2((S8*) def_bkm_data->url, (S8*) def_bkms_list[index].url); 
 srv_brw_bookmarks_create_full_file_path((S8*) g_srv_brw_cntx.default_folder_path, 
 (S8*) def_bkm_data->title, 
 (S8*) SRV_BRW_BKM_FILE_EXTN_DFT_STRING, 
 (S8*) def_bkm_data->file_path); 
 file_handle = FS_Open((UI_string_type) def_bkm_data->file_path, FS_READ_ONLY); 
 if (file_handle < 0) 
 { 
 file_handle = FS_Open((UI_string_type) def_bkm_data->file_path, FS_READ_WRITE |
FS_CREATE); 
 if (file_handle >= 0) 
 { 
 if (mmi_vbkm_writer_convert_file_to_internal_format(file_handle, def_bkm_data->url) == FS_NO_ERROR) 
 { 
 FS_Close(file_handle); 
 } 
 else 
 { 
 FS_Close(file_handle); 
 FS_Delete((UI_string_type) def_bkm_data->file_path); 
 } 
 } 
 } 
 else 
 { 
 FS_Close(file_handle); 
 } 
 } 
 } 
 } 
 OslMfree(def_bkm_data); 
 OslMfree(def_bkms_list); 

//modify 
void srv_brw_bookmarks_create_default_bkms(void) 

#ifdef BRW_DEFAULT_BKM_SUPPORT 
 /*----------------------------------------------------------------*/ 
 /* Local Variables */ 
 /*----------------------------------------------------------------*/ 
 U8 index; 
 FS_HANDLE file_handle; 
 U16 record_count; 
 S16 NvramError; 
 S32 error_code; 
 srv_brw_default_bookmark_struct *def_bkm_data; 
 nvram_wap_bookmark_struct* def_bkms_list; 
 WCHAR *folder_path; 
 /*----------------------------------------------------------------*/ 
 /* Code Body */ 
 /*----------------------------------------------------------------*/ 
 /* create bookmark folder if it is not being created */ 
 folder_path = (WCHAR*)OslMalloc((mmi_ucs2strlen((S8*) g_srv_brw_cntx.default_folder_path) + 1) *
ENCODING_LENGTH); 
 mmi_ucs2cpy((S8*) folder_path, (S8*) g_srv_brw_cntx.default_folder_path); 
 file_handle = FS_Open((const WCHAR*) folder_path, FS_READ_ONLY | FS_OPEN_DIR); 
 if (file_handle >= FS_NO_ERROR) 
 { 
 FS_Close(file_handle); 
 srv_brw_bookmark_delete_all_default_files(folder_path);//lzt 
 createDefaultBkm();//lzt 
 OslMfree(folder_path); 
 return; /* don't re-create default bookmarks if already done once */ 
 } 
 else 
 { 
 error_code = FS_CreateDir((const WCHAR*) folder_path); 
 } 
 OslMfree(folder_path);---------------------- 
…. 

 针对09B V02版本: 
 解法类似,对应的接口为: mmi_brw_bookmarks_create_default_bkms