Re: ed.ex :: file backup routine

new topic     » goto parent     » topic index » view thread      » older message » newer message

Lets see if this version can pass muster:

 
-- sequence backup_file_history added to the following code block 
-- early in the ed.ex code: 
sequence file_history, command_history, search_history, replace_history,  
backup_file_history --<---- 
 
file_history = {} 
command_history = {} 
search_history = {} 
replace_history = {} 
backup_file_history = {}  --<--- 
 
--------------------------------------------------------------------------- 
 
elsif command[1] = '~' then 
	    status = 0 -- declared as integer at beginning of procedure get_escape 
	    if not file_exists(file_name) then  
		-- in "ed.ex" parlance "write" file: 
		save_file(file_name) 
		stop = FALSE 
	    end if  
		 
	    sequence backup_file_name = file_name & "~"  
	    if not file_exists(backup_file_name) then 
		status = eu_filesys:copy_file(file_name, backup_file_name, 0)  
		save_file(file_name) 
		stop = FALSE 
		set_top_line(" ") 
		set_top_line(file_name & " <backed up as> " & backup_file_name) 
	    else 
		set_top_line(" ") 
		set_top_line("Backup file " & backup_file_name &  " already exists - overwrite?  ") 
		first_bold("y or ") 
		first_bold("n : ") 
		answer = key_gets("yn", {}) 
		if find('y', answer) then 
			-- overwrite existing back-up file: 
			status = eu_filesys:copy_file(file_name, backup_file_name, 1) 
			save_file(file_name) 
			stop = FALSE 
			set_top_line(file_name & " <backed up as> " & backup_file_name) 
		else 
		    loop do 
			set_top_line("rename or overwrite existing ~ file: " & backup_file_name & " ? :  ") 
			sequence backup_files = dir("*.*~")  
			for x = 3 to length(backup_files) do  
			    backup_file_history = update_history(backup_file_history, backup_files[x][D_NAME]) 
			end for 
 
                        -- this code allows you to select existing back up files or enter 
                        -- a completely new file name: 
			backup_file_name = delete_trailing_white(key_gets("", backup_file_history)) 
			if find(backup_file_name, backup_file_history)then 
			    set_top_line("overwrite file: " & backup_file_name & " ?  ") 
			    first_bold("y or ") 
			    first_bold("n : ") 
			    answer = key_gets("yn", {}) 
			    if find('y', answer) then 
				status = eu_filesys:copy_file(file_name, backup_file_name, 1)  
				save_file(file_name) 
				stop = FALSE 
				set_top_line(file_name & " <backed up as> " &  backup_file_name) 
			    end if 
			 else status = eu_filesys:copy_file(file_name, backup_file_name, 0) 
				save_file(file_name) 
				stop = FALSE 
				set_top_line(" ") 
				set_top_line(file_name & " <backed up as> " &  backup_file_name) 
			 end if 
			until status = 1 
		    end loop 
		end if 
	    end if 

Regards, Kenneth Rhodes

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu