/*********************************************************
 * Gotcha library example code.
 * (c)1995 Thomas Bickel. All rights reserved.
 *
 * Demonstrates the use of GL_StringListDupCB
 *********************************************************/

#include <stdio.h>

#include <clib/exec_protos.h>
#include <pragmas/exec_pragmas.h>
#include <clib/gotchalib_protos.h>
#include <pragmas/gotchalib_pragmas.h>
#include <libraries/gotchalib.h>

BOOL __asm __saveds
mycmp(register __a0 struct Node *nn)
{
	return((nn->ln_Name[0] > 'Z') ? FALSE : TRUE);
}

/***********************************************************************/
int main(long argc, char *argv[])
{
	struct Library *GotchaLibBase;
	struct List *l, *nl;

	if (GotchaLibBase = OpenLibrary("gotcha.library",1)) {

		if (l = GL_NewList()) {

            GL_AddNodeString("A",l,AN_TAIL,0);
            GL_AddNodeString("B",l,AN_TAIL,0);
            GL_AddNodeString("c",l,AN_TAIL,0);
            GL_AddNodeString("D",l,AN_TAIL,0);
            GL_AddNodeString("E",l,AN_TAIL,0);
            GL_AddNodeString("C",l,AN_TAIL,0);
            GL_AddNodeString("d",l,AN_TAIL,0);
            GL_AddNodeString("E",l,AN_TAIL,0);
            GL_AddNodeString("f",l,AN_TAIL,0);
            GL_AddNodeString("G",l,AN_TAIL,0);

			if (nl = GL_StringListDupCB(l, mycmp, FALSE, 0)) {
				struct Node *nn;

				nn = nl->lh_Head;
				while (nn->ln_Succ) {
					puts(nn->ln_Name);
					nn = nn->ln_Succ;
				}

				GL_FreeList(nl);
			}

			GL_FreeList(l);
		}

		CloseLibrary(GotchaLibBase);
	} else
		puts("Could not open 'gotcha.library'");
}
