diff options
| author | Eli Zaretskii | 2008-04-25 09:03:19 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2008-04-25 09:03:19 +0000 |
| commit | 0e5016a6475a53be7aa6ee81f1acd4366ff6b603 (patch) | |
| tree | 241eea896663fa3c7c40bd4751febbc52c2dfbb9 | |
| parent | 38a8b7032a4f093552a8640b1c669096ea92535c (diff) | |
| download | emacs-0e5016a6475a53be7aa6ee81f1acd4366ff6b603.tar.gz emacs-0e5016a6475a53be7aa6ee81f1acd4366ff6b603.zip | |
(ls-lisp-format): Fix last change.
| -rw-r--r-- | lisp/ChangeLog | 4 | ||||
| -rw-r--r-- | lisp/ls-lisp.el | 25 |
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 @@ | |||
| 1 | 2008-04-25 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * ls-lisp.el (ls-lisp-format): Fix last change. | ||
| 4 | |||
| 1 | 2008-04-24 Nick Roberts <nickrob@snap.net.nz> | 5 | 2008-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)))) |