* Makefile.am (EXTRA_DIST): Add liece.xbm and liece.xpm.
[elisp/liece.git] / lisp / liece-dcc.el
index b519830..ff384ba 100644 (file)
 
 (defstruct liece-dcc-object type from host port file size)
 
+(defun liece-dcc-start-process (args)
+  (let ((program
+        (or (car-safe liece-dcc-program)
+            liece-dcc-program)))
+    (apply #'start-process " *DCC*" nil program args)))
+
 (defun liece-dcc-enqueue-request (type &rest args)
   (let ((request (apply #'make-liece-dcc-object :type type args)))
     (inline (queue-enqueue liece-dcc-requests request))))
          (read-file-name
           (_ "File to send: ")
           default-directory nil))
-        (liece-minibuffer-completing-default-read
+        (liece-minibuffer-completing-read
          (_ "To whom: ")
          (append liece-nick-alist liece-channel-alist)
-         nil nil liece-privmsg-partner)))
+         nil nil nil nil liece-privmsg-partner)))
 
   (setq liece-privmsg-partner towhom)
-  (let (process)
-    (setq process (start-process
-                  liece-dcc-program nil liece-dcc-program
-                  "send" (int-to-string liece-dcc-port) filename))
+  (let ((process
+        (liece-dcc-start-process
+         (list "send" (int-to-string liece-dcc-port) filename))))
     (set-process-filter process #'liece-dcc-send-filter)
     (set-process-sentinel process #'liece-dcc-sentinel))
   (or (zerop liece-dcc-port)
             (expand-file-name
              (liece-dcc-object-file object)
              liece-dcc-directory))
-           process)
-       (setq process
-             (start-process
-              liece-dcc-program nil liece-dcc-program
-              "receive"
-              (liece-dcc-object-host object)
-              (liece-dcc-object-port object)
-              (liece-dcc-object-size object)
-              (expand-file-name
-               (liece-dcc-object-file object)
-               liece-dcc-directory)))
+           (process
+            (liece-dcc-start-process
+             (list "receive"
+                   (liece-dcc-object-host object)
+                   (liece-dcc-object-port object)
+                   (liece-dcc-object-size object)
+                   (expand-file-name
+                    (liece-dcc-object-file object)
+                    liece-dcc-directory)))))
        (set-process-filter process #'liece-dcc-receive-filter)
        (set-process-sentinel process  #'liece-dcc-sentinel)
        (liece-dcc-add-to-process-alist
 
 (defun liece-command-dcc-chat-listen (towhom)
   (interactive
-   (list (liece-minibuffer-completing-default-read
+   (list (liece-minibuffer-completing-read
          (_ "With whom: ")
          (append liece-nick-alist liece-channel-alist)
-         nil nil liece-privmsg-partner)))
+         nil nil nil nil liece-privmsg-partner)))
   (setq liece-privmsg-partner towhom)
-  (let (process)
-    (as-binary-process
-     (setq process
-          (start-process
-           liece-dcc-program nil
-           liece-dcc-program "chat" "listen"
-           (int-to-string liece-dcc-port)))
-     (set-process-buffer
-      process
-      (liece-get-buffer-create (format " DCC:%s" (process-id process))))
-     (set-process-filter process 'liece-dcc-chat-listen-filter)
-     (set-process-sentinel process 'liece-dcc-sentinel)))
+  (let ((process
+        (as-binary-process
+         (liece-dcc-start-process
+          (list "chat" "listen" (int-to-string liece-dcc-port))))))
+    (set-process-buffer
+     process
+     (liece-get-buffer-create (format " DCC:%s" (process-id process))))
+    (set-process-filter process 'liece-dcc-chat-listen-filter)
+    (set-process-sentinel process 'liece-dcc-sentinel))
   (unless (zerop liece-dcc-port)
     (setq liece-dcc-port (1+ liece-dcc-port))))
 
        (liece-message (_ "DCC No chat request has been arrived."))
       (liece-dcc-message (_ "Connecting to: %s") nick)
       (setq liece-privmsg-partner nick)
-      (as-binary-process
-       (setq process
-            (start-process liece-dcc-program nil
-                           liece-dcc-program "chat" "connect"
-                           (liece-dcc-object-host object)
-                           (liece-dcc-object-port object)))
-       (set-process-buffer
-       process
-       (liece-get-buffer-create
-        (format " DCC:%s" (process-id process))))
-       (set-process-filter process #'liece-dcc-chat-connect-filter)
-       (set-process-sentinel process #'liece-dcc-sentinel)
-       (liece-dcc-add-to-process-alist
-       process 'chat :from liece-privmsg-partner)))))
+      (setq process
+           (as-binary-process
+            (liece-dcc-start-process
+             (list "chat" "connect"
+                   (liece-dcc-object-host object)
+                   (liece-dcc-object-port object)))))
+      (set-process-buffer
+       process
+       (liece-get-buffer-create
+       (format " DCC:%s" (process-id process))))
+      (set-process-filter process #'liece-dcc-chat-connect-filter)
+      (set-process-sentinel process #'liece-dcc-sentinel)
+      (liece-dcc-add-to-process-alist
+       process 'chat :from liece-privmsg-partner))))
 
 (defun liece-dcc-chat-connect-filter (process output)
   (if (string-match "^DCC chat established" output)