+ (riece-format-identity target-identity t)))
+ "\n"))))
+
+(defun riece-handle-ctcp-clientinfo-request (prefix target string)
+ (let* ((target-identity (riece-make-identity target riece-server-name))
+ (buffer (if (riece-channel-p target)
+ (riece-channel-buffer target-identity)))
+ (user (riece-prefix-nickname prefix)))
+ (riece-send-string
+ (format "NOTICE %s :\1CLIENTINFO %s\1\r\n"
+ user
+ (let (messages)
+ (mapatoms
+ (lambda (atom)
+ (let ((case-fold-search t))
+ (if (and (fboundp atom)
+ (string-match
+ "riece-handle-ctcp-\\(.+\\)-request"
+ (symbol-name atom)))
+ (setq messages
+ (cons (match-string 1 (symbol-name atom))
+ messages))))))
+ (mapconcat #'upcase (append messages
+ riece-ctcp-additional-clientinfo)
+ " "))))
+ (riece-insert-change buffer (format "CTCP CLIENTINFO from %s\n" user))
+ (riece-insert-change
+ (if (and riece-channel-buffer-mode
+ (not (eq buffer riece-channel-buffer)))
+ (list riece-dialogue-buffer riece-others-buffer)
+ riece-dialogue-buffer)
+ (concat
+ (riece-concat-server-name
+ (format "CTCP CLIENTINFO from %s (%s) to %s"
+ user
+ (riece-strip-user-at-host (riece-prefix-user-at-host prefix))
+ (riece-format-identity target-identity t)))