home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
utility
/
misc
/
master
/
source
/
system.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-12-04
|
1KB
|
45 lines
#ifdef COMMENT
Die Funktion system ruft eine SHELL auf. Uebergeben wird das
auszufuehrende Kommando. Soll die Shell interaktive Eingaben
verarbeiten, so wird "-i" uebergeben.
Falls die Environment-Variable $SHELL gesetzt ist und einen
Wert hat, der vom Leerstring verschieden ist, so wird dieses
Programm aufgerufen. Ansonst wird ein Direktaufruf von Master
probiert.
#endif COMMENT
#include <osbind.h>
#define DEFAULT_SHELL "\\Master\\Master.Prg"
#define MASTER_MAGIC 0x4D415354L
int
system(com)
char *com;
{
char tail[128];
char *shell;
long **_shell_p = (long **) 0x4f6L;
long *ptr;
int (*master)();
long ssp;
extern char *getenv();
if(!com) com = "-i";
if(!(shell = getenv("SHELL")) shell = DEFAULT_SHELL;
if(!*shell) {
ssp = Super(0L);
ptr = *_shell_p;
Super(ssp);
if(*(ptr-2) == MASTER_MAGIC) {
master = (int (*)) ptr;
return((*master)(com));
}
}
strncat(&tail[1],com,126);
tail[126] = '\r';
tail[127] = '\0';
tail[0] = strlen(&tail[1])-1;
return(Pexec(0,shell,tail,(char *)0));
}