projects
/
elisp
/
riece.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Described 4.0.0 changes.
[elisp/riece.git]
/
lisp
/
riece-rdcc.el
diff --git
a/lisp/riece-rdcc.el
b/lisp/riece-rdcc.el
index
3ff44a4
..
d2416ce
100644
(file)
--- a/
lisp/riece-rdcc.el
+++ b/
lisp/riece-rdcc.el
@@
-18,8
+18,8
@@
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;; Commentary:
@@
-33,6
+33,7
@@
(require 'riece-identity)
(require 'riece-ctcp) ;for riece-ctcp-additional-clientinfo
(require 'riece-ruby)
(require 'riece-identity)
(require 'riece-ctcp) ;for riece-ctcp-additional-clientinfo
(require 'riece-ruby)
+(require 'riece-mcat)
(defgroup riece-rdcc nil
"DCC written in Ruby."
(defgroup riece-rdcc nil
"DCC written in Ruby."
@@
-45,16
+46,23
@@
Only used for sending files."
:type 'string
:group 'riece-rdcc)
:type 'string
:group 'riece-rdcc)
+(defcustom riece-rdcc-server-port nil
+ "Local port of the DCC server.
+Only used for sending files."
+ :type 'integer
+ :group 'riece-rdcc)
+
(defcustom riece-rdcc-send-program
'("\
require 'socket'
address = " address "
(defcustom riece-rdcc-send-program
'("\
require 'socket'
address = " address "
+port = " port "
unless address
sock = UDPSocket.new
sock.connect('164.46.176.4', 7) # www.unixuser.org/echo
address = sock.getsockname[4 .. 7].unpack('CCCC').join('.')
end
unless address
sock = UDPSocket.new
sock.connect('164.46.176.4', 7) # www.unixuser.org/echo
address = sock.getsockname[4 .. 7].unpack('CCCC').join('.')
end
-server = TCPServer.new(address, 0)
+server = TCPServer.new(address, port)
output(\"#{server.addr[3].split(/\\./).collect{|c| c.to_i}.pack('CCCC').unpack('N')[0]} #{server.addr[1]}\")
session = server.accept
if session
output(\"#{server.addr[3].split(/\\./).collect{|c| c.to_i}.pack('CCCC').unpack('N')[0]} #{server.addr[1]}\")
session = server.accept
if session
@@
-102,8
+110,6
@@
end
(defvar riece-rdcc-temp-file nil)
(defvar riece-rdcc-received-size nil)
(defvar riece-rdcc-temp-file nil)
(defvar riece-rdcc-received-size nil)
-(defvar riece-rdcc-enabled nil)
-
(defconst riece-rdcc-description
"DCC file sending protocol support (written in Ruby.)")
(defconst riece-rdcc-description
"DCC file sending protocol support (written in Ruby.)")
@@
-126,30
+132,34
@@
end
(riece-ruby-set-output-handler name #'riece-rdcc-output-handler-2))
(defun riece-rdcc-output-handler-2 (name output time)
(riece-ruby-set-output-handler name #'riece-rdcc-output-handler-2))
(defun riece-rdcc-output-handler-2 (name output time)
- (message "Sending %s...(%s/%d)"
+ (message (riece-mcat "Sending %s...(%s/%d)")
(riece-ruby-property name 'riece-rdcc-request-file)
(string-to-number output)
(riece-ruby-property name 'riece-rdcc-request-size)))
(defun riece-rdcc-exit-handler (name)
(riece-ruby-property name 'riece-rdcc-request-file)
(string-to-number output)
(riece-ruby-property name 'riece-rdcc-request-size)))
(defun riece-rdcc-exit-handler (name)
- (message "Sending %s...done"
+ (message (riece-mcat "Sending %s...done")
(riece-ruby-property name 'riece-rdcc-request-file)))
(defun riece-command-dcc-send (user file)
(interactive
(let ((completion-ignore-case t))
(list (riece-completing-read-identity
(riece-ruby-property name 'riece-rdcc-request-file)))
(defun riece-command-dcc-send (user file)
(interactive
(let ((completion-ignore-case t))
(list (riece-completing-read-identity
- "User: "
+ (riece-mcat "User: ")
(riece-get-users-on-server (riece-current-server-name)))
(riece-get-users-on-server (riece-current-server-name)))
- (expand-file-name (read-file-name "File: ")))))
+ (expand-file-name (read-file-name (riece-mcat "File: "))))))
(let ((name (riece-ruby-execute
(riece-ruby-substitute-variables
riece-rdcc-send-program
(list (cons 'address
(if riece-rdcc-server-address
(concat "'" riece-rdcc-server-address
(let ((name (riece-ruby-execute
(riece-ruby-substitute-variables
riece-rdcc-send-program
(list (cons 'address
(if riece-rdcc-server-address
(concat "'" riece-rdcc-server-address
- "'")
+ "'")
"nil"))
"nil"))
+ (cons 'port
+ (if riece-rdcc-server-port
+ (number-to-string riece-rdcc-server-port)
+ "0"))
(cons 'file
(concat "'" file "'"))
(cons 'block-size
(cons 'file
(concat "'" file "'"))
(cons 'block-size
@@
-178,7
+188,7
@@
end
(logand (lsh riece-rdcc-received-size -16) 255)
(logand (lsh riece-rdcc-received-size -8) 255)
(logand riece-rdcc-received-size 255)))
(logand (lsh riece-rdcc-received-size -16) 255)
(logand (lsh riece-rdcc-received-size -8) 255)
(logand riece-rdcc-received-size 255)))
- (message "Receiving %s from %s...(%s/%s)"
+ (message (riece-mcat "Receiving %s from %s...(%s/%s)")
(file-name-nondirectory riece-rdcc-request-file)
riece-rdcc-request-user
(riece-rdcc-format-size riece-rdcc-received-size)
(file-name-nondirectory riece-rdcc-request-file)
riece-rdcc-request-user
(riece-rdcc-format-size riece-rdcc-received-size)
@@
-191,7
+201,7
@@
end
(set-buffer (process-buffer process))
(unless (= riece-rdcc-received-size riece-rdcc-request-size)
(error "Premature end of file"))
(set-buffer (process-buffer process))
(unless (= riece-rdcc-received-size riece-rdcc-request-size)
(error "Premature end of file"))
- (message "Receiving %s from %s...done"
+ (message (riece-mcat "Receiving %s from %s...done")
(file-name-nondirectory riece-rdcc-request-file)
riece-rdcc-request-user)
(condition-case nil
(file-name-nondirectory riece-rdcc-request-file)
riece-rdcc-request-user)
(condition-case nil
@@
-226,7
+236,7
@@
end
(let ((requests riece-rdcc-requests)
(index 1))
(while requests
(let ((requests riece-rdcc-requests)
(index 1))
(while requests
- (princ (format "%2d: %s %s (%d bytes)\n"
+ (princ (format (riece-mcat "%2d: %s %s (%d bytes)\n")
index
(car (car requests))
(nth 1 (car requests))
index
(car (car requests))
(nth 1 (car requests))
@@
-248,8
+258,8
@@
end
(list request
(expand-file-name
(read-file-name
(list request
(expand-file-name
(read-file-name
- (concat "Save as (default "
- (file-name-nondirectory default-name) ") ")
+ (format (riece-mcat "Save as (default %s) ")
+ (file-name-nondirectory default-name))
(file-name-directory default-name)
default-name))))))
(let* ((temp-file (expand-file-name
(file-name-directory default-name)
default-name))))))
(let* ((temp-file (expand-file-name
@@
-305,7
+315,7
@@
end
(defun riece-handle-dcc-request (prefix target message)
(let ((case-fold-search t))
(defun riece-handle-dcc-request (prefix target message)
(let ((case-fold-search t))
- (when (and riece-rdcc-enabled
+ (when (and (get 'riece-rdcc 'riece-addon-enabled)
(string-match
"SEND \\(\\([^ ]+\\)\\|\"\\(.+\\)\"\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
message))
(string-match
"SEND \\(\\([^ ]+\\)\\|\"\\(.+\\)\"\\) \\([^ ]+\\) \\([^ ]+\\) \\([^ ]+\\)"
message))
@@
-325,7
+335,8
@@
end
(with-current-buffer (window-buffer (selected-window))
(substitute-command-keys
(format
(with-current-buffer (window-buffer (selected-window))
(substitute-command-keys
(format
- "Type \\[riece-command-dcc-receive] to receive"
+ (riece-mcat
+ "Type \\[riece-command-dcc-receive] to receive")
user))))
(riece-insert-change buffer (format "DCC SEND from %s: %s (%s)\n"
user file
user))))
(riece-insert-change buffer (format "DCC SEND from %s: %s (%s)\n"
user file
@@
-362,13
+373,11
@@
end
(defun riece-rdcc-enable ()
(define-key riece-dialogue-mode-map "\C-ds" 'riece-command-dcc-send)
(defun riece-rdcc-enable ()
(define-key riece-dialogue-mode-map "\C-ds" 'riece-command-dcc-send)
- (define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive)
- (setq riece-rdcc-enabled t))
+ (define-key riece-dialogue-mode-map "\C-dr" 'riece-command-dcc-receive))
(defun riece-rdcc-disable ()
(define-key riece-dialogue-mode-map "\C-ds" nil)
(defun riece-rdcc-disable ()
(define-key riece-dialogue-mode-map "\C-ds" nil)
- (define-key riece-dialogue-mode-map "\C-dr" nil)
- (setq riece-rdcc-enabled nil))
+ (define-key riece-dialogue-mode-map "\C-dr" nil))
(provide 'riece-rdcc)
(provide 'riece-rdcc)