(format stream "~S~%"
(string-right-trim '(#\return) (raw-message-string msg)))))
+(uffi:def-foreign-type time-t :unsigned-long)
+(uffi:def-function ("ctime" c-ctime)
+ ((time (* time-t)))
+ :returning :cstring)
+
+(defconstant +posix-epoch+
+ (encode-universal-time 0 0 0 1 1 1970 0))
+
+(defun posix-time-to-utime (time)
+ (+ time +posix-epoch+))
+
(defun last-sexp-field (type msg)
(cond
((null msg)
nil)
((eq type :kick)
(trailing-argument msg))
+ ((eq type :rpl_topicwhotime)
+ (when (stringp (car (last (arguments msg))))
+ (let ((secs (parse-integer (car (last (arguments msg))) :junk-allowed t)))
+ (when secs
+ (posix-time-to-utime secs)))))
((need-user-address? type)
(user-address msg))))
(output-event msg :rpl_topic (format nil "~{~A~^ ~}" (arguments msg))
(trailing-argument msg)))
+(defun rpl_topicwhotime-hook (msg)
+ (output-event msg :rpl_topicwhotime
+ (second (arguments msg))
+ (third (arguments msg))))
+
+
(defun invite-hook (msg)
(let ((logger (find-logger-with-connection (connection msg))))
(format
(add-hook conn 'irc::irc-rpl_topic-message 'rpl_topic-hook)
(add-hook conn 'irc::irc-rpl_namreply-message 'rpl_namreply-hook)
(add-hook conn 'irc::irc-rpl_endofnames-message 'rpl_endofnames-hook)
+ (add-hook conn 'irc::irc-rpl_topicwhotime-message 'rpl_topicwhotime-hook)
conn))
(defmethod cl-irc::irc-message-event :around ((msg cl-irc::irc-message))
irc::irc-pong-message irc::irc-kill-message irc::irc-invite-message
irc::irc-rpl_killdone-message irc::irc-rpl_closing-message
irc::irc-rpl_topic-message irc::irc-rpl_namreply-message
- irc::irc-rpl_endofnames-message)
+ irc::irc-rpl_endofnames-message irc::irc-rpl_topicwhotime-message
+ irc::irc-rpl_motd-message irc::irc-rpl_motdstart-message
+ irc::irc-rpl_endofmotd-message)
;; nothing to do
)
(t
(defun add-logger (nick server &key channels output (password "")
realname username private-log unknown-log
(logging-stream t) (async t)
- (formats '(:text)))
+ (formats '(:sexp)))
(when (find-logger-with-nick nick)
(format
(get-private-log-stream (find-logger-with-nick nick))