]> git.eshelyaron.com Git - emacs.git/commitdiff
(archive-zoo-summarize): Handle archives with long file names.
authorRichard M. Stallman <rms@gnu.org>
Mon, 30 Oct 1995 19:18:52 +0000 (19:18 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 30 Oct 1995 19:18:52 +0000 (19:18 +0000)
lisp/arc-mode.el

index da4b23170144ddf13fb7a61047dea05fb5f22554..7033aeaea2b9d550bf77bd8109789a2002dbfb59 100644 (file)
@@ -1428,9 +1428,23 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
              (modtime (archive-l-e (+ p 16) 2))
              (ucsize  (archive-l-e (+ p 20) 4))
             (namefld (buffer-substring (+ p 38) (+ p 38 13)))
-            (fnlen   (or (string-match "\0" namefld) 13))
-            (efnname (substring namefld 0 fnlen))
-            (fiddle  (string= efnname (upcase efnname)))
+            (dirtype (char-after (+ p 4)))
+            (lfnlen  (if (= dirtype 2) (char-after (+ p 56)) 0))
+            (ldirlen (if (= dirtype 2) (char-after (+ p 57)) 0))
+            (fnlen   (+ ldirlen
+                        (if (> lfnlen 0)
+                            (1- lfnlen)
+                          (or (string-match "\0" namefld) 13))))
+            (efnname (concat
+                      (if (> ldirlen 0)
+                          (concat (buffer-substring
+                                   (+ p 58 lfnlen) (+ p 58 lfnlen ldirlen -1))
+                                  "/")
+                        "")
+                      (if (> lfnlen 0)
+                          (buffer-substring (+ p 58) (+ p 58 lfnlen -1))
+                        (substring namefld 0 fnlen))))
+            (fiddle  (and (= lfnlen 0) (string= efnname (upcase efnname))))
              (ifnname (if fiddle (downcase efnname) efnname))
              (text    (format "  %8d  %-11s  %-8s  %s"
                               ucsize