/* */ /*----------------------------------------------------------------------------*/ /* */ /*----------------------------------------------------------------------------*/ #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