GNU bug report logs - #6995
24.0.50; get-free-disk-space doesn't return available space in dired

Previous Next

Package: emacs;

Reported by: Thierry Volpiatto <thierry.volpiatto <at> gmail.com>

Date: Tue, 7 Sep 2010 20:01:02 UTC

Severity: normal

Found in version 24.0.50

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Thierry Volpiatto <thierry.volpiatto <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: bug#6995: 24.0.50; get-free-disk-space doesn't return available space in dired
Date: Mon, 13 Sep 2010 15:22:17 +0200
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

>> How about dropping the use of `df', at least on GNU/Linux?  It's IMO
>> ridiculous to invoke an external program for a single system call.  I
>> know that this system call is notoriously non-portable, and that doing
>> in Emacs all that system-dependent stuff that `df' does is not a good
>> idea.  But at least on the most popular free system (and perhaps on a
>> few compatible ones) we could do it right without all that labor, and
>> gain stability and reliability that depending on `df' will never
>> achieve.
>
> That would make a lot of sense, yes,

I agree too, but waiting such a change, you should rewrite
`get-free-disk-space' as it can't work correctly on the output of df.

,----
| 	    ;; Usual format is as follows:
| 	    ;; Filesystem ...    Used  Available  Capacity ...
| 	    ;; /dev/sda6  ...48106535   35481255  10669850 ...
| 	    (goto-char (point-min))
| 	    (when (re-search-forward " +Avail[^ \n]*"
`----

But usual format is not the same on all locales:
Here it is:

,----
| Sys. de fichiers    1024-blocs   Utilisé    Dispo. Capacité Monté sur
| /dev/sda7             48947688  21618816  24842416      47% /home
`----

So (re-search-forward " +Avail[^ \n]*" is not portable here.

I use this simplified version of get-free-disk-space if it can help:

,----
| (defun get-free-disk-space (dir)
|   (let* ((data   (with-temp-buffer
|                    (call-process directory-free-space-program
|                                  nil t nil
|                                  directory-free-space-args
|                                  dir)
|                    (split-string (buffer-string) "\n" t)))
|          (values (cdr (split-string (second data)))))
|     (nth 2 values)))
`----

Tough the version on 23.2 work also.

Note that the value of "total used in directory" is always wrong.
How do you get this value?

-- 
A+ Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997 





This bug report was last modified 14 years and 283 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.