;;; -*- Mode:LISP; Package:ZWEI; Base:8; Readtable:ZL -*-

(DEFUN SAVE-BUFFER (BUFFER &AUX FILE-ID PATHNAME (FILE-FILE-ID NIL))
  "Save BUFFER unconditionally into its visited file, or a file read from the mini buffer."
  (READ-BUFFER-PATHNAME-FOR-SAVING BUFFER)
  (SETQ FILE-ID (BUFFER-FILE-ID BUFFER)  
	PATHNAME (BUFFER-PATHNAME BUFFER))
  (AND (OR (SYMBOLP FILE-ID)
	   (WITH-OPEN-FILE (S PATHNAME '(:PROBE :ASCII))
	     (AND (NOT (ERRORP S))
		  (EQUAL (SETQ FILE-FILE-ID (SEND S :INFO)) FILE-ID)))
	   (LET ((*QUERY-IO* *STANDARD-OUTPUT*))
	     (FQUERY '#,`(:BEEP T
			  :TYPE :READLINE
			  :CHOICES ,FORMAT:YES-OR-NO-P-CHOICES)
		     "When you last read or wrote ~A~@
		      it was ~A,~@
		      but now it is ~A.~@
		      Save it anyway? "
		     PATHNAME (DESCRIBE-FILE-ID FILE-ID)
		     (IF FILE-FILE-ID (DESCRIBE-FILE-ID FILE-FILE-ID) "deleted"))))
       (WRITE-FILE-INTERNAL PATHNAME BUFFER))
  T)