Exemplo n.º 1
0
//报告文件的类型
//fname:文件名
//返回值:0XFF,表示无法识别的文件类型编号.
//		 其他,高四位表示所属大类,低四位表示所属小类.
u8 f_typetell(u8 *fname)
{
	u8 tbuf[5];
	u8 *attr='\0';//后缀名
	u8 i=0,j;
	while(i<250)
	{
		i++;
		if(*fname=='\0')break;//偏移到了最后了.
		fname++;
	}
	if(i==250)return 0XFF;//错误的字符串.
 	for(i=0;i<5;i++)//得到后缀名
	{
		fname--;
		if(*fname=='.')
		{
			fname++;
			attr=fname;
			break;
		}
  	}
	strcpy((char *)tbuf,(const char*)attr);//copy
 	for(i=0;i<4;i++)tbuf[i]=char_upper(tbuf[i]);//全部变为大写 
	for(i=0;i<FILE_MAX_TYPE_NUM;i++)	//大类对比
	{
		for(j=0;j<FILE_MAX_SUBT_NUM;j++)//子类对比
		{
			if(*FILE_TYPE_TBL[i][j]==0)break;//此组已经没有可对比的成员了.
			if(strcmp((const char *)FILE_TYPE_TBL[i][j],(const char *)tbuf)==0)//找到了
			{
				return (i<<4)|j;
			}
		}
	}
	return 0XFF;//没找到		 			   
}	 
u8 f_typetell(u8 *fname)
{
    u8 tbuf[5];
    u8 *attr='\0';
    u8 i=0,j;
    while(i<250)
    {
        i++;
        if(*fname=='\0')break;
        fname++;
    }
    if(i==250)return 0XFF;
     for(i=0;i<5;i++)
    {
        fname--;
        if(*fname=='.')
        {
            fname++;
            attr=fname;
            break;
        }
      }
    strcpy((char *)tbuf,(const char*)attr);
     for(i=0;i<4;i++)tbuf[i]=char_upper(tbuf[i]);
    for(i=0;i<6;i++)
    {
        for(j=0;j<13;j++)
        {
            if(*FILE_TYPE_TBL[i][j]==0)break;
            if(strcmp((const char *)FILE_TYPE_TBL[i][j],(const char *)tbuf)==0)
            {
                return (i<<4)|j;
            }
        }
    }
    return 0XFF;
}