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