From 841ba781a99eaa0fff02c3faf0e83a47541f57b7 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Thu, 1 May 2003 11:31:31 +0000 Subject: [PATCH] (ls-lisp-format-file-size): New function to implement "-h" switch. (ls-lisp-format): Use it. --- lisp/ChangeLog | 8 +++++++- lisp/ls-lisp.el | 13 ++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0c0c9172bd4..f1b75395306 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,4 +1,10 @@ -2003-04-23 Kenichi Handa +2003-05-01 Eduardo Mu,Aq(Boz (tiny change) + + * ls-lisp.el (ls-lisp-format-file-size): New function to implement + "-h" switch. + (ls-lisp-format): Use it. + +2003-04-23 Kenichi Handa * language/devanagari.el ("Devanagari"): Documentation string modified. diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index f30d98daa6c..2de5559d382 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -65,6 +65,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) + ;;;###autoload (defgroup ls-lisp nil "Emulate the ls program completely in Emacs Lisp." @@ -497,7 +499,7 @@ SWITCHES, TIME-INDEX and NOW give the full switch list and time data." (if group (format " %-8s" group) (format " %-8d" gid)))))) - (format (if (floatp file-size) " %8.0f" " %8d") file-size) + (ls-lisp-format-file-size file-size (memq ?h switches)) " " (ls-lisp-format-time file-attr time-index now) " " @@ -537,6 +539,15 @@ All ls time options, namely c, t and u, are handled." time) (error "Unk 0 0000")))) +(defun ls-lisp-format-file-size (file-size human-readable) + (if (or (not human-readable) + (< file-size 1024)) + (format (if (floatp file-size) " %8.0f" " %8d") file-size) + (do ((file-size (/ file-size 1024.0) (/ file-size 1024.0)) + ;; kilo, mega, giga, tera, peta, exa + (post-fixes (list "k" "M" "G" "T" "P" "E") (cdr post-fixes))) + ((< file-size 1024) (format " %7.0f%s" file-size (car post-fixes)))))) + (provide 'ls-lisp) ;;; ls-lisp.el ends here -- 2.39.5