Metropoli BBS
VIEWER: namelen.c MODE: TEXT (ASCII)
/*Copyright (C) 1992, 1996 by Thomas Glen Smith.  All Rights Reserved.*/
/* namelen APL2 V1.0.0 *************************************************
* Called by aplcpyd and execqncs to obtain the location and length of  *
* an apl name in an array of names.  The name is checked, and if not   *
* well formed, a length of 0 is returned.                              *
***********************************************************************/
#define INCLUDES APLCHDEF
#include "includes.h"
int namelen(nameary,colsize,ix,nameptr)
char *nameary;		/* Array of names. */
int colsize;		/* Size allowed for each name, padded with blanks. */
int ix;			/* Index, origin 0, of desired name. */
char **nameptr;	/* Will be set on return to start of name. */
{
	Aplname; Aplquae; Aplscan; Codechar;
	char *s,*t,*u,*v;
	int code,len;

	t = 1 + (s = *nameptr = nameary + ix * colsize); /* next name */
	if (*s == *codechar(QUAD) && aplquae(&t,s + colsize))
		u = t; /* it is e.g. Lio */
	else
		u = t = aplname(s, s + colsize); /* end of next name */
	if (u == s + colsize)	code = SPACE;
		else				code = aplscan(&u, s + colsize);
	if (0 == (len = t - s) || code != SPACE || u != s + colsize)
		return(0); /* Invalid name, return 0 length. */
	else
		return(len); /* Name is well formed. Return length. */
}

[ RETURN TO DIRECTORY ]