From bf7cb3143da8886c3671d2ce007487b0a93ebbcd Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Sun, 4 Jan 2004 14:10:47 +0000 Subject: [PATCH] r8485: add time for topicwhotime --- irc-logger.asd | 2 +- logger.lisp | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/irc-logger.asd b/irc-logger.asd index b36a25d..89e883e 100644 --- a/irc-logger.asd +++ b/irc-logger.asd @@ -7,7 +7,7 @@ (in-package irc-logger-system) (defsystem irc-logger - :depends-on (cl-irc cl-ppcre) + :depends-on (cl-irc cl-ppcre uffi) :components ((:file "package") (:file "logger" :depends-on ("package")))) diff --git a/logger.lisp b/logger.lisp index 7c34129..449f154 100644 --- a/logger.lisp +++ b/logger.lisp @@ -246,12 +246,26 @@ (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) + (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 + (string-right-trim '(#\newline #\return) + (uffi:convert-from-cstring + (uffi:with-foreign-object (time 'time-t) + (setf (uffi:deref-pointer time :unsigned-long) secs) + (c-ctime time)))))))) ((need-user-address? type) (user-address msg)))) @@ -471,8 +485,8 @@ (defun rpl_topicwhotime-hook (msg) (output-event msg :rpl_topicwhotime - (format nil "~{~A~^ ~}" (arguments msg)) - (trailing-argument msg))) + (second (arguments msg)) + (third (arguments msg)))) (defun invite-hook (msg) @@ -542,7 +556,8 @@ 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_topicwhotime-message - irc::irc-rpl_motd irc::irc-rpl_motdstart-message irc::irc-rpl_endofmotd-message) + irc::irc-rpl_motd-message irc::irc-rpl_motdstart-message + irc::irc-rpl_endofmotd-message) ;; nothing to do ) (t @@ -634,7 +649,7 @@ (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)) -- 2.34.1