晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/alt-php55/root/usr/share/pear/ezc/Archive/tar/headers/ |
| Current File : //opt/cloudlinux/alt-php55/root/usr/share/pear/ezc/Archive/tar/headers/pax.php |
<?php
/**
* File contains the ezcArchivePaxHeader class.
*
* @package Archive
* @version 1.4.1
* @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
* @license http://ez.no/licenses/new_bsd New BSD License
* @access private
*/
/**
* The ezcArchivePaxHeader class represents the Tar Pax header.
*
* ezcArchivePaxHeader can read the header from an ezcArchiveBlockFile or ezcArchiveEntry.
*
* The values from the headers are directly accessible via the class properties, and allows
* reading and writing to specific header values.
*
* The entire header can be appended to an ezcArchiveBlockFile again or written to an ezcArchiveFileStructure.
* Information may get lost, though.
*
* The header is the {@link ezcArchiveUstarHeader} with extra header information described on the following webpage:
* {@link http://www.opengroup.org/onlinepubs/009695399/utilities/pax.html}
*
* Currently, only the extended header is supported.
*
* @package Archive
* @version 1.4.1
* @access private
*/
class ezcArchivePaxHeader extends ezcArchiveUstarHeader
{
/**
* Sets the property $name to $value.
*
* @throws ezcBasePropertyNotFoundException if the property does not exist.
* @param string $name
* @param mixed $value
* @return void
* @ignore
*/
public function __set( $name, $value )
{
return parent::__set( $name, $value );
}
/**
* Returns the value of the property $name.
*
* @throws ezcBasePropertyNotFoundException if the property does not exist.
* @param string $name
* @return mixed
* @ignore
*/
public function __get( $name )
{
return parent::__get( $name );
}
/**
* Returns an array with pax header information.
*
* This method reads an extended set of data from the ezcArchiveBlockFile
* $file and returns the values in an array.
*
* @param ezcArchiveBlockFile $file
* @return array(string=>string)
*/
protected function getPaxDecodedHeader( ezcArchiveBlockFile $file )
{
$result = array();
// next block has the info.
$file->next();
$data = $file->current();
$offset = 0;
while ( strcmp( $data[$offset], "\0" ) != 0 )
{
$space = strpos( $data, " ", $offset );
$length = substr( $data, $offset, $space - $offset );
$equalSign = strpos( $data, "=", $space );
$keyword = substr( $data, $space + 1, $equalSign - $space - 1 );
$value = rtrim( substr( $data, $equalSign + 1, $length - $equalSign - 1 ), "\n" );
$result[ $keyword ] = $value;
$offset += $length;
}
return $result;
}
/**
* Creates and initializes a new header.
*
* If the ezcArchiveBlockFile $file is null then the header will be empty.
* When an ezcArchiveBlockFile is given, the block position should point to the header block.
* This header block will be read from the file and initialized in this class.
*
* @param ezcArchiveBlockFile $file
*/
public function __construct( ezcArchiveBlockFile $file = null )
{
if ( !is_null( $file ) )
{
parent::__construct( $file );
if ( $this->type == "x" )
{
$paxArray = $this->getPaxDecodedHeader( $file );
$file->next();
}
parent::__construct( $file );
// Override some fields.
foreach ( $paxArray as $key => $value )
{
switch ( $key )
{
case "gid":
$this->groupId = $value;
break; // For group IDs larger than 2097151.
case "linkpath":
$this->linkName = $value;
break; // Long link names?
case "path":
$this->fileName = $value;
$this->filePrefix = "";
break; // Really long file names.
case "size":
$this->size = $value;
break; // For files with a size greater than 8589934591 bytes.
case "uid":
$this->userId = $value;
break; // For user IDs larger than 2097151.
}
}
}
}
}
?>
|