- (if (file-directory-p pathname)
- (progn
- (setq nnmh-current-directory pathname)
- (and nnmh-get-new-mail
- nnmh-be-safe
- (nnmh-update-gnus-unreads group))
- (or dont-check
- (progn
- (setq dir
- (sort
- (mapcar
- (function
- (lambda (name)
- (string-to-int name)))
- (directory-files pathname nil "^[0-9]+$" t))
- '<))
- (save-excursion
- (set-buffer nntp-server-buffer)
- (erase-buffer)
- (if dir
- (insert (format "211 %d %d %d %s\n" (length dir)
- (car dir)
- (progn (while (cdr dir)
- (setq dir (cdr dir)))
- (car dir))
- group))
- (insert (format "211 0 1 0 %s\n" group))))))
- t)
- (setq nnmh-status-string "No such group")
- nil)))
-
-(defun nnmh-request-scan (&optional group server)
- (nnmail-get-new-mail 'nnmh nil nnmh-directory group))
-
-(defun nnmh-request-list (&optional server dir)
- (or dir
- (save-excursion
- (set-buffer nntp-server-buffer)
- (erase-buffer)
- (setq dir (file-truename (file-name-as-directory nnmh-directory)))))
+ (cond
+ ((not (file-directory-p pathname))
+ (nnheader-report
+ 'nnmh "Can't select group (no such directory): %s" group))
+ (t
+ (setq nnmh-current-directory pathname)
+ (and nnmh-get-new-mail
+ nnmh-be-safe
+ (nnmh-update-gnus-unreads group))
+ (cond
+ (dont-check
+ (nnheader-report 'nnmh "Selected group %s" group)
+ t)
+ (t
+ ;; Re-scan the directory if it's on a foreign system.
+ (nnheader-re-read-dir pathname)
+ (setq dir
+ (sort
+ (mapcar (lambda (name) (string-to-int name))
+ (directory-files pathname nil "^[0-9]+$" t))
+ '<))
+ (cond
+ (dir
+ (nnheader-report 'nnmh "Selected group %s" group)
+ (nnheader-insert
+ "211 %d %d %d %s\n" (length dir) (car dir)
+ (progn (while (cdr dir) (setq dir (cdr dir))) (car dir))
+ group))
+ (t
+ (nnheader-report 'nnmh "Empty group %s" group)
+ (nnheader-insert (format "211 0 1 0 %s\n" group))))))))))
+
+(deffoo nnmh-request-scan (&optional group server)
+ (nnmail-get-new-mail 'nnmh nil nnmh-directory group))
+
+(deffoo nnmh-request-list (&optional server dir)
+ (nnheader-insert "")
+ (nnmh-possibly-change-directory nil server)
+ (let ((pathname-coding-system 'binary)
+ (nnmh-toplev
+ (file-truename (or dir (file-name-as-directory nnmh-directory)))))
+ (nnmh-request-list-1 nnmh-toplev))
+ (setq nnmh-group-alist (nnmail-get-active))
+ t)
+
+(defvar nnmh-toplev)
+(defun nnmh-request-list-1 (dir)