Tweak temporary-file-directory on darwin systems.
authorGlenn Morris <rgm@gnu.org>
Fri, 1 Oct 2010 03:57:26 +0000 (20:57 -0700)
committerGlenn Morris <rgm@gnu.org>
Fri, 1 Oct 2010 03:57:26 +0000 (20:57 -0700)
* lisp/files.el (temporary-file-directory): On darwin, also try
DARWIN_USER_TEMP_DIR (see discussion in bug#7135).

lisp/ChangeLog
lisp/files.el

index 901a5fb..b1092c2 100644 (file)
@@ -1,3 +1,8 @@
+2010-10-01  Glenn Morris  <rgm@gnu.org>
+
+       * files.el (temporary-file-directory): On darwin, also try
+       DARWIN_USER_TEMP_DIR (see discussion in bug#7135).
+
 2010-10-01  Juanma Barranquero  <lekktu@gmail.com>
 
        * server.el (server-start): Revert part of 2010-09-30T02:53:26Z!lekktu@gmail.com.
index 40627f6..9257428 100644 (file)
@@ -190,12 +190,27 @@ If the buffer is visiting a new file, the value is nil.")
 
 (defcustom temporary-file-directory
   (file-name-as-directory
+   ;; FIXME ? Should there be Ftemporary_file_directory to do the
+   ;; following more robustly (cf set_local_socket in emacsclient.c).
+   ;; It could be used elsewhere, eg Fcall_process_region, server-socket-dir.
+   ;; See bug#7135.
    (cond ((memq system-type '(ms-dos windows-nt))
          (or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP") "c:/temp"))
+        ((eq system-type 'darwin)
+         (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP")
+             (let ((tmp (ignore-errors (shell-command-to-string ; bug#7135
+                                        "getconf DARWIN_USER_TEMP_DIR"))))
+               (and (stringp tmp)
+                    (setq tmp (replace-regexp-in-string "\n\\'" "" tmp))
+                    ;; This handles "getconf: Unrecognized variable..."
+                    (file-directory-p tmp)
+                    tmp))
+             "/tmp"))
         (t
          (or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp"))))
   "The directory for writing temporary files."
   :group 'files
+  ;; Darwin section added 24.1, does not seem worth :version bump.
   :initialize 'custom-initialize-delay
   :type 'directory)