]> git.eshelyaron.com Git - emacs.git/commitdiff
(archive-rar-summarize): Adjust parsing to be more permissive
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 21 Jan 2018 20:41:36 +0000 (21:41 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 21 Jan 2018 20:42:05 +0000 (21:42 +0100)
* lisp/arc-mode.el (archive-rar-summarize): Adjust parsing to
be more permissive.

The previous code would stop parsing if we had a directory entry or a
negative ratio as seen from the output of lsar on Debian jessie:

  0. D----    16221659  -----  Nr20  2005-12-24 19:30  foo/
  4. -----      466509  -0.0%  Nr20  2005-12-24 19:19  foo/bar.jpg

lisp/arc-mode.el

index 3973e97d626a08407ceabe47a52cd21c26aa130c..adb36699032b79a78f0a0db0e8c330475314c3bd 100644 (file)
@@ -2043,13 +2043,13 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
       (if copy (delete-file copy))
       (goto-char (point-min))
       (re-search-forward "^\\(\s+=+\s?+\\)+\n")
-      (while (looking-at (concat "^\s+[0-9.]+\s+-+\s+"   ; Flags
-                                 "\\([0-9-]+\\)\s+"      ; Size
-                                 "\\([0-9.%]+\\)\s+"     ; Ratio
-                                 "\\([0-9a-zA-Z]+\\)\s+" ; Mode
-                                 "\\([0-9-]+\\)\s+"      ; Date
-                                 "\\([0-9:]+\\)\s+"      ; Time
-                                 "\\(.*\\)\n"            ; Name
+      (while (looking-at (concat "^\s+[0-9.]+\s+D?-+\s+"   ; Flags
+                                 "\\([0-9-]+\\)\s+"        ; Size
+                                 "\\([-0-9.%]+\\|-+\\)\s+" ; Ratio
+                                 "\\([0-9a-zA-Z]+\\)\s+"   ; Mode
+                                 "\\([0-9-]+\\)\s+"        ; Date
+                                 "\\([0-9:]+\\)\s+"        ; Time
+                                 "\\(.*\\)\n"              ; Name
                                  ))
         (goto-char (match-end 0))
         (let ((name (match-string 6))