aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1995-10-30 19:18:52 +0000
committerRichard M. Stallman1995-10-30 19:18:52 +0000
commit83c4abcb4897f155999f436ffb28644cb08b7e5e (patch)
treeb1df9adb5bf94d6465bfa6066ac07943032ee900
parent9742dbc0eaf8d533c82850945e8b440b8ab752a0 (diff)
downloademacs-83c4abcb4897f155999f436ffb28644cb08b7e5e.tar.gz
emacs-83c4abcb4897f155999f436ffb28644cb08b7e5e.zip
(archive-zoo-summarize): Handle archives with long file names.
-rw-r--r--lisp/arc-mode.el20
1 files changed, 17 insertions, 3 deletions
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index da4b2317014..7033aeaea2b 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -1428,9 +1428,23 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1428 (modtime (archive-l-e (+ p 16) 2)) 1428 (modtime (archive-l-e (+ p 16) 2))
1429 (ucsize (archive-l-e (+ p 20) 4)) 1429 (ucsize (archive-l-e (+ p 20) 4))
1430 (namefld (buffer-substring (+ p 38) (+ p 38 13))) 1430 (namefld (buffer-substring (+ p 38) (+ p 38 13)))
1431 (fnlen (or (string-match "\0" namefld) 13)) 1431 (dirtype (char-after (+ p 4)))
1432 (efnname (substring namefld 0 fnlen)) 1432 (lfnlen (if (= dirtype 2) (char-after (+ p 56)) 0))
1433 (fiddle (string= efnname (upcase efnname))) 1433 (ldirlen (if (= dirtype 2) (char-after (+ p 57)) 0))
1434 (fnlen (+ ldirlen
1435 (if (> lfnlen 0)
1436 (1- lfnlen)
1437 (or (string-match "\0" namefld) 13))))
1438 (efnname (concat
1439 (if (> ldirlen 0)
1440 (concat (buffer-substring
1441 (+ p 58 lfnlen) (+ p 58 lfnlen ldirlen -1))
1442 "/")
1443 "")
1444 (if (> lfnlen 0)
1445 (buffer-substring (+ p 58) (+ p 58 lfnlen -1))
1446 (substring namefld 0 fnlen))))
1447 (fiddle (and (= lfnlen 0) (string= efnname (upcase efnname))))
1434 (ifnname (if fiddle (downcase efnname) efnname)) 1448 (ifnname (if fiddle (downcase efnname) efnname))
1435 (text (format " %8d %-11s %-8s %s" 1449 (text (format " %8d %-11s %-8s %s"
1436 ucsize 1450 ucsize