/* Listing #16 */ #include #include struct DosLibrary *DOSBase=NULL; struct ExecBase *SysBase=NULL; extern int main(int argc, char* argv[]); long __saveds usermain(void) struct process *proc; struct Message *wbmsg=0; int argc, ret; char **argv; SysBase=*(struct ExecBase**}4; if (!(DOSBase=(struct DosLibrary*)OpenLibrary(DOSNAME, 37))) return 10; proc=(struct Process*)FindTask(0); /* Szukamy wlasnego procesu. */ if (proc->pr_CLI) /* Jeśli nie O to start z CLI. */ { static char *av[2]=E"miejsce_na_nazwe_programu", 0}; argc=l ; argv=av; WaitPort(&proc->pr_MsgPort) ; wbmsg=GetMsg{&proc->pr_MsgPort); argc=0 ; argv=(char* *)wbmsg; } ret=main(argc, argv); /* Start programu. */ CloseLibrary((struct Library*)DOSBase); if (wbmsg) { Forbid() ; ReplyMsg(wbmsg); } return ret; }