[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master b6c91cdf541 1/2: Return non-zero exit status when Eshell's "which
From: |
Jim Porter |
Subject: |
master b6c91cdf541 1/2: Return non-zero exit status when Eshell's "which" fails to find a command |
Date: |
Sun, 8 Dec 2024 23:24:48 -0500 (EST) |
branch: master
commit b6c91cdf54168eef260e28a7866486a4d68bfc9e
Author: Jim Porter <jporterbugs@gmail.com>
Commit: Jim Porter <jporterbugs@gmail.com>
Return non-zero exit status when Eshell's "which" fails to find a command
* lisp/eshell/esh-cmd.el (eshell/which): Set exit status to 1 if we
couldn't find any of the commands (bug#74739).
---
lisp/eshell/esh-cmd.el | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index c0015745ad5..7a146944145 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -1381,19 +1381,22 @@ have been replaced by constants."
(defun eshell/which (command &rest names)
"Identify the COMMAND, and where it is located."
- (dolist (name (cons command names))
- (condition-case error
- (eshell-printn
- (catch 'found
- (run-hook-wrapped
- 'eshell-named-command-hook
- (lambda (hook)
- (when-let* (((symbolp hook))
- (which-func (get hook 'eshell-which-function))
- (result (funcall which-func command)))
- (throw 'found result))))
- (eshell-plain-command--which name)))
- (error (eshell-error (format "which: %s\n" (cadr error)))))))
+ (let (not-found)
+ (dolist (name (cons command names))
+ (condition-case error
+ (eshell-printn
+ (catch 'found
+ (run-hook-wrapped
+ 'eshell-named-command-hook
+ (lambda (hook)
+ (when-let* (((symbolp hook))
+ (which-func (get hook 'eshell-which-function))
+ (result (funcall which-func command)))
+ (throw 'found result))))
+ (eshell-plain-command--which name)))
+ (error (eshell-error (format "which: %s\n" (cadr error)))
+ (setq not-found t))))
+ (when not-found (eshell-set-exit-info 1))))
(put 'eshell/which 'eshell-no-numeric-conversions t)