- ;; Check parameters for sloppy equalness.
- (let ((p1 (copy-list (cddr m1)))
- (p2 (copy-list (cddr m2)))
- e1 e2)
- (block nil
- (while (setq e1 (pop p1))
- (unless (setq e2 (assq (car e1) p2))
- ;; The parameter doesn't exist in p2.
- (return nil))
- (setq p2 (delq e2 p2))
- (unless (equalp e1 e2)
- (if (not (and (stringp (cadr e1))
- (stringp (cadr e2))))
- (return nil)
- ;; Special-case string parameter comparison so that we
- ;; can uniquify them.
- (let ((s1 (cadr e1))
- (s2 (cadr e2)))
- (when (string-match "/$" s1)
- (setq s1 (directory-file-name s1)))
- (when (string-match "/$" s2)
- (setq s2 (directory-file-name s2)))
- (unless (equal s1 s2)
- (return nil))))))
- ;; If p2 now is empty, they were equal.
- (null p2))))))
+ (gnus-sloppily-equal-method-parameters m1 m2))))
+
+(defsubst gnus-sloppily-equal-method-parameters (m1 m2)
+ ;; Check parameters for sloppy equalness.
+ (let ((p1 (copy-list (cddr m1)))
+ (p2 (copy-list (cddr m2)))
+ e1 e2)
+ (block nil
+ (while (setq e1 (pop p1))
+ (unless (setq e2 (assq (car e1) p2))
+ ;; The parameter doesn't exist in p2.
+ (return nil))
+ (setq p2 (delq e2 p2))
+ (unless (equalp e1 e2)
+ (if (not (and (stringp (cadr e1))
+ (stringp (cadr e2))))
+ (return nil)
+ ;; Special-case string parameter comparison so that we
+ ;; can uniquify them.
+ (let ((s1 (cadr e1))
+ (s2 (cadr e2)))
+ (when (string-match "/$" s1)
+ (setq s1 (directory-file-name s1)))
+ (when (string-match "/$" s2)
+ (setq s2 (directory-file-name s2)))
+ (unless (equal s1 s2)
+ (return nil))))))
+ ;; If p2 now is empty, they were equal.
+ (null p2))))