[amirus] Re: Bee (the first steps)

  • From: Alexey Ivanov <amis@xxxxxxxxxxxx>
  • To: amirus@xxxxxxxxxxxxx
  • Date: Mon, 11 Oct 2004 19:19:49 +0300

Hello Vladimir,

On 10.10.04, Vladimir Javorski wrote:

    
> первые шаги и первые грабли!
> не получается выделить биты защиты... см аттач

Фрагмент кода из VisualGuide распечатывающий флаги. На входе LONG из FIB. На 
выходе
указатель на строку...  В твоём случае 6нужно делать немного подругому но 
принцып надеюсь
те понятен.

STRPTR UnpackProtection(LONG protection)
{
    extern char buf_protection[12];
    
    sprintf(&buf_protection[0], "%s%s%s%s%s%s%s%s  ",
        (protection&(1<<7))?"h":"-",
        (protection&(FIBF_SCRIPT))?"s":"-",    /* program is a script (execute) 
file */
        (protection&(FIBF_PURE))?"p":"-",            /* program is reentrant 
and rexecutable */
        (protection&(FIBF_ARCHIVE))?"a":"-",/* cleared whenever file is changed 
*/
        (protection&(FIBF_READ))?"-":"r",        /* ignored by old filesystem */
        (protection&(FIBF_WRITE))?"-":"w",     /* ignored by old filesystem */
        (protection&(FIBF_EXECUTE))?"-":"e",/* ignored by system, used by Shell 
*/
        (protection&(FIBF_DELETE))?"-":"d");/* prevent file from being deleted 
*/

    return (&buf_protection[0]);        

Вот ещё один полезный фрагментик позволяющиё определить какого типа мы имеем 
запись.

                    switch(fib.fib_DirEntryType)
                    {
                        case ST_FILE:
                        break;
                        case ST_USERDIR:
                        break;
                        case ST_SOFTLINK:
                        break;
                        case ST_LINKDIR:
                        break;
                        case ST_LINKFILE:
                        break;
                        case ST_ROLLOVERFILE:
                        break;
                        default:
                        break;
                    }
    
Это все типы файлов что поддержаны в системе и в PFS... поскипал все что внутри 
case...
если какие ещё типы узнаешь напиши plz.

Пробежка по каталогу делается с помощью while(ExNext())...  ExAll() 
использовать не рекомендую из-за
того что она не во всех файловых системах работает... 

Regards


Other related posts: