-(defun riece-close-server-process (process &optional quit-message)
- (if (eq 'riece-filter (process-filter process))
- (set-process-filter process nil))
- (if (eq 'riece-sentinel (process-sentinel process))
- (set-process-sentinel process nil))
- (when (memq (process-status process) '(open run))
- (riece-process-send-string process
- (if quit-message
- (format "QUIT :%s\r\n" quit-message)
- "QUIT\r\n"))
- (delete-process process)
- (unless riece-debug
- (kill-buffer (process-buffer process)))))
-
-(eval-when-compile
- (autoload 'riece-exit "riece"))
-(defun riece-close-server (server-name &optional quit-message)
- ;; Remove channels which belong to the server.
- (let ((riece-overriding-server-name server-name)
- (channels riece-current-channels))
- (while channels
- (if (and (car channels)
- (equal (riece-identity-server (car channels))
- server-name))
- (riece-part-channel (car channels)))
- (setq channels (cdr channels)))
- (riece-redisplay-buffers))
- ;; Close now.
- (let (process)
- (if server-name
- (let ((entry (assoc server-name riece-server-process-alist)))
- (setq process (cdr entry)
- riece-server-process-alist
- (delq entry riece-server-process-alist)))
- (setq process riece-server-process
- riece-server-process nil))
- (riece-close-server-process process quit-message)
- ;; If no server process is available, exit.
- (if (and (null riece-server-process)
- (null riece-server-process-alist))
- (riece-exit))))
-
-(defun riece-close-all-server (&optional quit-message)
- (let ((process-list
- (delq nil (cons riece-server-process
- (mapcar #'cdr riece-server-process-alist)))))
- (while process-list
- (riece-close-server-process (car process-list) quit-message)
- (setq process-list (cdr process-list)))
- (setq riece-server-process nil
- riece-server-process-alist nil)
- (riece-exit)))