comparison lisp/nntp.el @ 13588:c50d9d86eda9

(nntp-open-server): Accept a second optional parameter for just changing virtual server. Doc fix. (nntp-possibly-change-server): Use it. (nntp-close-server): Ditto.
author Richard M. Stallman <rms@gnu.org>
date Sat, 18 Nov 1995 17:44:30 +0000
parents 178d730efae2
children 9b68e9a5cae1
comparison
equal deleted inserted replaced
13587:a0c1c62e2c4a 13588:c50d9d86eda9
332 (delete-region (match-beginning 0) 332 (delete-region (match-beginning 0)
333 (progn (forward-line 1) (point)))) 333 (progn (forward-line 1) (point))))
334 'active) 334 'active)
335 'group)))) 335 'group))))
336 336
337 (defun nntp-open-server (server &optional defs) 337 (defun nntp-open-server (server &optional defs connectionless)
338 "Open the virtual server SERVER.
339 If CONNECTIONLESS is non-nil, don't attempt to connect to any physical
340 servers."
338 (nnheader-init-server-buffer) 341 (nnheader-init-server-buffer)
339 (if (nntp-server-opened server) 342 (if (nntp-server-opened server)
340 t 343 t
341 (if (or (stringp (car defs)) 344 (if (or (stringp (car defs))
342 (numberp (car defs))) 345 (numberp (car defs)))
354 (progn 357 (progn
355 (nnheader-restore-variables (nth 1 state)) 358 (nnheader-restore-variables (nth 1 state))
356 (setq nntp-server-alist (delq state nntp-server-alist))) 359 (setq nntp-server-alist (delq state nntp-server-alist)))
357 (nnheader-set-init-variables nntp-server-variables defs))) 360 (nnheader-set-init-variables nntp-server-variables defs)))
358 (setq nntp-current-server server) 361 (setq nntp-current-server server)
359 (or (nntp-server-opened server) 362 ;; We have now changed to the proper virtual server. We then
360 (progn 363 ;; check that the physical server is opened.
361 (if (member nntp-address nntp-timeout-servers) 364 (if (or (nntp-server-opened server)
362 nil 365 connectionless)
363 (run-hooks 'nntp-prepare-server-hook) 366 ()
364 (nntp-open-server-semi-internal nntp-address nntp-port-number)))))) 367 (if (member nntp-address nntp-timeout-servers)
368 nil
369 ;; We open a connection to the physical nntp server.
370 (run-hooks 'nntp-prepare-server-hook)
371 (nntp-open-server-semi-internal nntp-address nntp-port-number)))))
365 372
366 (defun nntp-close-server (&optional server) 373 (defun nntp-close-server (&optional server)
367 "Close connection to SERVER." 374 "Close connection to SERVER."
368 (nntp-possibly-change-server nil server) 375 (nntp-possibly-change-server nil server t)
369 (unwind-protect 376 (unwind-protect
370 (progn 377 (progn
371 ;; Un-set default sentinel function before closing connection. 378 ;; Un-set default sentinel function before closing connection.
372 (and nntp-server-process 379 (and nntp-server-process
373 (eq 'nntp-default-sentinel 380 (eq 'nntp-default-sentinel
523 (defun nntp-list-active-group (group &optional server) 530 (defun nntp-list-active-group (group &optional server)
524 (nntp-send-command "^.*\r?\n" "LIST ACTIVE" group)) 531 (nntp-send-command "^.*\r?\n" "LIST ACTIVE" group))
525 532
526 (defun nntp-request-group-description (group &optional server) 533 (defun nntp-request-group-description (group &optional server)
527 "Get description of GROUP." 534 "Get description of GROUP."
528 (if (nntp-possibly-change-server nil server) 535 (nntp-possibly-change-server nil server)
529 (prog1 536 (prog1
530 (nntp-send-command "^.*\r?\n" "XGTITLE" group) 537 (nntp-send-command "^.*\r?\n" "XGTITLE" group)
531 (nntp-decode-text)))) 538 (nntp-decode-text)))
532 539
533 (defun nntp-close-group (group &optional server) 540 (defun nntp-close-group (group &optional server)
534 (setq nntp-current-group nil) 541 (setq nntp-current-group nil)
535 t) 542 t)
536 543
1188 "Return last element of LIST." 1195 "Return last element of LIST."
1189 (while (cdr list) 1196 (while (cdr list)
1190 (setq list (cdr list))) 1197 (setq list (cdr list)))
1191 (car list)) 1198 (car list))
1192 1199
1193 (defun nntp-possibly-change-server (newsgroup server) 1200 (defun nntp-possibly-change-server (newsgroup server &optional connectionless)
1194 ;; We see whether it is necessary to change the newsgroup. 1201 "Check whether the virtual server needs changing."
1195 (and newsgroup 1202 (if (and server
1196 (progn 1203 (not (nntp-server-opened server)))
1197 (not (equal newsgroup nntp-current-group)) 1204 ;; This virtual server isn't open, so we (re)open it here.
1198 (nntp-request-group newsgroup server))) 1205 (nntp-open-server server nil t))
1199 (and server 1206 (if (and newsgroup
1200 (or (nntp-server-opened server) 1207 (not (equal newsgroup nntp-current-group)))
1201 (nntp-open-server server)))) 1208 ;; Set the proper current group.
1209 (nntp-request-group newsgroup server)))
1202 1210
1203 (defun nntp-try-list-active (group) 1211 (defun nntp-try-list-active (group)
1204 (nntp-list-active-group group) 1212 (nntp-list-active-group group)
1205 (save-excursion 1213 (save-excursion
1206 (set-buffer nntp-server-buffer) 1214 (set-buffer nntp-server-buffer)