/***************************************************************************

Programma : ScreenZap.c - V1.0 - Di Lars Clausen - EnigmA Amiga Disk 4/1989

Traduzione ed adattamento a Lattice C V5.0 & Aztec C V3.6a di L.R.Callegari

Permette di eliminare schermi non chiusi da programmi difettosi o in prova.

Compilazione Lattice: lc -L ScreenZap
Compilazione Aztec C: cc +L ScreenZap ---- ln screenzap c32.lib

***************************************************************************/

#define INAME "intuition.library"

#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>

#ifndef AZTEC_C
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#include <stdlib.h>
#include <string.h>
#else
#include <functions.h>
#endif

struct Window *w;
struct IntuitionBase *IntuitionBase;

struct NewWindow nw =
{
	50,50,
	295,50,
	0,1,
	CLOSEWINDOW | MOUSEBUTTONS,
	WINDOWCLOSE | ACTIVATE | WINDOWDEPTH
	| WINDOWDRAG | SMART_REFRESH | NOCAREREFRESH,
	NULL,NULL,
	(UBYTE *)"Click qui per proseguire",
	NULL, NULL,
	295,50,
	295,50,
	WBENCHSCREEN
};

void OpenIt()
{
   IntuitionBase = (struct IntuitionBase *) OpenLibrary(INAME, 32L);
   if (IntuitionBase == 0)
   {
      printf("Non si apre Intuition!\n");
      exit( 1L );
   }
   w = OpenWindow( &nw );
   if (w == 0)
   {
      printf("Non si apre la finestra!\n");
      exit( 2L );
   }
}

Closer()
{
struct Screen *Curs, *Nexts;
struct Window *Curw;
int x;

Curs = w -> WScreen;
Curs = Curs -> NextScreen;
printf("FUOCO!\n");
for ( x = 0; Curs != NULL; x++ ) {
	if (Curs -> FirstWindow != NULL) {
		for (	Curw = Curs -> FirstWindow;
			Curw -> NextWindow != NULL;
			Curw = Curs -> FirstWindow )
			{
			for ( ; Curw -> NextWindow != NULL;
				Curw = Curw -> NextWindow )
				;
		CloseWindow( Curw );
		printf("Bang!  ");
         }
	CloseWindow( Curw );
	printf("Bang!  All windows in screen %d dead.\n",x);
	}
	Nexts = Curs->NextScreen;
	CloseScreen( Curs );
	printf("BUMMM...\n");
	Curs = Nexts;
	}
return(x);
}

void main(argc,argv)
int argc;
char **argv;
{
struct IntuiMessage *msg;

OpenIt();

WaitPort( w-> UserPort );

msg = (struct IntuiMessage *) GetMsg(w->UserPort);

if ( msg->Class == MOUSEBUTTONS) {
	printf("Rapporto: uccisi %d schermi\n",Closer());
	if (argc == 0) /* partenza da Workbench */
	{
		printf("Premi return per uscire\n");
		gets();
	}
}
CloseWindow( w );
CloseLibrary( (struct Library *) IntuitionBase );
}

/******************************* FINE DEL FILE **************************/
