anchor.diff:    ;; (format xmpp:*debug-stream* "~&personal: ~a" message)
     ;; (format xmpp:*debug-stream* "~&personal: ~a" (xmpp:body message))
     (optima:match (xmpp:body message)
  +    ((equal "errors")
  +     (reply-chat connection (xmpp:from message)
  +                 (format-errors) (xmpp::type- message)))
       ((optima.ppcre:ppcre "^say (.*)$" text)
        (reply-chat connection (xmpp:from message)
  -                 text (xmpp::type- message)))))
  +                 text (xmpp::type- message)))
  +    ((optima.ppcre:ppcre "^man ([^:]+):([^/]+)/(.+)$" m f a)
  +     (reply-chat connection (xmpp:from message)
  +                 (get-erl-man-info m f a) (xmpp::type- message)))
  +    ((optima.ppcre:ppcre "^man ([^:]+):([^/]+)$" m f)
  +     (reply-chat connection (xmpp:from message)
  +                 (get-erl-man-info m f) (xmpp::type- message)))
  +    ((optima.ppcre:ppcre "^man ([^:]+)$" m)
  +     (reply-chat connection (xmpp:from message)
  +                 (get-erl-man-info m) (xmpp::type- message)))))
  +
  +(defun my-subseq (seq start &optional end)
  +  (if (> end (length seq))
  +      (subseq seq start)
  +      (subseq seq start end)))
  +
  +(defun format-errors ()
  +  (with-output-to-string (s)
  +    (format s "~a total, last errors:" (length *errors*))
  +    (loop for e in (my-subseq *errors* 0 5)
  +       do (format s "~&~a" e))))
   
   (defun process-groupchat-message (connection message)
     (let ((starts (starts-with-nick (xmpp:username connection)
  
positive.code: (defun kill-thread (thread)
    (when (bordeaux-threads:threadp thread)
      (bordeaux-threads:destroy-thread thread)))
  
negative.code:                                    :start total-readed))
         (decf readed total-readed)
         (incf total-readed readed)
         (when (< readed buff-size)
           (setf (fill-pointer buffer) total-readed))
         (setf result (funcall condition buffer))
         (when result
           (when result-only
             (return result))
           (return (values result buffer total-readed)))
         (when (< readed buff-size)
           (when result-only
             (return result))
           (return (values nil buffer total-readed)))
         (adjust-array buffer
                       (+ (array-total-size buffer) buff-size)
                       :fill-pointer t))))
  
  (defun get-http-page-title (url)
    (multiple-value-bind (stream status headers) (drakma:http-request url :want-stream t)
      (unwind-protect
           (when (and (= status 200) (search "text/html" (cdr (assoc :content-type headers))))
             (read-until stream #'(lambda (data)
                                    (ppcre:register-groups-bind
                                        (title)
                                        ("(?i)<title>([^<]*)</title>" data :sharedp t)
                                      title))
                         :result-only t))
        (close stream))))
  
  (defun process-common (connection message)
    (optima:match (xmpp:body message)
      ((optima.ppcre:ppcre "(http[s]?://[\\S]+)" url)
       (let ((title (get-http-page-title url)))
         (when title
           (reply-chat connection (xmpp:from message)
                       title (xmpp::type- message)))))))
  
  (defun reply-chat (connection to reply kind)
    (if (string-equal kind "groupchat")
  