home *** CD-ROM | disk | FTP | other *** search
- /* Created 11/08/87 by -=+SDB+=- from file _main.c provided by Manx */
- /* Copyright (C) 1987 by Scott Ballantyne */
- /* May be freely used by ARP users/supporters */
- /* Memory is allocated for the MANX device buffers, etc., but the
- * ARP tracking functions are used.
- */
-
- #include <fcntl.h>
- #include <exec/alerts.h>
- #include <exec/memory.h>
- #include <libraries/dosextens.h>
- #include <libraries/dos.h>
- #include <workbench/startup.h>
-
- extern long _savsp, _stkbase;
-
- extern int errno, Enable_Abort;
-
- extern int _argc;
- extern char **_argv;
- extern struct WBStartup *WBenchMsg;
-
- extern struct _dev *_devtab;
- extern short _numdev;
-
- _main(alen, aptr)
- long alen;
- char *aptr;
- {
- register struct Process *pp, *_FindTask();
- void *_GetMsg(), *ArpAlloc();
- long _Input(), _Output(), _Open();
-
-
- if ( (_devtab = ArpAlloc( _numdev*(long)sizeof(struct _dev))) == 0)
- {
- Alert(AG_NoMemory, 0L);
- ArpExit(20L, ERROR_NO_FREE_STORE );
- }
-
- _devtab[0].mode = O_RDONLY;
- _devtab[1].mode = _devtab[2].mode = O_WRONLY;
-
- _stkbase = _savsp - *((long *)_savsp+1) + 8;
- *(long *)_stkbase = 0x4d414e58L;
-
- pp = _FindTask(0L);
- if (pp->pr_CLI) {
- _cli_parse(pp, alen, aptr);
- Enable_Abort = 1;
- _devtab[0].mode |= O_STDIO; /* shouldn't close if CLI */
- _devtab[1].mode |= O_STDIO;
- }
- else {
- _WaitPort(&pp->pr_MsgPort);
- WBenchMsg = _GetMsg(&pp->pr_MsgPort);
- if (WBenchMsg->sm_ArgList)
- _CurrentDir(WBenchMsg->sm_ArgList->wa_Lock);
- _wb_parse(pp, WBenchMsg);
- _argv = (char **)WBenchMsg;
- }
- _devtab[0].fd = _Input();
- if (_devtab[1].fd = _Output())
- _devtab[2].fd = _Open("*", MODE_OLDFILE);
- main(_argc, _argv);
- exit(0); /* Need to also close files, etc. */
- }
-
-