PROCEDURE lsi_load_files LOCAL current_pos, orig_spec, wild_card, file_spec, file, file_name, file_type, new_buffer, buffer_name, first_new, file_count, old_buffer, old_window, old_direction, old_eob_text, old_left_margin, old_right_margin, old_max_lines, old_mode, old_no_write, old_output_file, old_permanent, old_system, old_tab_stops; ! ! Error handling ON_ERROR IF error <> tpu$_dupbufname THEN MESSAGE ('Request aborted...'); ABORT ELSE current_pos := MARK (NONE); old_buffer := GET_INFO (BUFFERS, 'first'); LOOP EXITIF GET_INFO (old_buffer, 'name') = buffer_name; old_buffer := GET_INFO (BUFFERS, 'next'); EXITIF old_buffer = 0 ENDLOOP; IF old_buffer = 0 THEN MESSAGE ('Error in lsi_load_files: can''t find ' + buffer_name); ABORT ENDIF; IF GET_INFO (old_buffer, 'no_write') <> 0 THEN answer := 'Y' ELSE LOOP answer := READ_LINE ('Buffer ' + buffer_name + ' exists. ' + 'Overwrite? (Y/N) '); CHANGE_CASE (answer, UPPER); EXITIF ((answer = 'Y') OR (answer = 'N')) ENDLOOP; ENDIF; IF answer = 'Y' THEN old_window := GET_INFO (WINDOWS, 'first'); LOOP EXITIF GET_INFO (old_window, 'buffer') = old_buffer; old_window := GET_INFO (WINDOWS, 'next'); EXITIF old_window = 0 ENDLOOP; old_direction := GET_INFO (old_buffer, 'direction'); old_eob_text := GET_INFO (old_buffer, 'eob_text'); old_left_margin := GET_INFO (old_buffer, 'left_margin'); old_right_margin := GET_INFO (old_buffer, 'right_margin'); old_max_lines := GET_INFO (old_buffer, 'max_lines'); old_mode := GET_INFO (old_buffer, 'mode'); old_no_write := GET_INFO (old_buffer, 'no_write'); old_output_file := GET_INFO (old_buffer, 'output_file'); old_permanent := GET_INFO (old_buffer, 'permanent'); old_system := GET_INFO (old_buffer, 'system'); old_tab_stops := GET_INFO (old_buffer, 'tab_stops'); DELETE (old_buffer); old_buffer := CREATE_BUFFER (buffer_name, file); SET (old_direction, old_buffer); SET (EOB_TEXT, old_buffer, old_eob_text); SET (MARGINS, old_buffer, old_left_margin, old_right_margin); IF old_max_lines > 1 THEN SET (MAX_LINES, old_buffer, old_max_lines) ENDIF; SET (old_mode, old_buffer); IF old_no_write THEN SET (NO_WRITE, old_buffer) ENDIF; IF old_output_file <> 0 THEN SET (OUTPUT_FILE, old_buffer, old_output_file) ENDIF; IF old_permanent THEN SET (PERMANENT, old_buffer) ENDIF; IF old_system THEN SET (SYSTEM, old_buffer, old_system) ENDIF; SET (TAB_STOPS, old_buffer, old_tab_stops); IF old_window <> 0 THEN MAP (old_window, old_buffer) ENDIF ENDIF ENDIF ENDON_ERROR ! ! Get the name of the file from the command line. orig_spec := GET_INFO (command_line, 'file_name'); ! ! Ask for the input file name. ! wild_card := ''; wild_card := READ_LINE ('_Input file: '); IF wild_card = '' THEN ABORT ENDIF; ! ! Parse the input file name using the defaults from the command-line file name file_spec := FILE_PARSE (wild_card, orig_spec); IF file_spec = '' THEN MESSAGE ('No files matching ' + wild_card + ' found.'); ABORT ENDIF; ! ! Initialize the pointer which locates the first new buffer. first_new := 0; file_count := 0; ! ! Loop over each file spec which matches the ! parsed wild-card spec. LOOP file := FILE_SEARCH (file_spec); EXITIF file = ''; ! ! The file exists, so parse out the file name and type to use as the buffer name ! and bring it in file_name := FILE_PARSE (file, '', '', NAME); file_type := FILE_PARSE (file, '', '', TYPE); buffer_name := file_name + file_type; new_buffer := 0; new_buffer := CREATE_BUFFER (buffer_name, file); IF new_buffer = 0 THEN new_buffer := old_buffer ENDIF; IF (new_buffer <> 0) AND (first_new = 0) THEN first_new := BEGINNING_OF (new_buffer) ENDIF; file_count := file_count + 1 ENDLOOP; IF first_new <> 0 THEN POSITION (first_new); MAP (CURRENT_WINDOW, CURRENT_BUFFER); LSE$SET_STATUS_LINE (CURRENT_WINDOW); ENDIF; MESSAGE (STR (file_count) + ' files loaded.') ENDPROCEDURE