function _assertStateDir($channel = false)
    {
        if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') {
            return $this->_assertChannelStateDir($channel);
        }

        static $init = false;
        if (!file_exists($this->statedir)) {
            if (!$this->hasWriteAccess()) {
                return false;
            }

            require_once 'System.php';
            if (!System::mkdir(array('-p', $this->statedir))) {
                return $this->raiseError("could not create directory '{$this->statedir}'");
            }
            $init = true;
        } elseif (!is_dir($this->statedir)) {
            return $this->raiseError('Cannot create directory ' . $this->statedir . ', ' .
                'it already exists and is not a directory');
        }

        $ds = DIRECTORY_SEPARATOR;
        if (!file_exists($this->channelsdir)) {
            if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg') ||
                  !file_exists($this->channelsdir . $ds . 'pecl.php.net.reg') ||
                  !file_exists($this->channelsdir . $ds . 'doc.php.net.reg') ||
                  !file_exists($this->channelsdir . $ds . '__uri.reg')) {
                $init = true;
            }
        } elseif (!is_dir($this->channelsdir)) {
            return $this->raiseError('Cannot create directory ' . $this->channelsdir . ', ' .
                'it already exists and is not a directory');
        }

        if ($init) {
            static $running = false;
            if (!$running) {
                $running = true;
                $this->_initializeDirs();
                $running = false;
                $init = false;
            }
        } else {
            $this->_initializeDepDB();
        }

        return true;
    }
function _assertStateDir($channel = false)
    {
        if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') {
            return $this->_assertChannelStateDir($channel);
        }

        static $init = false;
        if (!file_exists($this->statedir)) {
            if (!$this->hasWriteAccess()) {
                return false;
            }

            require_once 'System.php';
            if (!System::mkdir(array('-p', $this->statedir))) {
                return $this->raiseError("could not create directory '{$this->statedir}'");
            }
            $init = true;
        } elseif (!is_dir($this->statedir)) {
            return $this->raiseError('Cannot create directory ' . $this->statedir . ', ' .
                'it already exists and is not a directory');
        }

        $ds = DIRECTORY_SEPARATOR;
        if (!file_exists($this->channelsdir)) {
            if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg') ||
                  !file_exists($this->channelsdir . $ds . 'pecl.php.net.reg') ||
                  !file_exists($this->channelsdir . $ds . 'doc.php.net.reg') ||
                  !file_exists($this->channelsdir . $ds . '__uri.reg')) {
                $init = true;
            }
        } elseif (!is_dir($this->channelsdir)) {
            return $this->raiseError('Cannot create directory ' . $this->channelsdir . ', ' .
                'it already exists and is not a directory');
        }

        if ($init) {
            static $running = false;
            if (!$running) {
                $running = true;
                $this->_initializeDirs();
                $running = false;
                $init = false;
            }
        } else {
            $this->_initializeDepDB();
        }

        return true;
    }
function _assertStateDir ( $ channel = false ) { if ( $ channel && $ this -> _getChannelFromAlias ( $ channel ) != 'pear.php.net' ) { return $ this -> _assertChannelStateDir ( $ channel ) ; } static $ init = false ; if ( ! file_exists ( $ this -> statedir ) ) { if ( ! $ this -> hasWriteAccess ( ) ) { return false ; } require_once 'System.php' ; if ( ! System :: mkdir ( array ( '-p' , $ this -> statedir ) ) ) { return $ this -> raiseError ( "could not create directory '{$this->statedir}'" ) ; } $ init = true ; } elseif ( ! is_dir ( $ this -> statedir ) ) { return $ this -> raiseError ( 'Cannot create directory ' . $ this -> statedir . ', ' . 'it already exists and is not a directory' ) ; } $ ds = DIRECTORY_SEPARATOR ; if ( ! file_exists ( $ this -> channelsdir ) ) { if ( ! file_exists ( $ this -> channelsdir . $ ds . 'pear.php.net.reg' ) || ! file_exists ( $ this -> channelsdir . $ ds . 'pecl.php.net.reg' ) || ! file_exists ( $ this -> channelsdir . $ ds . 'doc.php.net.reg' ) || ! file_exists ( $ this -> channelsdir . $ ds . '__uri.reg' ) ) { $ init = true ; } } elseif ( ! is_dir ( $ this -> channelsdir ) ) { return $ this -> raiseError ( 'Cannot create directory ' . $ this -> channelsdir . ', ' . 'it already exists and is not a directory' ) ; } if ( $ init ) { static $ running = false ; if ( ! $ running ) { $ running = true ; $ this -> _initializeDirs ( ) ; $ running = false ; $ init = false ; } } else { $ this -> _initializeDepDB ( ) ; } return true ; }
Make sure the directory where we keep registry files exists.

@return bool TRUE if directory exists, FALSE if it could not be
created

@access private
Make sure the directory where we keep registry files exists .