aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2008-04-25 09:03:19 +0000
committerEli Zaretskii2008-04-25 09:03:19 +0000
commit0e5016a6475a53be7aa6ee81f1acd4366ff6b603 (patch)
tree241eea896663fa3c7c40bd4751febbc52c2dfbb9
parent38a8b7032a4f093552a8640b1c669096ea92535c (diff)
downloademacs-0e5016a6475a53be7aa6ee81f1acd4366ff6b603.tar.gz
emacs-0e5016a6475a53be7aa6ee81f1acd4366ff6b603.zip
(ls-lisp-format): Fix last change.
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/ls-lisp.el25
2 files changed, 23 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d0c371b19b9..da619ce06a3 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
12008-04-25 Eli Zaretskii <eliz@gnu.org>
2
3 * ls-lisp.el (ls-lisp-format): Fix last change.
4
12008-04-24 Nick Roberts <nickrob@snap.net.nz> 52008-04-24 Nick Roberts <nickrob@snap.net.nz>
2 6
3 * progmodes/gdb-ui.el (gdb-invalidate-assembler): Compare numeric 7 * progmodes/gdb-ui.el (gdb-invalidate-assembler): Compare numeric
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 2ce3c9dfd6b..e1e10531880 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -532,14 +532,27 @@ SWITCHES, TIME-INDEX and NOW give the full switch list and time data."
532 (let ((inode (nth 10 file-attr))) 532 (let ((inode (nth 10 file-attr)))
533 (if (consp inode) 533 (if (consp inode)
534 (if (consp (cdr inode)) 534 (if (consp (cdr inode))
535 (format " %17.0f " 535 ;; 2^(24+16) = 1099511627776.0, but
536 (+ (* (car inode) 1099511627776.0) 536 ;; multiplying by it and then adding the
537 (* (cadr inode) 65536.0) 537 ;; other members of the cons cell in one go
538 (cddr inode))) 538 ;; loses precision, since a double does not
539 (format " %17.0f " 539 ;; have enough significant digits to hold a
540 ;; full 64-bit value. So below we split
541 ;; 1099511627776 into high 13 and low 5
542 ;; digits and compute in two parts.
543 (let ((p1 (* (car inode) 10995116.0))
544 (p2 (+ (* (car inode) 27776.0)
545 (* (cadr inode) 65536.0)
546 (cddr inode))))
547 (format " %13.0f%05.0f "
548 ;; Use floor to emulate integer
549 ;; division.
550 (+ p1 (floor p2 100000.0))
551 (mod p2 100000.0)))
552 (format " %18.0f "
540 (+ (* (car inode) 65536.0) 553 (+ (* (car inode) 65536.0)
541 (cdr inode)))) 554 (cdr inode))))
542 (format " %17d " inode)))) 555 (format " %18d " inode))))
543 ;; nil is treated like "" in concat 556 ;; nil is treated like "" in concat
544 (if (memq ?s switches) ; size in K 557 (if (memq ?s switches) ; size in K
545 (format " %4.0f" (fceiling (/ file-size 1024.0)))) 558 (format " %4.0f" (fceiling (/ file-size 1024.0))))