]> git.eshelyaron.com Git - emacs.git/commitdiff
Signal error if find-grep returns a nonzero status
authorDmitry Gutov <dgutov@yandex.ru>
Sun, 28 May 2017 23:55:42 +0000 (02:55 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Sun, 28 May 2017 23:55:58 +0000 (02:55 +0300)
* 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.

lisp/progmodes/xref.el

index 9b6a560971c092e873084bddd73b0b6d1314966d..c43f3a4ca838040b614fb6f80c3848205ef378b1 100644 (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))