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