X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=lisp%2Fcode-process.el;h=1d9208a3d00798d0dcd226eba1967ef72d391d27;hp=526639dd462d93c292c4602183a7c72ba1ad1b4e;hb=8ba3626da629f1b4ecafae24c85f3d0cb3bf8b8e;hpb=ea1ea793fe6e244ef5555ed983423a204101af13 diff --git a/lisp/code-process.el b/lisp/code-process.el index 526639d..1d9208a 100644 --- a/lisp/code-process.el +++ b/lisp/code-process.el @@ -1,6 +1,7 @@ ;;; code-process.el --- Process coding functions for XEmacs. -;; Copyright (C) 1985-1987, 1993, 1994, 1997 Free Software Foundation, Inc. +;; Copyright (C) 1985-1987, 1993, 1994, 1997, 2003 +;; Free Software Foundation, Inc. ;; Copyright (C) 1995 Ben Wing ;; Copyright (C) 1997 MORIOKA Tomohiko @@ -11,8 +12,6 @@ ;; This file is part of XEmacs. -;; This file is very similar to code-process.el - ;; XEmacs is free software; you can redistribute it and/or modify it ;; under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) @@ -28,11 +27,11 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Code: +;;; Commentary: + +;; This file has some similarities to code-files.el. -(eval-when-compile - (defvar buffer-file-type) - (defvar binary-process-output)) +;;; Code: (defvar process-coding-system-alist nil "Alist to decide a coding system to use for a process I/O operation. @@ -51,6 +50,8 @@ or a cons of coding systems which are used as above.") The program's input comes from file INFILE (nil means `/dev/null'). Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. @@ -64,7 +65,12 @@ If BUFFER is 0, `call-process' returns immediately with value nil. Otherwise it waits for PROGRAM to terminate and returns a numeric exit status or a signal description string. If you quit, the process is killed with SIGINT, or SIGKILL if you - quit again." + quit again. + +Coding systems are taken from `coding-system-for-read' for input and +`coding-system-for-write' for output if those variables are bound. +Otherwise they are looked up in `process-coding-system-alist'. If not +found, they default to `nil' for both input and output." (let* ((coding-system-for-read (or coding-system-for-read (let (ret) @@ -96,6 +102,8 @@ Delete the text if fourth arg DELETEP is non-nil. Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. @@ -109,11 +117,15 @@ If BUFFER is 0, returns immediately with value nil. Otherwise waits for PROGRAM to terminate and returns a numeric exit status or a signal description string. If you quit, the process is first killed with SIGINT, then with SIGKILL if -you quit again before the process exits." +you quit again before the process exits. + +Coding systems are taken from `coding-system-for-read' for input and +`coding-system-for-write' for output if those variables are bound. +Otherwise they are looked up in `process-coding-system-alist'. If not +found, they default to `nil' for both input and output." (let ((temp (make-temp-name - (concat (file-name-as-directory (temp-directory)) - (if (memq system-type '(ms-dos windows-nt)) "em" "emacs"))))) + (concat (file-name-as-directory (temp-directory)) "emacs")))) (unwind-protect (let (cs-r cs-w) (let (ret) @@ -130,6 +142,9 @@ you quit again before the process exits." (cond ((consp ret) (setq cs-r (car ret) cs-w (cdr ret))) + ((null ret) + (setq cs-r buffer-file-coding-system + cs-w buffer-file-coding-system)) ((find-coding-system ret) (setq cs-r ret cs-w ret)))) @@ -137,10 +152,7 @@ you quit again before the process exits." (or coding-system-for-read cs-r)) (coding-system-for-write (or coding-system-for-write cs-w))) - (if (memq system-type '(ms-dos windows-nt)) - (let ((buffer-file-type binary-process-output)) - (write-region start end temp nil 'silent)) - (write-region start end temp nil 'silent)) + (write-region start end temp nil 'silent) (if deletep (delete-region start end)) (apply #'call-process program temp buffer displayp args))) (ignore-file-errors (delete-file temp))))) @@ -150,14 +162,18 @@ you quit again before the process exits." Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS NAME is name for process. It is modified if necessary to make it unique. BUFFER is the buffer or (buffer-name) to associate with the process. - Process output goes at end of that buffer, unless you specify - an output stream or filter function to handle the output. - BUFFER may be also nil, meaning that this process is not associated - with any buffer +Process output goes at end of that buffer, unless you specify +an output stream or filter function to handle the output. +BUFFER may also be nil, meaning that this process is not associated +with any buffer. Third arg is program file name. It is searched for as in the shell. Remaining arguments are strings to give program as arguments. -INCODE and OUTCODE specify the coding-system objects used in input/output - from/to the process." + +Coding systems are taken from `coding-system-for-read' for input and +`coding-system-for-write' for output if those variables are bound. +Otherwise they are looked up in `process-coding-system-alist'. If not +found, they default to `undecided' for input and `nil' (binary) for +output." (let (cs-r cs-w) (let (ret) (catch 'found @@ -200,7 +216,7 @@ See also the function `find-operation-coding-system'.") (defun open-network-stream (name buffer host service &optional protocol) "Open a TCP connection for a service to a host. -Return a subprocess-object to represent the connection. +Return a process object to represent the connection. Input and output work as for subprocesses; `delete-process' closes it. Args are NAME BUFFER HOST SERVICE. NAME is name for process. It is modified if necessary to make it unique. @@ -216,7 +232,7 @@ Fifth argument PROTOCOL is a network protocol. Currently 'tcp (Transmission Control Protocol) and 'udp (User Datagram Protocol) are supported. When omitted, 'tcp is assumed. -Ouput via `process-send-string' and input via buffer or filter (see +Output via `process-send-string' and input via buffer or filter (see `set-process-filter') are stream-oriented. That means UDP datagrams are not guaranteed to be sent and received in discrete packets. (But small datagrams around 500 bytes that are not truncated by `process-send-string' @@ -257,4 +273,4 @@ lost packets." (or coding-system-for-write cs-w))) (open-network-stream-internal name buffer host service protocol)))) -;;; mule-process.el ends here +;;; code-process.el ends here