(with-current-buffer (process-buffer process)
(process-send-string process (riece-encode-coding-string string))))
-(defun riece-send-string (string)
- (let* ((server-name
- (or riece-overriding-server-name
+(defun riece-current-server-name ()
+ (or riece-overriding-server-name
;already in the server buffer
- (if (local-variable-p 'riece-server-name (current-buffer))
- riece-server-name
- (if riece-current-channel
- (riece-identity-server riece-current-channel)
- (if (riece-server-opened "")
- "")))))
+ (if (local-variable-p 'riece-server-name (current-buffer))
+ riece-server-name
+ (if riece-current-channel
+ (riece-identity-server riece-current-channel)
+ (if (riece-server-opened "")
+ "")))))
+
+(defun riece-send-string (string)
+ (let* ((server-name (riece-current-server-name))
(process (riece-server-process server-name)))
(unless process
(error "%s" (substitute-command-keys
(message "Logging in to %s..." server-name))
(if riece-reconnect-with-password ;password incorrect or not set.
(unwind-protect
- (setq password (riece-read-passwd "Password: "))
+ ;; XEmacs signals an error when the keyboard cannot be grabbed.
+ (condition-case nil
+ (setq password (riece-read-passwd "Password: "))
+ (error))
(setq riece-reconnect-with-password nil)))
(if password
(riece-process-send-string process
(delq (rassq process riece-server-process-alist)
riece-server-process-alist)))
+(defun riece-server-process-opened (process)
+ (not (null (memq (process-status process) '(open run)))))
+
(defun riece-server-opened (&optional server-name)
- (let ((alist riece-server-process-alist))
- (catch 'found
- (while alist
- (if (memq (process-status (cdr (car alist))) '(open run))
- (throw 'found t))
- (setq alist (cdr alist))))))
+ (if server-name
+ (let ((process (riece-server-process server-name)))
+ (and process
+ (riece-server-process-opened process)))
+ (let ((alist riece-server-process-alist))
+ (catch 'found
+ (while alist
+ (if (riece-server-process-opened (cdr (car alist)))
+ (throw 'found t))
+ (setq alist (cdr alist)))))))
(eval-when-compile
(autoload 'riece-exit "riece"))
(defun riece-quit-server-process (process &optional message)
- (run-at-time riece-quit-timeout nil
- (lambda (process)
- (when (rassq process riece-server-process-alist)
- (riece-close-server-process process)
- ;; If no server process is available, exit.
- (unless riece-server-process-alist
- (riece-exit))))
- process)
+ (if riece-quit-timeout
+ (riece-run-at-time riece-quit-timeout nil
+ (lambda (process)
+ (when (rassq process riece-server-process-alist)
+ (riece-close-server-process process)
+ ;; If no server process is available, exit.
+ (unless riece-server-process-alist
+ (riece-exit))))
+ process))
(riece-process-send-string process
(if message
(format "QUIT :%s\r\n" message)