Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!UHURA.CC.ROCHESTER.EDU!rbr4 From: rbr4@UHURA.CC.ROCHESTER.EDU (Roland Roberts) Newsgroups: gnu.emacs.bug Subject: Re: Bug in file-name-sans-versions for VMS Message-ID: <8909012214.AA08534@uhura.cc.rochester.edu> Date: 1 Sep 89 22:14:05 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 69 There was still an error in the diffs I sent. I left out a '\' when quoting a '.' The correct diffs appear below. roland --- Roland Roberts BITNET: roberts@uornsrl Nuclear Structure Research Lab INTERNET: rbr4@uhura.cc.rochester.edu 271 East River Road UUCP: rochester!ur-cc!uhura!rbr4 Rochester, NY 14267 AT&T: (716) 275-8962 *** [lisp]files.el --- files.el ************** *** 547,553 (substring name 0 (if (eq system-type 'vax-vms) (or (string-match ";[0-9]+\\'" name) ! (string-match ".[0-9]+\\'" name) (length name)) (or (string-match "\\.~[0-9]+~\\'" name) (string-match "~\\'" name) --- 547,557 ----- (substring name 0 (if (eq system-type 'vax-vms) (or (string-match ";[0-9]+\\'" name) ! (if (string-match "]" name) ! (if (string-match "].*\\..*\\.[0-9]+\\'" name) ! (string-match "\\.[0-9]+\\'" name) ! (length name)) ! (length name)) (length name)) (or (string-match "\\.~[0-9]+~\\'" name) (string-match "~\\'" name) ************** *** 653,658 (interactive) (if (buffer-modified-p) (let (setmodes tempsetmodes) (or buffer-file-name (progn (setq buffer-file-name --- 657,683 ----- (interactive) (if (buffer-modified-p) (let (setmodes tempsetmodes) + (if (and (eq system-type 'vax-vms) + (not (string= buffer-file-name + (file-name-sans-versions buffer-file-name)))) + (let ((buffer-new-name nil) + (buffer-name-list nil)) + ;; Strip VMS version number before save + (setq buffer-file-name + (file-name-sans-versions buffer-file-name)) + ;; Select a buffer name to correspond + (setq buffer-new-name + (downcase (file-name-nondirectory buffer-file-name))) + ;; Check to see if the buffer name is in use + (setq buffer-name-list + (mapcar (function buffer-name) (buffer-list))) + (while (and buffer-name-list + (not (string= buffer-new-name + (car buffer-name-list)))) + (setq buffer-name-list (cdr buffer-name-list))) + ;; Change the buffer name, if no conflict + (if (not buffer-name-list) + (rename-buffer buffer-new-name)))) (or buffer-file-name (progn (setq buffer-file-name