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

