mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-18 02:47:36 +00:00
(ls-lisp-format-file-size): New function to implement "-h" switch.
(ls-lisp-format): Use it.
This commit is contained in:
parent
2bf07f07f7
commit
a3723f134b
1 changed files with 12 additions and 1 deletions
|
|
@ -65,6 +65,8 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(defgroup ls-lisp nil
|
||||
"Emulate the ls program completely in Emacs Lisp."
|
||||
:version "21.1"
|
||||
|
|
@ -533,7 +535,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)
|
||||
" "
|
||||
|
|
@ -587,6 +589,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
|
||||
|
|
|
|||
Loading…
Reference in a new issue