Subject: bug#2631: get-free-disk-space when default-directory doesn't exist

From: Kevin Ryde <[email-masked]>
Date: Wed, 11 Mar 2009 09:24:04 +1100

Evaluating

    (with-temp-buffer
      (setq default-directory "/no/such/dir")
      (get-free-disk-space "/tmp"))

gets an error

    (file-error "Setting current directory" "no such file or directory" "/no/such/dir")

where I hoped it wouldn't care about default-directory, only the given
directory argument.  Perhaps a let-bind per below.

In GNU Emacs 22.2.1 (i486-pc-linux-gnu, GTK+ Version 2.12.11)
 of 2008-11-10 on raven, modified by Debian
configured using `configure  '--build=i486-linux-gnu' '--host=i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs22:/etc/emacs:/usr/local/share/emacs/22.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/22.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/22.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_AU
  locale-coding-system: iso-8859-1
  default-enable-multibyte-characters: t

*** files.el	11 Mar 2009 08:46:04 +1100	1.1038
--- files.el	11 Mar 2009 09:14:14 +1100	
***************
*** 5336,5345 ****
        (save-match-data
  	(with-temp-buffer
  	  (when (and directory-free-space-program
! 		     (eq 0 (call-process directory-free-space-program
! 					 nil t nil
! 					 directory-free-space-args
! 					 dir)))
  	    ;; Usual format is a header line followed by a line of
  	    ;; numbers.
  	    (goto-char (point-min))
--- 5336,5346 ----
        (save-match-data
  	(with-temp-buffer
  	  (when (and directory-free-space-program
!                      (let ((default-directory "/"))
!                        (eq 0 (call-process directory-free-space-program
!                                            nil t nil
!                                            directory-free-space-args
!                                            dir))))
  	    ;; Usual format is a header line followed by a line of
  	    ;; numbers.
  	    (goto-char (point-min))