Subject: matching for global

From: Friedrich (QSS) <[email-masked]>
Date: Sat, 01 Apr 2023 07:46:02 +0200

​Dear Maintainers, 
at least here run into a probelm while trying to load cedet global:
/home/frido/src/emacs/lisp/cedet/cedet-global.e
(defun cedet-gnu-global-version-check (&optional noerror)
  "Check the version of the installed GNU Global command.
If optional programmatic argument NOERROR is non-nil,
then instead of throwing an error if Global isn't available,
return nil."
  (interactive)
  (let ((b (condition-case nil
	       (cedet-gnu-global-call (list "--version"))
	     (error nil)))
	(rev nil))
    (if (not b)
	(progn
	  (when (called-interactively-p 'interactive)
	    (message "GNU Global not found."))
	  nil)
      (with-current-buffer b
	(goto-char (point-min))
	->  here (re-search-forward "(?GNU GLOBAL)? \\([0-9.]+\\)" nil t)
	(setq rev (match-string 1))
        (if (version< rev cedet-global-min-version)
	    (if noerror
		nil
	      (error "Version of GNU Global is %s.  Need at least %s"
		     rev cedet-global-min-version))
	  ;; Else, return TRUE, as in good enough.
	  (when (called-interactively-p 'interactive)
	    (message "GNU Global %s  - Good enough for CEDET." rev))
	  t)))))

My gnu Global announces itself here with:

global --version
global (Global) 6.6.9
Powered by Berkeley DB 1.85 and SQLite3 3.8.7.1.

And so the match does not work
replacing "(?GNU GLOBAL)?

with just "global (Global) ..." 
works for me

With best regards
Friedrich