changeset 110577:71576987bc2d

* files.el (get-free-disk-space): Don't assume "df" output columns line up (Bug#6995).
author Chong Yidong <cyd@stupidchicken.com>
date Sat, 25 Sep 2010 16:16:35 -0400
parents 54834381dfd9
children 5874484c8de5
files lisp/ChangeLog lisp/files.el
diffstat 2 files changed, 15 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Sep 25 15:50:13 2010 -0400
+++ b/lisp/ChangeLog	Sat Sep 25 16:16:35 2010 -0400
@@ -1,3 +1,8 @@
+2010-09-25  Chong Yidong  <cyd@stupidchicken.com>
+
+	* files.el (get-free-disk-space): Don't assume the "df" output
+	columns line up (Bug#6995).
+
 2010-09-25  Juanma Barranquero  <lekktu@gmail.com>
 
 	* finder.el (finder-unknown-keywords):
--- a/lisp/files.el	Sat Sep 25 15:50:13 2010 -0400
+++ b/lisp/files.el	Sat Sep 25 16:16:35 2010 -0400
@@ -5622,22 +5622,17 @@
 					 directory-free-space-args
 					 dir)
 			   0)))
-	    ;; Usual format is as follows:
-	    ;; Filesystem ...    Used  Available  Capacity ...
-	    ;; /dev/sda6  ...48106535   35481255  10669850 ...
+	    ;; Assume that the "available" column is before the
+	    ;; "capacity" column.  Find the "%" and scan backward.
 	    (goto-char (point-min))
-	    (when (re-search-forward " +Avail[^ \n]*"
-				     (line-end-position) t)
-	      (let ((beg (match-beginning 0))
-		    (end (match-end 0))
-		    str)
-		(forward-line 1)
-		(setq str
-		      (buffer-substring-no-properties
-		       (+ beg (point) (- (point-min)))
-		       (+ end (point) (- (point-min)))))
-		(when (string-match "\\` *\\([^ ]+\\)" str)
-		  (match-string 1 str))))))))))
+	    (forward-line 1)
+	    (when (re-search-forward
+		   "[[:space:]]+[^[:space:]]+%[^%]*$"
+		   (line-end-position) t)
+	      (goto-char (match-beginning 0))
+	      (let ((endpt (point)))
+		(skip-chars-backward "^[:space:]")
+		(buffer-substring-no-properties (point) endpt)))))))))
 
 ;; The following expression replaces `dired-move-to-filename-regexp'.
 (defvar directory-listing-before-filename-regexp