home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
216.lha
/
PdMake
/
maksys.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-02-15
|
1KB
|
84 lines
/* 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
}