+ subject (gnus-fetch-field "subject"))
+ ;; If it's a patch formatted the right way, extract that data.
+ (dolist (handle (mapcar 'cdr (gnus-article-mime-handles)))
+ (when (string-match "diff\\|patch\\|plain"
+ (mm-handle-media-type handle))
+ (with-temp-buffer
+ (insert-buffer-substring (mm-handle-buffer handle))
+ (cond ((eq (mm-handle-encoding handle) 'base64)
+ (base64-decode-region (point-min) (point-max)))
+ ((eq (mm-handle-encoding handle) 'quoted-printable)
+ (quoted-printable-decode-region (point-min) (point-max))))
+ (setq patch-subject
+ (or (gnus-fetch-field "subject") patch-subject))
+ (goto-char (point-min))
+ (when (re-search-forward "^[*] " nil t)
+ (let ((start (match-beginning 0)))
+ (while (and (not (eobp))
+ (not (looking-at "---")))
+ (forward-line 1))
+ (setq changelog (buffer-substring
+ start (line-end-position 0)))))))))