www.pudn.com > c_editor.rar > ED8.C


/* ED8.C */ 
 
#include "ed0.c" 
#include "ed1.ccc" 
char	keybuf[MAXKEY];  /* macro buffer for keystroke record and replay */ 
int	replay_count; /* how many times to replay */     
int	replay_number; /* current replay number */ 
int	replay_flag;  /* are we replaying from buffer? */ 
int	record_flag;  /* are we recording to buffer? */ 
int	key_position; /* current position in buffer */ 
sysabort()	/*  abort replay of buffer */ 
{ 
	record_flag=NO; 
	replay_flag=NO; 
	key_position=0; 
	replay_number=0; 
} 
syscount(count) int count;	/* set number of replays */ 
{ 
	replay_count=count; 
} 
syscstat() 
{ 
int c; 
	c=scr_csts(); 
	if (c==0){		/* correction of original version */ 
		return(-1); 
	} 
	else { 
		return(c); 
	} 
} 
syscin() /* extensively altered to permit recording and replay of buffer */ 
{		 
int c; 
	if (replay_flag==YES) {  /* proceed if we are replaying */ 
		if ((c=syscstat())>0) { 
			pmtmode("       "); /* abort replay if key pressed */ 
			record_flag=NO; 
			replay_flag=NO; 
			key_position=0; 
			replay_number=0; 
			return(c); 
		} 
		else { 
			c=keybuf[key_position++]; /* otherwise replay */ 
			if (c==EOS) { 
				key_position=0; 
				if((++replay_number)==replay_count) { 
					pmtmode("        "); /* finished */ 
					replay_flag=NO; 
					replay_number=0; 
				} 
			} 
			return(c); 
		} 
	} 
	else { 
		while ((c=scr_ci())==0) { 
			; 
		} 
		if (c==RECORD) { 
			if (record_flag==NO) {  /* begin record */ 
				pmtmode("record"); 
				record_flag=YES; 
				replay_flag=NO; 
				key_position=0; 
				keybuf[key_position]=EOS; 
			} 
			else { 
				pmtmode("end record"); /* end record */ 
				record_flag=NO; 
			} 
			return(c); 
		} 
		else if (c==REPLAY) {  /* start replay */ 
			pmtmode("replay"); 
			replay_flag=YES; 
			record_flag=NO; 
			replay_number=0; 
			key_position=0; 
			return(c); 
		} 
		else if (record_flag==YES) { 
			if (key_position