Signal error if find-grep returns a nonzero status

* lisp/progmodes/xref.el (xref-collect-matches): Signal error
if find-grep returns a nonzero status (bug#23451).  Remove the
comment: even if some output is present, a non-zero status
means something went wrong and it can't be relied upon.
This commit is contained in:
Dmitry Gutov 2017-05-29 02:55:42 +03:00
parent d76c007898
commit 3bc3dc4063

View file

@ -929,14 +929,16 @@ IGNORES is a list of glob patterns."
ignores))
(buf (get-buffer-create " *xref-grep*"))
(grep-re (caar grep-regexp-alist))
status
hits)
(with-current-buffer buf
(erase-buffer)
(call-process-shell-command command nil t)
;; FIXME: What to do when the call fails?
;; "find: xyzgrep: No such file or directory\n"
;; The problem is, find-grep can exit with a nonzero code even
;; when there are some matches in the output.
(setq status
(call-process-shell-command command nil t))
(when (and (not (zerop status))
;; Nonzero status can mean "no matches found".
(/= (point-min) (point-max)))
(user-error "Search failed with status %d: %s" status (buffer-string)))
(goto-char (point-min))
(while (re-search-forward grep-re nil t)
(push (list (string-to-number (match-string 2))