Пример #1
0
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(&param_ptr);
   return;
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
}