<?php
 
    define('ISO_LIB_PATH', '/data/ftp/autre/php_iso_lib/classes/');
 
 
    include_once (ISO_LIB_PATH . 'iso_includes.php');
 
 
    system('clear');
 
 
    function EchoFDD(&$fileDirDesc, $tab)
 
    {
 
        if(!$fileDirDesc->IsDirectory())
 
            return;
 
 
        global $isoFile;
 
        global $usedDesc;
 
 
        $tab_str = '';
 
        for($i = 0 ; $i < $tab ; $i++)
 
            $tab_str .= "\t";
 
 
        $extents = $fileDirDesc->LoadExtents($isoFile, $usedDesc->iBlockSize, true);
 
        if($extents)
 
        {
 
            foreach($extents as $extent)
 
            {
 
                if(!$extent->IsThis() && !$extent->IsParent())
 
                {
 
                    if($extent->IsDirectory() === true)
 
                    {
 
                        echo $tab_str . '* ' . $extent->strd_FileId . "\n";
 
                        EchoFDD($extent, $tab + 1);
 
                    }
 
                    else
 
                    {
 
                        echo $tab_str . $extent->strd_FileId . "\n";
 
                    }
 
                }
 
            }
 
        }
 
    }
 
    function EchoPT(&$ptRec, $tab)
 
    {
 
        global $isoFile;
 
        global $usedDesc;
 
 
        $tab_str = '';
 
        for($i = 0 ; $i < $tab ; $i++)
 
            $tab_str .= "\t";
 
 
        echo $tab_str . $ptRec->strd_DirId . "\n";
 
        $tab_str .= "\t";
 
 
        $extents = $ptRec->LoadExtents($isoFile, $usedDesc->iBlockSize, true);
 
        if($extents)
 
        {
 
            foreach($extents as $extent)
 
            {
 
                if(!$extent->IsThis() && !$extent->IsParent())
 
                {
 
                    if($extent->IsDirectory() === true)
 
                    {
 
                        echo $tab_str . '* ' . $extent->strd_FileId . "\n";
 
                        EchoFDD($extent, $tab + 1);
 
                    }
 
                    else
 
                    {
 
                        echo $tab_str . $extent->strd_FileId . "\n";
 
                    }
 
                }
 
            }
 
        }
 
    }
 
 
    $isoFile = new CISOFile();
 
    if(!$isoFile->Open('../isos/debian-live-6.0.1-i386-kde-desktop.iso') || !$isoFile->ISOInit())
 
    {
 
        die('Une erreur est survenue lors de l\'ouverture du fichier ISO...' . "\n");
 
    }
 
    else
 
    {
 
        $usedDesc = $isoFile->GetDescriptor(SUPPLEMENTARY_VOLUME_DESC);
 
        if(!$usedDesc) {
 
 
            $usedDesc = $isoFile->GetDescriptor(PRIMARY_VOLUME_DESC);
 
            if(!$usedDesc) {
 
 
                die('Pas de "Primary" ou "supplementary" descriptor trouvés...' . "\n");
 
            }
 
        }
 
 
        echo 'Affichage en liste (l, défaut) ou en arbre (a): ';
 
        $sel = trim(strtolower(fgets(STDIN)));
 
        if($sel == 'a')
 
        {
 
            $pathTable = $usedDesc->LoadMPathTable($isoFile);
 
            foreach($pathTable as $ptRec)
 
            {
 
                if($ptRec->ParentDirNum == 1)
 
                {
 
                    EchoPT($ptRec, 0);
 
                }
 
            }
 
        }
 
        else
 
        {
 
            $pathTable = $usedDesc->LoadMPathTable($isoFile);
 
            foreach($pathTable as $ptRec)
 
            {
 
                $fPath = $ptRec->GetFullPath($pathTable, $dbg);
 
                echo 'Nom: ' . $ptRec->strd_DirId . "\n";
 
                echo "\t" . 'Chemin: ' . $fPath . "\n";
 
                echo "\t" . 'Position: ' . $ptRec->Location . ' (LBA)' . "\n";
 
                echo "\t" . 'Étendu: ' . $ptRec->ExtAttrLen . ' (LBA)' . "\n";
 
            }
 
        }
 
 
    }
 
?>
 
 |