Function: erc-process-ctcp-query

erc-process-ctcp-query is a byte-compiled function defined in erc.el.gz.

Signature

(erc-process-ctcp-query PROC PARSED NICK LOGIN HOST)

Documentation

Process a CTCP query.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc.el.gz
(defun erc-process-ctcp-query (proc parsed nick login host)
  ;; FIXME: This needs a proper docstring -- Lawrence 2004-01-08
  "Process a CTCP query."
  (let ((queries (delete "" (split-string (erc-response.contents parsed)
                                          "\C-a"))))
    (if (> (length queries) 4)
        (erc-display-message
         parsed (list 'notice 'error) proc 'ctcp-too-many)
      (if (= 0 (length queries))
          (erc-display-message
           parsed (list 'notice 'error) proc
           'ctcp-empty ?n nick)
        (while queries
          (let* ((type (upcase (car (split-string (car queries)))))
                 (hook (intern-soft (concat "erc-ctcp-query-" type "-hook")))
                 (erc--msg-prop-overrides `((erc--ctcp . ,(intern type))
                                            ,@erc--msg-prop-overrides)))
            (if (and hook (boundp hook))
                (if (string-equal type "ACTION")
                    (run-hook-with-args-until-success
                     hook proc parsed nick login host
                     (car (erc-response.command-args parsed))
                     (car queries))
                  (when erc-paranoid
                    (if (erc-current-nick-p
                         (car (erc-response.command-args parsed)))
                        (erc-display-message
                         parsed 'error 'active 'ctcp-request
                         ?n nick ?u login ?h host ?r (car queries))
                      (erc-display-message
                       parsed 'error 'active 'ctcp-request-to
                       ?n nick ?u login ?h host ?r (car queries)
                       ?t (car (erc-response.command-args parsed)))))
                  (run-hook-with-args-until-success
                   hook proc nick login host
                   (car (erc-response.command-args parsed))
                   (car queries)))
              (erc-display-message
               parsed (list 'notice 'error) proc
               'undefined-ctcp)))
          (setq queries (cdr queries)))))))