function _lock($mode = LOCK_EX)
    {
        if (stristr(php_uname(), 'Windows 9')) {
            return true;
        }

        if ($mode != LOCK_UN && is_resource($this->_lockFp)) {
            // XXX does not check type of lock (LOCK_SH/LOCK_EX)
            return true;
        }

        $open_mode = 'w';
        // XXX People reported problems with LOCK_SH and 'w'
        if ($mode === LOCK_SH) {
            if (!file_exists($this->_lockfile)) {
                touch($this->_lockfile);
            } elseif (!is_file($this->_lockfile)) {
                return PEAR::raiseError('could not create Dependency lock file, ' .
                    'it exists and is not a regular file');
            }
            $open_mode = 'r';
        }

        if (!is_resource($this->_lockFp)) {
            $this->_lockFp = @fopen($this->_lockfile, $open_mode);
        }

        if (!is_resource($this->_lockFp)) {
            return PEAR::raiseError("could not create Dependency lock file" .
                                     (isset($php_errormsg) ? ": " . $php_errormsg : ""));
        }

        if (!(int)flock($this->_lockFp, $mode)) {
            switch ($mode) {
                case LOCK_SH: $str = 'shared';    break;
                case LOCK_EX: $str = 'exclusive'; break;
                case LOCK_UN: $str = 'unlock';    break;
                default:      $str = 'unknown';   break;
            }

            return PEAR::raiseError("could not acquire $str lock ($this->_lockfile)");
        }

        return true;
    }
function _lock($mode = LOCK_EX)
    {
        if (stristr(php_uname(), 'Windows 9')) {
            return true;
        }

        if ($mode != LOCK_UN && is_resource($this->_lockFp)) {
            // XXX does not check type of lock (LOCK_SH/LOCK_EX)
            return true;
        }

        $open_mode = 'w';
        // XXX People reported problems with LOCK_SH and 'w'
        if ($mode === LOCK_SH) {
            if (!file_exists($this->_lockfile)) {
                touch($this->_lockfile);
            } elseif (!is_file($this->_lockfile)) {
                return PEAR::raiseError('could not create Dependency lock file, ' .
                    'it exists and is not a regular file');
            }
            $open_mode = 'r';
        }

        if (!is_resource($this->_lockFp)) {
            $this->_lockFp = @fopen($this->_lockfile, $open_mode);
        }

        if (!is_resource($this->_lockFp)) {
            return PEAR::raiseError("could not create Dependency lock file" .
                                     (isset($php_errormsg) ? ": " . $php_errormsg : ""));
        }

        if (!(int)flock($this->_lockFp, $mode)) {
            switch ($mode) {
                case LOCK_SH: $str = 'shared';    break;
                case LOCK_EX: $str = 'exclusive'; break;
                case LOCK_UN: $str = 'unlock';    break;
                default:      $str = 'unknown';   break;
            }

            return PEAR::raiseError("could not acquire $str lock ($this->_lockfile)");
        }

        return true;
    }
function _lock ( $ mode = LOCK_EX ) { if ( stristr ( php_uname ( ) , 'Windows 9' ) ) { return true ; } if ( $ mode != LOCK_UN && is_resource ( $ this -> _lockFp ) ) { // XXX does not check type of lock (LOCK_SH/LOCK_EX) return true ; } $ open_mode = 'w' ; // XXX People reported problems with LOCK_SH and 'w' if ( $ mode === LOCK_SH ) { if ( ! file_exists ( $ this -> _lockfile ) ) { touch ( $ this -> _lockfile ) ; } elseif ( ! is_file ( $ this -> _lockfile ) ) { return PEAR :: raiseError ( 'could not create Dependency lock file, ' . 'it exists and is not a regular file' ) ; } $ open_mode = 'r' ; } if ( ! is_resource ( $ this -> _lockFp ) ) { $ this -> _lockFp = @ fopen ( $ this -> _lockfile , $ open_mode ) ; } if ( ! is_resource ( $ this -> _lockFp ) ) { return PEAR :: raiseError ( "could not create Dependency lock file" . ( isset ( $ php_errormsg ) ? ": " . $ php_errormsg : "" ) ) ; } if ( ! ( int ) flock ( $ this -> _lockFp , $ mode ) ) { switch ( $ mode ) { case LOCK_SH : $ str = 'shared' ; break ; case LOCK_EX : $ str = 'exclusive' ; break ; case LOCK_UN : $ str = 'unlock' ; break ; default : $ str = 'unknown' ; break ; } return PEAR :: raiseError ( "could not acquire $str lock ($this->_lockfile)" ) ; } return true ; }
Register usage of the dependency DB to prevent race conditions
@param int one of the LOCK_* constants
@return true|PEAR_Error
@access private
Register usage of the dependency DB to prevent race conditions