/* CreateIcon.c *************************************************************
*
*	CreateIcon ----	Kurzes Programm zum Erzeugen eines Icons aus mit
*			Hilfe des Programmes "IFF2IconSrc" erzeugtem
*			Quellcode. Es wird angenommen, daß die erzeugte
*			Struktur "MyIcon" heißt, der Rest geschieht in
*			diesem Programm wie von selbst... Wichtig ist
*			nur, daß der erzeugte Quellcode compiliert und
*			abschließend zum Objektcode von CreateIcon
*			dazugelinkt wird.
*
*****************************************************************************
*
*	Autor...
*
*	Olaf Barthel & ED Electronic Design Hannover
*	Brabeckstraße 35
*	D-3000 Hannover 71
*
****************************************************************************/

#include <workbench/workbench.h>
#include <exec/execbase.h>

	/* Externe Definitionen */

extern struct Library *OpenLibrary();
extern struct DiskObject MyIcon;

	/* Mit dieser Bibliothek arbeiten wir. */

struct Library *IconBase;

	/* FlushLibrary(LibName) :

		Aus dem RKM (2nd Edition) "Includes & Autodocs"
		geborgtes Fragment, mit dem eine Bibliothek aus dem
		Speicher geworfen wird, die wir nicht mehr benötigen.
		Falls kurz nach uns jemand die Bibliothek öffnen
		möchte, der hat halt Pech gehabt. Steht sie nicht im
		ROM, muß sie von Diskette nachgeladen werden. Das kann
		Zeit kosten, aber ich wollte diese Routine einfach einmal
		ausprobieren. */

void
FlushLibrary(LibName)
char *LibName;
{
	extern struct ExecBase *SysBase;
	register struct Library *LibNode,*FindName();

	Forbid();

		/* Library suchen... */

	if(LibNode = (struct Library *)FindName(&SysBase -> LibList,LibName))
		RemLibrary(LibNode);

	Permit();
}

void
main(argc,argv)
long argc;
char *argv[];
{
		/* Icon.library öffnen. */

	if(!(IconBase = (struct Library *)OpenLibrary("icon.library",LIBRARY_VERSION)))
	{
		printf("%s: \33[1mIcon.library\33[0m nicht gefunden!\n",argv[0]);

		exit(20);
	}

		/* Das Icon absondern... */

	if(!PutDiskObject(argv[1],&MyIcon))
	{
		printf("%s: Konnte \33[1m%s\33[0m nicht erzeugen!\n",argv[0],argv[1]);
		CloseLibrary(IconBase);

		exit(20);
	}

		/* Und sich verabschieden... */

	CloseLibrary(IconBase);
	FlushLibrary("icon.library");

	exit(0);
}
