Metropoli BBS
VIEWER: aplgrpsb.c MODE: TEXT (ASCII)
/*Copyright (C) 1992, 1995 by Thomas Glen Smith.  All Rights Reserved.*/
/* aplgrpsb APL2 V1.0.0 ************************************************
* Called from aplgrps and aplsi to print names in a tree.              *
***********************************************************************/
#define INCLUDES APLCB+APLTOKEN+STRING+TREE
#include "includes.h"
void aplgrpsb(ch,code,node)
char *ch;				/* alphabetic character */
int code;				/* 1=groups, 2=variables, 3=functions, 4=all */
struct avlnode *node;	/* points to node of binary tree */
{
#include "quadext.h"
	Execmsg; Quadname;
	Aplcb cb;
	char *qn;
	int hit;

	if (node == NULL) return;
	aplgrpsb(ch,code,node->left_child); /* visit left branch */
	if (*(node->avlname) >= *ch && NULL != (cb = node->avlleaf)) {
		switch (code) {
			case 1: /* groups */
				hit = cb->aplflags & APLGROUP;
				break;
			case 3: /* functions */
				hit = cb->aplflags & APLFUNC;
				break;
			case 2: /* variables */
				hit = (0 == strcmp(node->avlname,quadfc)) ?
					0 : !(cb->aplflags & (APLLABEL+APLGROUP+APLFUNC));
				break;
			case 4: /* all */
				hit = 1;
				break;
			default:
				hit = 0;
				break;
		} /* end switch */
		if (hit) {
			qn = quadname(node->avlname); /* Transform Q-names. */
			execmsg(qn,strlen(qn),0,NULL); /* Display name. */
		}
	}
	aplgrpsb(ch,code,node->rite_child); /* visit right branch */
}
[ RETURN TO DIRECTORY ]