/* TopScreen:	Print the name of the topmost screen if it is public.
 *		If it is not public, print "Workbench".
 *
 * Author:	Daniel J. Barrett, barrett@cs.umass.edu
 * 		Public Domain
 */

char *Version = "$VER: TopScreen 1.1 (3.12.94)";

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <intuition/screens.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>

#define	DEFAULT_SCREEN	"Workbench"

UBYTE *GetPubName(struct Screen *scr);

struct IntuitionBase *IntuitionBase;

VOID main(int argc, char **argv)
{
	struct Screen *scr;

	IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",0);
	if (!IntuitionBase)
		exit(1);

	scr = IntuitionBase->FirstScreen;
	if (!scr)
		puts(DEFAULT_SCREEN);
	else
		puts(GetPubName(scr));

	if (IntuitionBase)
		CloseLibrary((struct Library *)IntuitionBase);
}


UBYTE *GetPubName(struct Screen *scr)
{
	struct List *list;
	struct Node *pubs;
	struct PubScreenNode *psn;
	static UBYTE name[MAXPUBSCREENNAME+1];

	strcpy(name, DEFAULT_SCREEN);

	if ((list = LockPubScreenList()) != NULL)
	{

		for (pubs = list->lh_Head; pubs->ln_Succ; pubs = pubs->ln_Succ)
		{
			psn = (struct PubScreenNode *)pubs;
			if (scr == psn->psn_Screen)
			{
				strcpy(name, pubs->ln_Name);
				break;
			}
		}

		UnlockPubScreenList();
	}

	return(name);
}
