void fmt_delete_hdlr(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr) { mmi_fmt_delete_req_strcut *msg_ptr; mmi_fmt_delete_rsp_strcut param_ptr; S32 fs_ret; msg_ptr = (mmi_fmt_delete_req_strcut *)local_para_ptr; if (msg_ptr->type == FS_RECURSIVE_TYPE) { fs_ret = FS_XDelete((WCHAR*)msg_ptr->path, FS_FILE_TYPE | FS_DIR_TYPE | FS_RECURSIVE_TYPE); } else if (msg_ptr->type == FS_DIR_TYPE) { if (FMGR_FILTER_IS_SET(((FMGR_FILTER*)(msg_ptr->filter)), FMGR_TYPE_ALL)) fs_ret = FS_XDelete ((WCHAR*)msg_ptr->path, FS_FILE_TYPE); else fs_ret = fmt_delete_by_filter_hdlr(msg_ptr->path, (FMGR_FILTER*)msg_ptr->filter); } else if (msg_ptr->type == FS_FILE_TYPE) { fs_ret = FS_Delete((WCHAR*)msg_ptr->path); } param_ptr.result = fs_ret; fmgr_delete_rsp_hdlr(¶m_ptr); return; }
MMI_BOOL srv_fmgr_types_filter_is_in_group(const FMGR_FILTER *filter, filetypes_group_type_enum group) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ S32 i, j; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ for(i=0;i<g_filetypes_group_range_table_size;i++) { if(g_filetypes_group_range_table[i].group_type == group) { for(j = g_filetypes_group_range_table[i].begin_id; j <= g_filetypes_group_range_table[i].end_id; j++) { if(FMGR_FILTER_IS_SET(filter, j)) return MMI_TRUE; } break; } } return MMI_FALSE; }
S32 fmt_delete_by_filter_hdlr(U8 *path, FMGR_FILTER *filter_mask) { FS_HANDLE handle; FS_DOSDirEntry file_info; U8 file_name[40]; S32 fs_ret; U8 i; pfnUnicodeStrcat((PS8)path, (PS8)L"*.*"); handle = FS_FindFirst((WCHAR *)path, 0, 0, &file_info, (WCHAR *)file_name, 40); if (handle < 0) return FS_NO_ERROR; mmi_fmgr_remove_last_dir((char*)path); fs_ret = FS_SetCurrentDir((WCHAR *)path); if (fs_ret < 0) return fs_ret; while (1) { for(i = 0 ; i < FMGR_MAX_FILTER_COUNT ; i++) { if( FMGR_FILTER_IS_SET(filter_mask, fmgr_filter[i].type) ) { if (strncmp((char *)file_info.Extension, (char *)fmgr_filter[i].ext, 3) == 0) { fs_ret = FS_Delete((WCHAR *)file_name); if (fs_ret < 0) return fs_ret; break; } } } fs_ret = FS_FindNext (handle, &file_info, (WCHAR *)file_name, 40); if (fs_ret < 0) break; } FS_FindClose (handle); return FS_NO_ERROR; }
filetypes_file_type_enum srv_fmgr_types_get_main_type(const FMGR_FILTER *filter) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ filetypes_file_type_enum type; S32 type_count, i; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ /* search from head, Treat DRM_ODF a special case */ type = FMGR_TYPE_UNKNOWN; type_count = 0; for(i=FMGR_TYPE_UNKNOWN+1; i<FMGR_TYPE_COUNT; i++) { if(FMGR_FILTER_IS_SET(filter, i)) { #ifdef __DRM_V02__ if(i != FMGR_TYPE_ODF) #endif type = (filetypes_file_type_enum)i; type_count++; } } #ifdef __DRM_V02__ FMGR_ASSERT(type_count <= 2); if(type == FMGR_TYPE_UNKNOWN && type_count > 0) type = FMGR_TYPE_ODF; #else FMGR_ASSERT(type_count <= 1); #endif return type; }