$startElement = fread($archiveHandle, 3); if ($startElement === false) { if (feof($archiveHandle)) { return false; } else { throw new Exception('Error reading directory header'); } } if ($startElement != '') { throw new Exception("Invalid directory header marker found [{$startElement}] : location " . ftell($archiveHandle)); } } $instance->mtime = DupArchiveHeaderU::readStandardHeaderField($archiveHandle, 'MT'); $instance->permissions = DupArchiveHeaderU::readStandardHeaderField($archiveHandle, 'P'); $instance->relativePathLength = DupArchiveHeaderU::readStandardHeaderField($archiveHandle, 'RPL'); // Skip the fread($archiveHandle, 4); $instance->relativePath = fread($archiveHandle, $instance->relativePathLength); // Skip the // fread($archiveHandle, 5); // Skip the // fread($archiveHandle, 4); // Skip the and the fread($archiveHandle, 9); return $instance; } }