/* */
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/icon.h>
#include <dos/dostags.h>
#include <workbench/startup.h>
#include <stdlib.h>
#include <stdio.h>
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/
int main (int argc,struct WBStartup *wbmsg)
{
if (argc)
{
Printf ("This program cannot be run in DOS mode :-)\n");
return (RETURN_ERROR);
}
if (wbmsg->sm_NumArgs > 1)
{
struct WBArg *wbarg = &wbmsg->sm_ArgList[1];
BPTR oldcd = CurrentDir (wbarg->wa_Lock);
struct DiskObject *dob = GetDiskObject (wbarg->wa_Name);
char *win = "CON:0/50//80/NewIconX/AUTO";
long stack = 4096;
long delay = 3*TICKS_PER_SECOND;
char cmd[256];
BPTR out;
if (dob)
{
char **tt = dob->do_ToolTypes;
char *val;
if (val = FindToolType (tt,"WINDOW"))
win = val;
if (val = FindToolType (tt,"STACK"))
stack = atoi(val);
if (val = FindToolType (tt,"WAIT"))
delay = atoi(val) * TICKS_PER_SECOND;
if (val = FindToolType (tt,"DELAY"))
delay = atoi(val);
}
sprintf (cmd,"FailAt 100\nExecute \"%s\"\n",wbarg->wa_Name);
out = Open (win,MODE_NEWFILE);
if (stack < 1024) stack = 1024;
SystemTags (cmd,
SYS_Output,out,
SYS_Input,0,
NP_StackSize,stack,
TAG_END);
if (delay)
Delay (delay);
Close (out);
if (dob)
FreeDiskObject (dob);
CurrentDir (oldcd);
}
return (RETURN_OK);
}
/*----------------------------------------------------------------------------*/
/* Start from Workbench (Dice C only) */
/*----------------------------------------------------------------------------*/
#ifdef _DCC
int wbmain (struct WBStartup *wbmsg)
{
return (main (0,wbmsg));
}
#endif
/*----------------------------------------------------------------------------*/
/* */
/*----------------------------------------------------------------------------*/@Krashan, post #3
@Krashan, post #5