From a6f96317d017cb242aab5ada930a41b489e6d134 Mon Sep 17 00:00:00 2001 From: ueno Date: Sun, 16 Jul 2006 01:07:10 +0000 Subject: [PATCH] * riece.el (riece-save-variables-files): Place ";;; Do not edit this file!" at the beginning of ~/.riece/save. * riece-server.el (riece-reset-process-buffer): Make riece-filter-running local to the server buffer. * riece-filter.el (riece-filter): Allow only a message handler to run at a time. * riece-globals.el (riece-filter-running): New variable. --- lisp/ChangeLog | 11 ++++++++++ lisp/riece-filter.el | 58 ++++++++++++++++++++++++++++--------------------- lisp/riece-globals.el | 3 +++ lisp/riece-server.el | 1 + lisp/riece.el | 2 ++ 5 files changed, 50 insertions(+), 25 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6805712..c6b2e50 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2006-07-16 Daiki Ueno + + * riece.el (riece-save-variables-files): Place ";;; Do not edit + this file!" at the beginning of ~/.riece/save. + + * riece-server.el (riece-reset-process-buffer): Make + riece-filter-running local to the server buffer. + * riece-filter.el (riece-filter): Allow only a message handler to + run at a time. + * riece-globals.el (riece-filter-running): New variable. + 2006-06-01 Daiki Ueno * riece-ndcc.el: Don't use calc. diff --git a/lisp/riece-filter.el b/lisp/riece-filter.el index 6ce65bc..1249dd7 100644 --- a/lisp/riece-filter.el +++ b/lisp/riece-filter.el @@ -76,31 +76,39 @@ (set-buffer (process-buffer process)) (goto-char (point-max)) (insert input) - (goto-char riece-read-point) - (beginning-of-line) - (while (looking-at ".*\n") ;the input line is finished - (save-excursion - (if (looking-at - ":\\([^ ]+\\) +\\([0-5][0-9][0-9]\\) +\\([^ ]+\\) +\\(.*\\)") - (riece-handle-numeric-reply - (match-string 1) ;prefix - (string-to-number (match-string 2)) ;number - (match-string 3) ;name - (riece-chomp-string (match-string 4))) ;reply string - (if (looking-at "\\(:\\([^ ]+\\) +\\)?\\([^ ]+\\) +\\(.*\\)") - (riece-handle-message - (match-string 2) ;optional prefix - (match-string 3) ;command - (riece-chomp-string (match-string 4))) ;params & trailing - (if riece-debug - (message "Weird message from server: %s" - (buffer-substring (point) (progn - (end-of-line) - (point)))))))) - (forward-line)) - (unless riece-debug - (delete-region (point-min) (point))) - (setq riece-read-point (point)))) + (unless riece-filter-running + (unwind-protect + (progn + (setq riece-filter-running t) + (goto-char riece-read-point) + (beginning-of-line) + (while (looking-at ".*\n") ;the input line is finished + (save-excursion + (if (looking-at + ":\\([^ ]+\\) +\\([0-5][0-9][0-9]\\) +\\([^ ]+\\)\ + +\\(.*\\)") + (riece-handle-numeric-reply + (match-string 1) ;prefix + (string-to-number (match-string 2)) ;number + (match-string 3) ;name + (riece-chomp-string (match-string 4))) ;reply string + (if (looking-at "\\(:\\([^ ]+\\) +\\)?\\([^ ]+\\) +\\(.*\\)") + (riece-handle-message + (match-string 2) ;optional prefix + (match-string 3) ;command + (riece-chomp-string (match-string 4)) + ;params & trailing + ) + (if riece-debug + (message "Weird message from server: %s" + (buffer-substring (point) (progn + (end-of-line) + (point)))))))) + (forward-line)) + (unless riece-debug + (delete-region (point-min) (point))) + (setq riece-read-point (point))) + (setq riece-filter-running nil))))) (eval-when-compile (autoload 'riece-exit "riece")) diff --git a/lisp/riece-globals.el b/lisp/riece-globals.el index 5e80bc1..017e037 100644 --- a/lisp/riece-globals.el +++ b/lisp/riece-globals.el @@ -113,6 +113,9 @@ Local to the server buffers.") (defvar riece-read-point nil "Point at the last input was seen. Local to the server buffers.") +(defvar riece-filter-running nil + "Lock of the process filter; non-nil indicates the process filter is running. +Local to the server buffers.") (defvar riece-send-queue nil "Send queue for avoiding client flood. Local to the server buffers.") diff --git a/lisp/riece-server.el b/lisp/riece-server.el index 8f3872a..5a0db11 100644 --- a/lisp/riece-server.el +++ b/lisp/riece-server.el @@ -261,6 +261,7 @@ the `riece-server-keyword-map' variable." (make-local-variable 'riece-server-name) (make-local-variable 'riece-read-point) (setq riece-read-point (point-min)) + (make-local-variable 'riece-filter-running) (make-local-variable 'riece-send-queue) (setq riece-send-queue (riece-make-queue)) (make-local-variable 'riece-send-size) diff --git a/lisp/riece.el b/lisp/riece.el index 2fc1393..bf38673 100644 --- a/lisp/riece.el +++ b/lisp/riece.el @@ -250,6 +250,8 @@ If optional argument SAFE is nil, overwrite previous definitions." (defun riece-save-variables-files () "Save current settings to `riece-saved-variables-file'." (with-temp-file riece-saved-variables-file + (insert ";;; This file is generated automatically by " riece-version ".\n" + ";;; Do not edit this file!\n\n") (let ((print-quoted t) (print-readably t) print-escape-multibyte -- 1.7.10.4