/*
 *  NAME:   ToolTypeToVar.c
 *  FN:     converts a specified ToolType of a	#?.icon file
 *	    into a ENV: variable
 *	    Example:
 *		in Picture.info defined:
 *		    FILETYPE=ILBM
 *
 *		CLI>ToolTypeToVar Picture FILETYPE
 *		creates the ENV: variable FILETYPE,
 *		which has the value ILBM.
 *
 *  OS2.0 OR LATER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 *
 *  © 1992 by A.Weißflog (46)
 */
#include <dos/rdargs.h>
#include <dos/var.h>
#include <workbench/workbench.h>

#define FILENAME Args[0]
#define TOOLTYPE Args[1]

char *Schnulli = "ToolTypeToVar V0.99, this is a TEST VERSION";
char *Args[] = {NULL, NULL};
char *ToolValue;

struct RDArgs *ArgPtr;
struct DiskObject *dob;
struct Library *IconBase;

/*
 *  BOOL OpenAll()
 *  ~~~~~~~~~~~~~~
 *  BOOL = TRUE  -> all right
 *	 = FALSE -> open error
 */
BOOL OpenAll()
{
    IconBase = (struct Library *)  OpenLibrary ("icon.library", 37L);
    if (!IconBase) return(FALSE);

    /* get parameters */
    ArgPtr   = (struct RDArgs *)  ReadArgs ("File/A,Tooltype/A", Args, NULL);
    if (!ArgPtr) return(FALSE);

    /* get DiskObject */
    dob      = (struct DiskObject *)  GetDiskObjectNew (FILENAME);
    if (!dob) return(FALSE);

    return(TRUE);
};

/*
 *  CloseAll()
 *  ~~~~~~~~~~
 */
CloseAll()
{
    if (dob)        FreeDiskObject(dob);
    if (ArgPtr)     FreeArgs(ArgPtr);
    if (IconBase)   CloseLibrary(IconBase);
};

/*
 *  THE MAIN ROUTINE
 *  ~~~~~~~~~~~~~~~~
 */
main()
{
    int ret = 0;

    if (OpenAll())
    {
	ToolValue = (char *) FindToolType (dob->do_ToolTypes, TOOLTYPE);

	if (ToolValue)
	{
	    if (! (SetVar (TOOLTYPE, ToolValue, -1, GVF_GLOBAL_ONLY)))
		ret = 10; /* couldn't create ENV-variable */
	}
	else
	{
	    if (! (SetVar (TOOLTYPE, "DEFAULT", -1, GVF_GLOBAL_ONLY)))
		ret = 10;
	};
    }
    else ret = 20; /* open error */
    CloseAll();
    return(ret);
};


