1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

(nntp-netcat-command): Rename from nntp-via-netcat-command.

(nntp-netcat-switches): Rename from nntp-via-netcat-switches.
(nntp-open-telnet, nntp-open-rlogin): Use with-current-buffer.
(nntp-service-to-port): New function.
(nntp-open-via-rlogin-and-netcat, nntp-open-via-telnet-and-telnet)
(nntp-open-telnet-stream, nntp-open-via-rlogin-and-telnet): Use it.
(nntp-open-netcat-stream): New function.
(nntp-open-via-rlogin-and-netcat): Don't use a pty.
This commit is contained in:
Stefan Monnier 2008-03-30 03:54:15 +00:00
parent 02a0861d53
commit 990e2c2fbc
3 changed files with 79 additions and 41 deletions

View File

@ -13144,7 +13144,7 @@ netcat connection to the news server as follows:
@lisp
(nntp "outside"
(nntp-pre-command "runsocks")
(nntp-open-connection-function nntp-open-via-netcat)
(nntp-open-connection-function nntp-open-netcat-stream)
(nntp-address "the.news.server"))
@end lisp
@ -13619,8 +13619,8 @@ then define a server as follows:
(nntp-address "snews.bar.com"))
@end lisp
@findex nntp-open-via-netcat
@item nntp-open-via-netcat
@findex nntp-open-netcat-stream
@item nntp-open-netcat-stream
Opens a connection to an @acronym{NNTP} server using the @code{netcat}
program. You might wonder why this function exists, since we have
the default @code{nntp-open-network-stream} which would do the job. (One
@ -13631,7 +13631,7 @@ connections to the outside world thanks to a command wrapper like
@lisp
(nntp "socksified"
(nntp-pre-command "runsocks")
(nntp-open-connection-function nntp-open-via-netcat)
(nntp-open-connection-function nntp-open-netcat-stream)
(nntp-address "the.news.server"))
@end lisp
@ -13640,7 +13640,7 @@ session, which is not a good idea.
@findex nntp-open-telnet-stream
@item nntp-open-telnet-stream
Like @code{nntp-open-via-netcat}, but uses @code{telnet} rather than
Like @code{nntp-open-netcat-stream}, but uses @code{telnet} rather than
@code{netcat}. @code{telnet} is a bit less robust because of things
like line-end-conversion, but sometimes netcat is simply
not available. The previous example would turn into:
@ -13821,16 +13821,16 @@ String to use as end-of-line marker when talking to the @acronym{NNTP}
server. This is @samp{\r\n} by default, but should be @samp{\n} when
using a non native telnet connection function.
@item nntp-via-netcat-command
@vindex nntp-via-netcat-command
@item nntp-netcat-command
@vindex nntp-netcat-command
Command to use when connecting to the @acronym{NNTP} server through
@samp{netcat}. This is @emph{not} for an intermediate host. This is
just for the real @acronym{NNTP} server. The default is
@samp{nc}.
@item nntp-via-netcat-switches
@vindex nntp-via-netcat-switches
A list of switches to pass to @code{nntp-via-netcat-command}. The default
@item nntp-netcat-switches
@vindex nntp-netcat-switches
A list of switches to pass to @code{nntp-netcat-command}. The default
is @samp{()}.
@end table

View File

@ -1,3 +1,14 @@
2008-03-30 Stefan Monnier <monnier@iro.umontreal.ca>
* nntp.el (nntp-netcat-command): Rename from nntp-via-netcat-command.
(nntp-netcat-switches): Rename from nntp-via-netcat-switches.
(nntp-open-telnet, nntp-open-rlogin): Use with-current-buffer.
(nntp-service-to-port): New function.
(nntp-open-via-rlogin-and-netcat, nntp-open-via-telnet-and-telnet)
(nntp-open-telnet-stream, nntp-open-via-rlogin-and-telnet): Use it.
(nntp-open-netcat-stream): New function.
(nntp-open-via-rlogin-and-netcat): Don't use a pty.
2008-03-29 Stefan Monnier <monnier@iro.umontreal.ca>
* message.el (message-make-in-reply-to): Use mm-with-multibyte-buffer.

View File

@ -84,11 +84,12 @@ Direct connections:
- `nntp-open-network-stream' (the default),
- `nntp-open-ssl-stream',
- `nntp-open-tls-stream',
- `nntp-open-netcat-stream'.
- `nntp-open-telnet-stream'.
Indirect connections:
- `nntp-open-via-rlogin-and-telnet',
- `nntp-open-via-rlogin-and-netcat',
- `nntp-open-via-rlogin-and-telnet',
- `nntp-open-via-telnet-and-telnet'.")
(defvoo nntp-never-echoes-commands nil
@ -143,12 +144,13 @@ This command is used by the `nntp-open-via-telnet-and-telnet' method.")
(defvoo nntp-via-telnet-switches '("-8")
"*Switches given to the telnet command `nntp-via-telnet-command'.")
(defvoo nntp-via-netcat-command "nc"
(defvoo nntp-netcat-command "nc"
"*Netcat command used to connect to the nntp server.
This command is used by the `nntp-open-via-rlogin-and-netcat' method.")
This command is used by the `nntp-open-netcat-stream' and
`nntp-open-via-rlogin-and-netcat' methods.")
(defvoo nntp-via-netcat-switches nil
"*Switches given to the netcat command `nntp-via-netcat-command'.")
(defvoo nntp-netcat-switches nil
"*Switches given to the netcat command `nntp-netcat-command'.")
(defvoo nntp-via-user-name nil
"*User name to log in on an intermediate host with.
@ -1801,9 +1803,21 @@ via telnet.")
(defvoo nntp-telnet-passwd nil
"Password to use to log in via telnet with.")
(defun nntp-service-to-port (svc)
(cond
((integerp svc) (number-to-string svc))
((string-match "\\`[[:digit:]]\\'" svc) svc)
(t
(with-temp-buffer
(ignore-errors (insert-file-contents "/etc/services"))
(goto-char (point-min))
(if (re-search-forward (concat "^" (regexp-quote svc)
"[ \t]+\\([[:digit:]]+\\)/tcp"))
(match-string 1)
svc)))))
(defun nntp-open-telnet (buffer)
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(erase-buffer)
(let ((proc (apply
'start-process
@ -1859,8 +1873,7 @@ via telnet.")
(apply 'start-process
"nntpd" buffer nntp-rlogin-program nntp-address
nntp-rlogin-parameters))))
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(nntp-wait-for-string "^\r*20[01]")
(beginning-of-line)
(delete-region (point-min) (point))
@ -1873,7 +1886,7 @@ via telnet.")
(defun nntp-open-telnet-stream (buffer)
"Open a nntp connection by telnet'ing the news server.
`nntp-open-via-netcat' is recommended in place of this function
`nntp-open-netcat-stream' is recommended in place of this function
because it is more reliable.
Please refer to the following variables to customize the connection:
@ -1886,9 +1899,7 @@ Please refer to the following variables to customize the connection:
(let ((command `(,nntp-telnet-command
,@nntp-telnet-switches
,nntp-address
,(if (integerp nntp-port-number)
(number-to-string nntp-port-number)
nntp-port-number)))
,(nntp-service-to-port nntp-port-number)))
proc)
(and nntp-pre-command
(push nntp-pre-command command))
@ -1932,9 +1943,7 @@ Please refer to the following variables to customize the connection:
(with-current-buffer buffer
(nntp-wait-for-string "^r?telnet")
(process-send-string proc (concat "open " nntp-address " "
(if (integerp nntp-port-number)
(number-to-string nntp-port-number)
nntp-port-number)
(nntp-service-to-port nntp-port-number)
"\n"))
(nntp-wait-for-string "^\r*20[01]")
(beginning-of-line)
@ -1960,26 +1969,46 @@ Please refer to the following variables to customize the connection:
- `nntp-via-rlogin-command-switches',
- `nntp-via-user-name',
- `nntp-via-address',
- `nntp-via-netcat-command',
- `nntp-via-netcat-switches',
- `nntp-netcat-command',
- `nntp-netcat-switches',
- `nntp-address',
- `nntp-port-number',
- `nntp-end-of-line'."
- `nntp-port-number'."
(let ((command `(,@(when nntp-pre-command
(list nntp-pre-command))
,nntp-via-rlogin-command
,@(when nntp-via-rlogin-command-switches
nntp-via-rlogin-command-switches)
,@nntp-via-rlogin-command-switches
,@(when nntp-via-user-name
(list "-l" nntp-via-user-name))
,nntp-via-address
,nntp-via-netcat-command
,@nntp-via-netcat-switches
,nntp-netcat-command
,@nntp-netcat-switches
,nntp-address
,(if (integerp nntp-port-number)
(number-to-string nntp-port-number)
nntp-port-number))))
(apply 'start-process "nntpd" buffer command)))
,(nntp-service-to-port nntp-port-number))))
;; A non-nil connection type results in mightily odd behavior where
;; (process-send-string proc "\^M") ends up sending a "\n" to the
;; ssh process. --Stef
;; Also a nil connection allow ssh-askpass to work under X11.
(let ((process-connection-type nil))
(apply 'start-process "nntpd" buffer command))))
(defun nntp-open-netcat-stream (buffer)
"Open a connection to an nntp server through netcat.
I.e. use the `nc' command rather than Emacs's builtin networking code.
Please refer to the following variables to customize the connection:
- `nntp-pre-command',
- `nntp-netcat-command',
- `nntp-netcat-switches',
- `nntp-address',
- `nntp-port-number'."
(let ((command `(,nntp-netcat-command
,@nntp-netcat-switches
,nntp-address
,(nntp-service-to-port nntp-port-number))))
(and nntp-pre-command (push nntp-pre-command command))
(let ((process-connection-type nil)) ;See `nntp-open-via-rlogin-and-netcat'.
(apply 'start-process "nntpd" buffer command))))
(defun nntp-open-via-telnet-and-telnet (buffer)
"Open a connection to an nntp server through an intermediate host.
@ -2037,9 +2066,7 @@ Please refer to the following variables to customize the connection:
,nntp-telnet-command
,@nntp-telnet-switches
,nntp-address
,(if (integerp nntp-port-number)
(number-to-string nntp-port-number)
nntp-port-number))))
,(nntp-service-to-port nntp-port-number))))
(process-send-string proc
(concat (mapconcat 'identity
real-telnet-command " ")