#include <stdio.h>
#include <process.h>
#include <error.h>
#include "defines.h"

int xspawnvp(unchar *path,unchar *argv[])
// 外部/内部 自動判別 子プロセス起動
{
int ret,eno;
	ret=spawnvp(P_WAIT,path,argv); // まずはそのまま起動してみる
	if (ret==-1) { // そのまま起動出来ない時＝内部コマンドの可能性有り
	    #define LMAX 128
	    unchar *argv2[LMAX];
	    int i;
		eno=errno; /* エラー番号を保存 */
		// パラメーター変更：command -cで起動する
		argv2[0]="command.x";
		argv2[1]="-c";
		i=0;
		do {
			argv2[2+i]=argv[i];
		} while (argv[i++]!=NULL); // NULLを書き込むまで
		ret=spawnvp(P_WAIT,argv2[0],argv2);
		/* これでも起動出来ない:完全なエラーなのでエラー番号を戻す */
		if (ret==-1) errno=eno;
		// 起動出来た時は内部コマンドだった
	}
	return(ret);
}
