⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileutil.c

📁 NUcleus plus 支持的文件系统。 是学习文件系统的很好参考资料。
💻 C
📖 第 1 页 / 共 5 页
字号:
}


/************************************************************************
* FUNCTION                                                              
*                                                                       
*       pc_usewdcard                                                    
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       Check the use wild card.                                        
*                                                                       
* AUTHOR                                                                
*                                                                       
*       Kyoichiro Toda
*                                                                       
* INPUTS                                                                
*                                                                       
*       code                                name                        
*                                                                       
* OUTPUTS                                                               
*                                                                       
*       YES                                 Use the wild card.          
*       NO                                  Not use the wild card.      
*                                                                       
*************************************************************************/
INT pc_use_wdcard(UINT8 *code)
{

    while (*code)
    {
        if ( (*code == '*') || (*code == '?') )
            return(YES);
        code++;
    }
    return(NO);
}


/************************************************************************
* FUNCTION                                                              
*                                                                       
*       pc_use_upperbar                                                 
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       Check the use upperbar name.                                    
*       ' '(space), '.'(period), '=', '[', ']', ';', ':', '+', ','      
*                                                                       
* AUTHOR                                                                
*                                                                       
*       Kyoichiro Toda
*                                                                       
* INPUTS                                                                
*                                                                       
*       code                        File name or File extension         
*                                                                       
* OUTPUTS                                                               
*                                                                       
*       YES                                 Use the upperbar name.      
*       NO                                  Not use the upperbar name.  
*                                                                       
*************************************************************************/
INT pc_use_upperbar(UINT8 *code)
{
UINT16      n, j;
UINT16      period = 0;


    n = j = 0;

    while (*code)
    {
        switch (*code)
        {
        case ' ':
        case '=':
        case '[':
        case ']':
        case ';':
        case '+':
        case ',':
            return(YES);

        case '.':
        {
            /* filename.... or extension..... */
            if (*(code+1) == '\0')
            {
                period = j = 0;
            }
            else
            {
                period++;
            }
            break;
        }
        default:
            break;
        }

        /* Check the number of extension */
        if (period)
        {
            if (j++ > 3)
                return(YES);
        }
        /* Check the number of filename */
        else
        {
            n++;
            if (n > 8)
                return(YES);
        }
        code++;
    }

    /* Another differentiate filename and extension ? */
    if (period > 1)
        return(YES);

    return(NO);
}


/************************************************************************
* FUNCTION                                                              
*                                                                       
*       pc_checkpath                                                    
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       Check the path name or Volume lable.                            
*                                                                       
* AUTHOR                                                                
*                                                                       
*       Kyoichiro Toda
*                                                                       
* INPUTS                                                                
*                                                                       
*       code                                Path name or Volume lable.  
*       vol                                 YES : Volume lable          
*                                           NO  : Path name             
*                                                                       
* OUTPUTS                                                               
*                                                                       
*       YES                                 Success.                    
*       NO                                  Path name error.            
*                                                                       
*************************************************************************/
INT pc_checkpath(UINT8 *code, INT vol)
{
UINT16      n = 0;


    if (!code)
        return(YES);

    while (code[n])
    {
        if ( (code[n] < 0x20) || (code[n] > 0x7E) )
            return(NO);

        if (!vol)
        {
            if (code[n] == ':')
            {
                if ( (n != 1) || (code[n+1] != '\\') )
                    return(NO);
            }

            if (code[n] == '\\')
            {
                if (code[n+1] == '\\')
                    return(NO);
            }
        }
        else
        {
            switch (code[n])
            {
            case '.':
            case ':':
            case '=':
            case '[':
            case '\\':
            case ']':
                return(NO);

            default:
                break;
            }
        }

        switch (code[n])
        {
        case '"':
        case '*':
        case ',':
        case '/':
        case ';':
        case '<':
        case '>':
        case '?':
        case '|':
            return(NO);

        default:
            break;
        }

        n++;
    }

    return(YES);
}


/************************************************************************
* FUNCTION                                                              
*                                                                       
*       _swap16                                                         
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       Convert a 16 bit intel item to a portable 16 bit.               
*                                                                       
* AUTHOR                                                                
*                                                                       
*       Takahiro Takahashi
*                                                                       
* INPUTS                                                                
*                                                                       
*       *to                                 After Convert data.         
*       *from                               Before Convert data.        
*                                                                       
* OUTPUTS                                                               
*                                                                       
*       None.                                                           
*                                                                       
*************************************************************************/
VOID _swap16(UINT16 *to, UINT16 *from)
{
UINT8       *fptr;
UINT8       *tptr;


    fptr = (UINT8 *)from;
    tptr = (UINT8 *)to;

    *tptr = *(fptr + 1);
    *(tptr + 1) = *(fptr);
}


/************************************************************************
* FUNCTION                                                              
*                                                                       
*       _swap32                                                         
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       Convert a 32 bit intel item to a portable 32 bit.               
*                                                                       
* AUTHOR                                                                
*                                                                       
*       Takahiro Takahashi
*                                                                       
* INPUTS                                                                
*                                                                       
*       *to                                 After Convert data.         
*       *from                               Before Convert data.        
*                                                                       
* OUTPUTS                                                               
*                                                                       
*       None.                                                           
*                                                                       
*************************************************************************/
VOID _swap32(UINT32 *to, UINT32 *from)
{
UINT8       *fptr;
UINT8       *tptr;


    fptr = (UINT8 *)from;
    tptr = (UINT8 *)to;

    *tptr = *(fptr + 3);
    *(tptr + 1) = *(fptr + 2);
    *(tptr + 2) = *(fptr + 1);
    *(tptr + 3) = *(fptr);

}


/************************************************************************
* FUNCTION                                                              
*                                                                       
*       _through16                                                      
*                                                                       
* DESCRIPTION                                                           
*                                                                       
*       16bit data byte through                                         
*                                                                       
* AUTHOR                                                                
*                                                                       
*       Kyoichiro Toda
*                                                                       
*                                                                       
* INPUTS                                                                
*                                                                       
*       *to                                 After Convert data.         
*       *from                               Before Convert data.        
*                                                                       
* OUTPUTS                                                               
*                                                                       
*       None.                                                     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -