Metropoli BBS
VIEWER: aplediz.c MODE: TEXT (ASCII)
/*Copyright (C) 1992, 1995 by Thomas Glen Smith.  All Rights Reserved.*/
/* aplediz APL2 V1.0.0 *************************************************
* Called from aplediu and aplediv to get DEL editor requests from the  *
* user, calling aplediy with them, returning control to the caller     *
* when a closing DEL is entered.                                       *
***********************************************************************/
#define MAXLINE 1024
#define INCLUDES APLCB+APLCHDEF+APLED+APLFUNCI+APLTOKEN+STDIO+STRING+TREE
#include "includes.h"
void aplediz(e)
struct apledst *e;		/* Edit common area.					*/
{
	Apledfm; Aplednn; Apledrc; Codechar; Execmsg; Getchrv;
	extern int aplerr;
	extern double fuzz;
	char *cp,*cpend,line[MAXLINE],prompt[20],*tp;
	double newno;
	Aplcb out;

	while (e->delptr == NULL) {
		newno = aplednn(e); /* determine new prompt */
		strcpy(prompt,apledfm(newno)); /* prompt == bracketed stmtno */
		out = getchrv(prompt); /* get input */
		if (aplerr) {
			execmsg(prompt,strlen(prompt),0,NULL); /* print error */
			aplerr = 0; /* reset aplerr */
		}
		else {
			cp = tp = out->aplptr.aplchar; /* point to input line */
			cpend = cp + out->aplcount;
			switch (aplscan(&tp,cpend)) { /* find first token code */	
				case DEL: /* all done */
				case LEFT_BRACKET: /* user bracketed stmtno */
					strcpy(line,cp);
					break;
				default: /* I must supply bracketed stmtno */
					strcpy(line,prompt);
					strcat(line,cp);
					break;
			} /* end switch */
			apledrc(e,line); /* parse and process input */
		}
		endoper(out);
	}
}
[ RETURN TO DIRECTORY ]