 (defun straight--get-call-raw (command &rest args)
   "Call COMMAND with ARGS, returning its stdout and stderr as a string.
 If the command fails, throw an error."
-  (with-temp-buffer
-    (let ((default-directory (or straight--default-directory
-                                 default-directory)))
-      (unless (= 0 (apply #'call-process command
-                          nil '(t t) nil args))
-        (error "Command failed: %s %s (output: %S) (default-directory: %S)"
-               command (string-join args " ")
-               (buffer-string) default-directory)))
-    (buffer-string)))
+  (let ((result (apply #'straight--call command args)))
+    (if (car result)
+        (cdr result)
+      (error "Command failed: %s %s (output: %S) (default-directory: %S)"
+             command (string-join args " ")
+             (cdr result) default-directory))))
 
 (defun straight--get-call (command &rest args)
   "Call COMMAND with ARGS, returning its stdout and stderr as a string.


(cl-defun straight-vc-git-push-to-remote (recipe)
  "Using straight.el-style RECIPE, push to primary remote, if necessary."
  (while t
    (and (straight-vc-git--validate-local recipe)
         (straight-vc-git--validate-head-pushed recipe)
         (cl-return-from straight-vc-git-push-to-remote t))))

(cl-defun straight-vc-git-check-out-commit (local-repo commit)
  "In LOCAL-REPO, check out COMMIT.

    (while (equal (car parts) "")
      (setq parts (cdr parts)))
    (setq parts (nreverse parts))
    ;; Remove tail.
    (when (and max-lines (< max-lines (length parts)))
      (setf (nthcdr max-lines parts) nil))
    ;; Add indentation.
    (if indent
        (let ((indent (make-string (or indent 0) ? )))
