original_string: protected function readlink($path) {
  		if (!($target = @readlink($path))) {
  			return false;
  		}
  		
  		if (substr($target, 0, 1) != DIRECTORY_SEPARATOR) {
  			$target = dirname($path).DIRECTORY_SEPARATOR.$target;
  		}
  		
  		if ($this->_inpath($target, $this->aroot)) {
  			$atarget = realpath($target);
  			return $this->_normpath($this->root.DIRECTORY_SEPARATOR.substr($atarget, strlen($this->aroot)+1));
  		}
  
  		return false;
  	}
code: protected function readlink($path) {
  		if (!($target = @readlink($path))) {
  			return false;
  		}
  		
  		if (substr($target, 0, 1) != DIRECTORY_SEPARATOR) {
  			$target = dirname($path).DIRECTORY_SEPARATOR.$target;
  		}
  		
  		if ($this->_inpath($target, $this->aroot)) {
  			$atarget = realpath($target);
  			return $this->_normpath($this->root.DIRECTORY_SEPARATOR.substr($atarget, strlen($this->aroot)+1));
  		}
  
  		return false;
  	}
code_tokens: protected function readlink ( $ path ) { if ( ! ( $ target = @ readlink ( $ path ) ) ) { return false ; } if ( substr ( $ target , 0 , 1 ) != DIRECTORY_SEPARATOR ) { $ target = dirname ( $ path ) . DIRECTORY_SEPARATOR . $ target ; } if ( $ this -> _inpath ( $ target , $ this -> aroot ) ) { $ atarget = realpath ( $ target ) ; return $ this -> _normpath ( $ this -> root . DIRECTORY_SEPARATOR . substr ( $ atarget , strlen ( $ this -> aroot ) + 1 ) ) ; } return false ; }
docstring: Return symlink target file
  
  @param  string  $path  link path
  @return string
  @author Dmitry (dio) Levashov
docstring_tokens: Return symlink target file