projects
/
riece
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* riece-unread.el: Use riece-facep to check existence of
[riece]
/
lisp
/
riece-async.el
diff --git
a/lisp/riece-async.el
b/lisp/riece-async.el
index
c39ccbe
..
930a2c3
100644
(file)
--- a/
lisp/riece-async.el
+++ b/
lisp/riece-async.el
@@
-37,6
+37,8
@@
;;; Code:
;;; Code:
+(require 'riece-options)
+
(defgroup riece-async nil
"Connect to IRC server via asynchronous proxy"
:prefix "riece-"
(defgroup riece-async nil
"Connect to IRC server via asynchronous proxy"
:prefix "riece-"
@@
-50,11
+52,9
@@
(defcustom riece-async-server-program
'("\
require 'io/nonblock'
(defcustom riece-async-server-program
'("\
require 'io/nonblock'
-
socket = TCPSocket.new(" host ", " service ")
socket = TCPSocket.new(" host ", " service ")
-$stdout.write(\"NOTICE CONNECTED #{$$}\
r
\n\")
+$stdout.write(\"NOTICE CONNECTED #{$$}\
\r\
\n\")
$stdout.flush
$stdout.flush
-
$stdout.nonblock = true
trap('STOP', 'IGNORE')
trap('TSTP', 'IGNORE')
$stdout.nonblock = true
trap('STOP', 'IGNORE')
trap('TSTP', 'IGNORE')
@@
-63,6
+63,11
@@
buf = ''
loop do
rfds, wfds, = select([socket, $stdin], wfds_in)
unless wfds.empty?
loop do
rfds, wfds, = select([socket, $stdin], wfds_in)
unless wfds.empty?
+ until buf.length <= " max-buffer-size "
+ i = buf.index(\"\\r\\n\")
+ break unless i
+ buf.slice!(0 .. i + 1)
+ end
begin
until buf.empty?
len = $stdout.syswrite(buf)
begin
until buf.empty?
len = $stdout.syswrite(buf)
@@
-72,39
+77,38
@@
loop do
rescue Errno::EAGAIN
end
end
rescue Errno::EAGAIN
end
end
- if rfds.
delete
(socket)
- line = socket.gets(\"\
r
\n\")
+ if rfds.
include?
(socket)
+ line = socket.gets(\"\
\r\
\n\")
break unless line
break unless line
- if line =~ /^(?::[^ ]+ +)?PING +(.+)\
r
\n/i
- socket.write(\"PONG #{$1}\
r
\n\")
+ if line =~ /^(?::[^ ]+ +)?PING +(.+)\
\r\
\n/i
+ socket.write(\"PONG #{$1}\
\r\
\n\")
socket.flush
else
wfds_in = [$stdout]
buf << line
socket.flush
else
wfds_in = [$stdout]
buf << line
- until buf.length <= " max-buffer-size "
- buf.slice!(0 .. buf.index(\"\r\n\"))
- end
end
end
end
end
- if rfds.
delete
($stdin)
- line = $stdin.gets(\"\
r
\n\")
+ if rfds.
include?
($stdin)
+ line = $stdin.gets(\"\
\r\
\n\")
break unless line
socket.write(line)
socket.flush
end
end
socket.close
break unless line
socket.write(line)
socket.flush
end
end
socket.close
-exit
")
")
- "Ruby program of asynchronous proxy"
+ "Ruby program of asynchronous proxy
.
"
:type 'list
:group 'riece-async)
(defcustom riece-async-max-buffer-size 65535
:type 'list
:group 'riece-async)
(defcustom riece-async-max-buffer-size 65535
- "Maximum size of the write buffer"
+ "Maximum size of the write buffer
.
"
:type 'integer
:group 'riece-async)
:type 'integer
:group 'riece-async)
+(defconst riece-async-description
+ "Keep IRC connection with external process")
+
(defun riece-async-substitute-variables (program variable value)
(setq program (copy-sequence program))
(let ((pointer program))
(defun riece-async-substitute-variables (program variable value)
(setq program (copy-sequence program))
(let ((pointer program))