projects
/
irc-logger.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r8548: fix bug with unknown/private stream of nil
[irc-logger.git]
/
logger.lisp
diff --git
a/logger.lisp
b/logger.lisp
index 26c78f55ac2350e51b524c6bf5bff87b36382a8e..16a47aff2e5336703a96456c2aba9f48803629ce 100644
(file)
--- a/
logger.lisp
+++ b/
logger.lisp
@@
-246,23
+246,33
@@
(format stream "~S~%"
(string-right-trim '(#\return) (raw-message-string msg)))))
(format stream "~S~%"
(string-right-trim '(#\return) (raw-message-string msg)))))
+(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))
(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))))
(defmethod %output-event ((format (eql :sexp)) stream utime type channel source text
msg unichannel)
((need-user-address? type)
(user-address msg))))
(defmethod %output-event ((format (eql :sexp)) stream utime type channel source text
msg unichannel)
- (let ((*print-circle* nil)
- (*print-pretty* nil))
+ (with-standard-io-syntax
(if unichannel
(format stream "(~S ~S ~S ~S ~S)~%" utime type source text (last-sexp-field type msg))
(if unichannel
(format stream "(~S ~S ~S ~S ~S)~%" utime type source text (last-sexp-field type msg))
- (format stream "(~S ~S ~S ~S ~S ~S)~%" utime type source channel text
- (last-sexp-field type msg)))))
+
(format stream "(~S ~S ~S ~S ~S ~S)~%" utime type source channel text
+
(last-sexp-field type msg)))))
(defmethod %output-event ((format (eql :text)) stream utime type channel
source text msg unichannel)
(defmethod %output-event ((format (eql :text)) stream utime type channel
source text msg unichannel)
@@
-356,10
+366,14
@@
(output-event-for-a-stream msg type channel text logger i))))))))
(defun get-private-log-stream (logger)
(output-event-for-a-stream msg type channel text logger i))))))))
(defun get-private-log-stream (logger)
- (or (private-log-stream logger) *standard-output*))
+ (if (and logger (private-log-stream logger))
+ (private-log-stream logger)
+ *standard-output*))
(defun get-unknown-log-stream (logger)
(defun get-unknown-log-stream (logger)
- (or (unknown-log-stream logger) *standard-output*))
+ (if (and logger (unknown-log-stream logger))
+ (unknown-log-stream logger)
+ *standard-output*))
(defun privmsg-hook (msg)
(let ((logger (find-logger-with-connection (connection msg)))
(defun privmsg-hook (msg)
(let ((logger (find-logger-with-connection (connection msg)))
@@
-469,6
+483,12
@@
(output-event msg :rpl_topic (format nil "~{~A~^ ~}" (arguments msg))
(trailing-argument 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
(defun invite-hook (msg)
(let ((logger (find-logger-with-connection (connection msg))))
(format
@@
-522,6
+542,7
@@
(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_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))
conn))
(defmethod cl-irc::irc-message-event :around ((msg cl-irc::irc-message))
@@
-534,7
+555,9
@@
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-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
;; nothing to do
)
(t
@@
-626,7
+649,7
@@
(defun add-logger (nick server &key channels output (password "")
realname username private-log unknown-log
(logging-stream t) (async 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))
(when (find-logger-with-nick nick)
(format
(get-private-log-stream (find-logger-with-nick nick))