PROCEDURE lsi_flush_buffers ! Write all modified buffers ! Invoked by LSEDIT command, "CALL lsi_flush_buffers" ! Probably best used from within LSE by defining a command, ! DEFINE COMMAND FLUSH "CALL lsi_flush_buffers" ! LOCAL buffer_ptr, ! pointer to current buffer on TPU's list buffer_name, ! name of current buffer answer, read_only; ! ! Get first buffer on list buffer_ptr := GET_INFO (BUFFER, "first"); IF buffer_ptr = 0 THEN MESSAGE ('No buffers modified.'); ENDIF; ! LOOP ! over all buffers on list EXITIF buffer_ptr = 0; ! when buffer list exhausted IF GET_INFO (buffer_ptr, "system") = 0 THEN ! ! buffer is not a system buffer IF GET_INFO (buffer_ptr, "modified") = 1 THEN ! ! buffer is modified read_only := GET_INFO (buffer_ptr, "no_write"); IF read_only = 1 THEN ! ! buffer is read-only buffer_name := GET_INFO (buffer_ptr, "name"); MESSAGE ("Buffer " + buffer_name + " is read-only."); LOOP answer := READ_LINE ("Write it anyway? (Y/N) ", 1); CHANGE_CASE (answer, UPPER); EXITIF (answer = "Y") OR (answer = "N") ENDLOOP; IF answer = "Y" THEN read_only := 0 ENDIF ENDIF; ! ! Write out the buffer using default filename IF read_only = 0 THEN WRITE_FILE (buffer_ptr); ENDIF ENDIF ENDIF; ! ! Get next buffer buffer_ptr := GET_INFO (BUFFER, "next"); ENDLOOP; ENDPROCEDURE;