#include <exec/types.h>
#include <libraries/dos.h>
#include <workbench/workbench.h>
#include <workbench/startup.h>

#include <clib/alib_protos.h>
#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/icon_protos.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define NUMTOOLTYPES 4
char *MyTTypes[NUMTOOLTYPES] = {
  "DONOTWAIT",
  "TOOLPRI",
  "STARTPRI",
  "SCREENNAME"
};

void cleanexit(UBYTE *s);

struct Library *IconBase = NULL;
LONG olddir = -1;


void main(int argc, char **argv)
{
  struct WBStartup *WBMsg;
  struct WBArg *wbarg;
  struct DiskObject *dobj;
  char   **TTypes;
  SHORT i,j;
  char *vals;

  /* apro la icon.library */
  if(!(IconBase = OpenLibrary("icon.library",33)))
    cleanexit("Non posso aprire la icon.library\n");

  if (argc==0) {
    /* lanciato da Workbench; recupero l'array di  */
    /* WBArg e posiziono "wbarg sul secondo (il    */
    /* primo è relativo al programma stesso)       */
    WBMsg = (struct WBStartup *)argv;
    wbarg = WBMsg->sm_ArgList+1;

    /* elaboro gli elementi dell'array sm_ArgList  */
    for ( i = 1; i<WBMsg->sm_NumArgs; i++, wbarg++) {
      if (wbarg->wa_Name[0] != '\0') {
        /* è un file: vado nella sua dir. */
        olddir = CurrentDir(wbarg->wa_Lock);
        /* leggo l'icona */
        dobj = GetDiskObject(wbarg->wa_Name);
        if (! dobj)
          cleanexit("non trovo l'oggetto\n");
        TTypes = dobj->do_ToolTypes;
        for (j=0; j<NUMTOOLTYPES; j++)
          if (vals = FindToolType(TTypes,MyTTypes[j]))
            printf("%s trovato con valori %s\n",MyTTypes[j],vals);
        FreeDiskObject(dobj);
        /* ritorno sulla dir precedente */
        CurrentDir(olddir);
        olddir = -1;
      }
    }
    cleanexit(NULL);
  }
}


void cleanexit(UBYTE *s)
{
  if (*s) printf(s);
  if (olddir != -1) CurrentDir(olddir);
  if(IconBase)  CloseLibrary(IconBase);
  exit(0);
}
