#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 #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)); }