home *** CD-ROM | disk | FTP | other *** search
- /* System dependant stuff */
-
- #include <stdio.h>
- #include <ctype.h>
- extern int _oserr;
-
- #include "libraries/dos.h"
- #include "libraries/dosextens.h"
-
- xsystem(s)
- char *s;
- {
- char cmd[256];
- char *c;
- int i;
- int success;
-
- #ifdef MCH_AMIGA
- long _oserr;
- void *Output();
- struct Process *FindTask(), *myproc = FindTask(0L);
- struct CommandLineInterface *cli;
- #endif
-
- for(c=s;isspace(*c);c++); /* isolate first word bounded by white space */
- for(i=0;!isspace(*c);i++) cmd[i] = *c++;
- cmd[i] = '\0';
- while(isspace(*c)) c++;
-
- success = Execute(s,NULL,Output());
-
- if(!success)
- { _oserr = IoErr();
-
- if (_oserr)
- fprintf(stderr,"\nMAKE:Unable to invoke [%s] ERROR=%d\n",cmd,_oserr);
- /*
- else
- fprintf(stderr,"\nMAKE:Invalid parm to [%s] parm=[%s]\n",cmd,args[1]);
- */
- return(-1);
- }
- else
- { cli = (struct CommandLineInterface *)( ((LONG)(myproc->pr_CLI)) <<2);
- if (cli) return cli->cli_FailLevel;
- return 0;
- }
- }
-
- match(a,b)
- char *a,*b;
- { while(*a++ == *b++) if(*a=='\0' && *b=='\0') return 1;
- return 0;
- }
-
- /* set the macros $(@D) $(@F)... */
-
- setname(m1,m2,m3,n)
- char *m1,*m2,*m3;
- char *n;
- {
- #if LATTICE
- char drive[3];
- static char path[FMSIZE];
- static char node[FNSIZE];
- static char ext[FESIZE];
-
- static char dpart[FMSIZE+3];
- static char fpart[FNSIZE+FESIZE];
-
- strsfn(n,drive,path,node,ext);
- strcpy(dpart,drive);
- strcat(dpart,path);
- strcpy(fpart,node);
- strcat(fpart,".");
- strcat(fpart,ext);
-
- setmacro(m1,dpart);
- setmacro(m2,fpart);
- setmacro(m3,node);
- #endif
- }
-
-