;;; ;;; opac.el: 大阪大学 OPAC 検索 ;;; ;;; Jan.18,'96. OSHIRO Naoki. ;;; ;;; $Log:$ ;;; (load "telnet") (setq opac-site-name "opac.library.osaka-u.ac.jp") (defun opac () (interactive) ;; (telnet opac-site-name)) (require 'shell) (let ((name (concat opac-site-name "-telnet" ))) (switch-to-buffer (make-shell name "telnet")) (set-process-kanji-code (get-process name) 2) (set-process-filter (get-process name) 'opac-initial-filter) (erase-buffer) (send-string name (concat "open " opac-site-name "\n")) (telnet-mode) (setq telnet-count -16))) (defun opac-initial-filter (proc string) ;For reading up to and including password; also will get machine type. (cond ((string-match "No such host" string) (kill-buffer (process-buffer proc)) (error "No such host.")) ((string-match "login:" string) (telnet-filter proc string) (send-string proc (concat "opac" telnet-new-line))) ((string-match "Password:" string) (telnet-filter proc string) (send-string proc (concat "opac" telnet-new-line))) ((string-match "ENTER LOGIN" string) (telnet-filter proc string) (send-string proc (concat "OPAC" telnet-new-line))) ((string-match "ENTER GROUP NAME" string) (telnet-filter proc string) (send-string proc (concat "OPAC" telnet-new-line))) ((string-match "ENTER USER ID" string) (telnet-filter proc string) (send-string proc telnet-new-line) (set-process-filter proc 'opac-filter)) ; ((string-match "passw" string) ; (telnet-filter proc string) ; (let ((echo-keystrokes 0)) ; (setq password (read-password))) ; (setq telnet-count 0) ; (send-string proc (concat password telnet-new-line))) (t (telnet-check-software-type-initialize string) (telnet-filter proc string) (cond ((> telnet-count 4) (set-process-filter proc 'opac-filter)) (t (setq telnet-count (1+ telnet-count))))))) (defun opac-filter (proc string) (save-excursion (set-buffer (process-buffer proc)) (goto-char (point-max)) (let ((now (point))) (insert string) (subst-char-in-region now (point) ?\^@ ?\ ) (subst-char-in-region now (point) ?\^m ?\ ) (and telnet-replace-c-g (subst-char-in-region now (point) ?\^g telnet-replace-c-g))) (if (process-mark proc) (set-marker (process-mark proc) (point))) (if (and (integer-or-marker-p last-input-start) (marker-position last-input-start) telnet-remote-echoes) (delete-region last-input-start last-input-end))) (if (eq (process-buffer proc) (current-buffer)) (goto-char (point-max)))) (provide 'opac)