]> git.cworth.org Git - notmuch/commitdiff
emacs: wrap call-process
authorDavid Bremner <david@tethera.net>
Sat, 11 Sep 2021 14:04:08 +0000 (11:04 -0300)
committerDavid Bremner <david@tethera.net>
Sat, 11 Sep 2021 14:11:29 +0000 (11:11 -0300)
Provide safe working directory

emacs/notmuch-crypto.el
emacs/notmuch-draft.el
emacs/notmuch-lib.el
emacs/notmuch-mua.el
emacs/notmuch-show.el
emacs/notmuch-tag.el
test/T450-emacs-show.sh

index 3ffb56540550beb90fecbfa9f71dbca75cc0c0a5..a1cf3ddd93e176748e49472750c6138c76c4b27a 100644 (file)
@@ -164,7 +164,7 @@ mode."
        (goto-char (point-max))
        (insert (format "-- Key %s in message %s:\n"
                        fingerprint id))
-       (call-process notmuch-crypto-gpg-program nil t t
+       (notmuch--call-process notmuch-crypto-gpg-program nil t t
                      "--batch" "--no-tty" "--list-keys" fingerprint))
       (recenter -1))))
 
@@ -240,9 +240,9 @@ corresponding key when the status button is pressed."
          (with-current-buffer buffer
            (goto-char (point-max))
            (insert (format "--- Retrieving key %s:\n" keyid))
-           (call-process notmuch-crypto-gpg-program nil t t "--recv-keys" keyid)
+           (notmuch--call-process notmuch-crypto-gpg-program nil t t "--recv-keys" keyid)
            (insert "\n")
-           (call-process notmuch-crypto-gpg-program nil t t "--list-keys" keyid))
+           (notmuch--call-process notmuch-crypto-gpg-program nil t t "--list-keys" keyid))
          (recenter -1))
        (notmuch-show-refresh-view)))))
 
index 0b1ba43fd0eb46ff8cac126b5c2cf8b97c70f3e3..fcc45503c6b0816d4ab12ab98a6c86cf6b2d3eb9 100644 (file)
@@ -249,7 +249,7 @@ applied to newly inserted messages)."
       (setq buffer-read-only nil)
       (erase-buffer)
       (let ((coding-system-for-read 'no-conversion))
-       (call-process notmuch-command nil t nil "show" "--format=raw" id))
+       (notmuch--call-process notmuch-command nil t nil "show" "--format=raw" id))
       (mime-to-mml)
       (goto-char (point-min))
       (when (re-search-forward "^$" nil t)
index 9693185f69dde5cfb7a8615f739e328d928d6603..45817e1311dc7d4f4940e8573a924e05f7d9f10e 100644 (file)
@@ -195,7 +195,7 @@ will be signaled.
 
 Otherwise the output will be returned."
   (with-temp-buffer
-    (let ((status (apply #'call-process notmuch-command nil t nil args))
+    (let ((status (apply #'notmuch--call-process notmuch-command nil t nil args))
          (output (buffer-string)))
       (notmuch-check-exit-status status (cons notmuch-command args) output)
       output)))
@@ -206,7 +206,7 @@ Otherwise the output will be returned."
 (defun notmuch-cli-sane-p ()
   "Return t if the cli seems to be configured sanely."
   (unless notmuch--cli-sane-p
-    (let ((status (call-process notmuch-command nil nil nil
+    (let ((status (notmuch--call-process notmuch-command nil nil nil
                                "config" "get" "user.primary_email")))
       (setq notmuch--cli-sane-p (= status 0))))
   notmuch--cli-sane-p)
@@ -286,7 +286,7 @@ depending on the value of `notmuch-poll-script'."
   (message "Polling mail...")
   (if (stringp notmuch-poll-script)
       (unless (string-empty-p notmuch-poll-script)
-       (unless (equal (call-process notmuch-poll-script nil nil) 0)
+       (unless (equal (notmuch--call-process notmuch-poll-script nil nil) 0)
          (error "Notmuch: poll script `%s' failed!" notmuch-poll-script)))
     (notmuch-call-notmuch-process "new"))
   (message "Polling mail...done"))
@@ -639,7 +639,7 @@ the given type."
                                  ;; charset is US-ASCII. RFC6657
                                  ;; complicates this somewhat.
                                  'us-ascii)))))
-                      (apply #'call-process
+                      (apply #'notmuch--call-process
                              notmuch-command nil '(t nil) nil args)
                       (buffer-string))))))
     (when (and cache data)
@@ -882,6 +882,10 @@ default"
   (notmuch--apply-with-env
    #'call-process-region start end program delete buffer display args))
 
+(defun notmuch--call-process (program &optional infile destination display &rest args)
+  "Wrap call-process, binding DEFAULT-DIRECTORY to a safe default"
+  (notmuch--apply-with-env #'call-process program infile destination display args))
+
 (defun notmuch-call-notmuch--helper (destination args)
   "Helper for synchronous notmuch invocation commands.
 
@@ -896,7 +900,7 @@ for `call-process'.  ARGS is as described for
        (otherwise
         (error "Unknown keyword argument: %s" (car args)))))
     (if (null stdin-string)
-       (apply #'call-process notmuch-command nil destination nil args)
+       (apply #'notmuch--call-process notmuch-command nil destination nil args)
       (insert stdin-string)
       (apply #'notmuch--call-process-region (point-min) (point-max)
             notmuch-command t destination nil args))))
index f510c043fc4c9515dbe7910e3c1bc6b4c214b1f5..c679373b175955092858c7bfe8366a4aa088c91e 100644 (file)
@@ -474,7 +474,7 @@ the From: address."
                (with-current-buffer temp-buffer
                  (erase-buffer)
                  (let ((coding-system-for-read 'no-conversion))
-                   (call-process notmuch-command nil t nil
+                   (notmuch--call-process notmuch-command nil t nil
                                  "show" "--format=raw" id))
                  ;; Because we process the messages in reverse order,
                  ;; always generate a forwarded subject, then use the
index eeb0c54bfeb377f76c72b2b9653a48ca0cc4d726..ea20ddcef4d8fdb634c59dcaff3ff44a36dc818f 100644 (file)
@@ -279,7 +279,7 @@ position of the message in the thread."
        (let ((buf (generate-new-buffer (concat "*notmuch-msg-" id "*"))))
         (with-current-buffer buf
           (let ((coding-system-for-read 'no-conversion))
-            (call-process notmuch-command nil t nil "show" "--format=raw" id))
+            (notmuch--call-process notmuch-command nil t nil "show" "--format=raw" id))
           ,@body)
         (kill-buffer buf)))))
 
@@ -2034,7 +2034,7 @@ to show, nil otherwise."
     (pop-to-buffer-same-window buf)
     (erase-buffer)
     (let ((coding-system-for-read 'no-conversion))
-      (call-process notmuch-command nil t nil "show" "--format=raw" id))
+      (notmuch--call-process notmuch-command nil t nil "show" "--format=raw" id))
     (goto-char (point-min))
     (set-buffer-modified-p nil)
     (setq buffer-read-only t)
@@ -2086,7 +2086,7 @@ message."
          ;; Use the originating buffer's working directory instead of
          ;; that of the pipe buffer.
          (cd cwd)
-         (let ((exit-code (call-process-shell-command shell-command nil buf)))
+         (let ((exit-code (notmuch--call-process-shell-command shell-command nil buf)))
            (goto-char (point-max))
            (set-buffer-modified-p nil)
            (unless (zerop exit-code)
index e3a60441a0b51a86d527b1c61fa6e9bd9a64a018..536315e9a788f7ae10dc2a58750fb99e1f874584 100644 (file)
@@ -397,7 +397,7 @@ Return all tags if no search terms are given."
   (split-string
    (with-output-to-string
      (with-current-buffer standard-output
-       (apply 'call-process notmuch-command nil t
+       (apply 'notmuch--call-process notmuch-command nil t
              nil "search" "--output=tags" "--exclude=false" search-terms)))
    "\n+" t))
 
index 03f953aab9052f9e61c820e6033ea9009d35c743..4b5f5fdecafde48f5e36bf822a6b27534dcc93e4 100755 (executable)
@@ -238,7 +238,6 @@ test_expect_equal_file $EXPECTED/notmuch-show-decrypted-message-no-crypto OUTPUT
 
 test_begin_subtest "notmuch-show with nonexistent CWD"
 tid=$(notmuch search --limit=1 --output=threads '*' | sed s/thread://)
-test_subtest_known_broken
 test_emacs "(test-log-error
              (let ((default-directory \"/nonexistent\"))
                (notmuch-show \"$tid\")))"