/*Copyright (C) 1992, 1995 by Thomas Glen Smith. All Rights Reserved.*/
/* apledfx APL2 V1.0.0 *************************************************
* Called from apledit to fix a function after editing is complete. *
***********************************************************************/
#define MAXLINE 1024
#define INCLUDES APLCB+APLED+APLFUNCI+APLMEM+APLTOKEN+STRING
#include "includes.h"
void apledfx(e)
Apledst e; /* Edit common area. */
{
Apledps; Chrcopy; Execqfx; Getcb; Imax;
extern int aplerr;
Aplcb out;
Apled ed;
int cols,i,j,k,rows;
char line[MAXLINE],*op;
cols = 0; /* Will hold maximum statement length */
rows = 0; /* Will hold number of statements */
for (ed = e->edhdr; ed != NULL; ed = ed->aplednxt) {
if (ed->apledch == NULL) {
line[0] = '\0'; /* empty line */
apledps(ed,line); /* get formatted statement */
i = strlen(line) + 1;
ed->apledch = malloc(i);
if (aplerr) break; /* probably out of storage */
strcpy(ed->apledch,line); /* copy statement text */
}
cols = imax(cols,strlen(ed->apledch));
rows++;
}
if (rows == 0) return; /* nothing to fix */
out = getcb(NULL,rows*cols,APLCHAR+APLTEMP,2,NULL);
if (aplerr) return;
*(out->apldim) = rows;
*(out->apldim + 1) = cols;
op = out->aplptr.aplchar;
for (ed = e->edhdr; ed != NULL; ed = ed->aplednxt) {
i = strlen(ed->apledch);
op = chrcopy(op, ed->apledch, i, 1); /* copy, update op */
if (0 < (j = cols - i))
op = chrcopy(op, " ", j, 0); /* pad w/blanks */
}
endoper(execqfx(out)); /* go fix this function */
}