From: Lars Ingebrigtsen Date: Sun, 21 Jan 2018 20:41:36 +0000 (+0100) Subject: (archive-rar-summarize): Adjust parsing to be more permissive X-Git-Tag: emacs-27.0.90~5833 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9ae0e4aa1aee3d7ff2546e34aa83536f72f8c06a;p=emacs.git (archive-rar-summarize): Adjust parsing to be more permissive * 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 --- diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 3973e97d626..adb36699032 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -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))