/*******************************************************************************/
/* ヘルプファイル表示							       */
/*******************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
#include <error.h>
#include "defines.h"
#include "aig.h"

/*******************************************************************************/

int helpcom(argc,argv,flag,helpname,helpmes)
int argc,flag;
const unchar *argv[],*helpname,*helpmes;
/* helpname : ヘルプファイル名 , helpmes : 簡易ヘルプメッセージ */
{
unchar drv[MAXDRIVE],dir[MAXDIR],name[MAXPATH],ext[MAXEXT];
unchar helpfile[MAXPATH],ename[MAXFNAME];
unchar *help;
int ret;
#define DEFHELP "CHELP.X" /* デフォルトヘルプ表示プログラム */

	/* 条件が満たされているとき、または"?","/help"オプションがある時 */
	if (flag || check_param2("?",argv,argc,0)
		 || check_param2("HELP",argv,argc,0)) {
		/* 実行プログラム名取得：コマンドネームを変えてもいいように */
		strcpy(ename,exename(argv[0]));
		jstrupr(ename); /* 大文字化 */
		
		/* 環境変数チェック */
		help=getenv2("CHELP",DEFHELP);
		
		/* CHELP.Xかどうかチェックのため */
		strsfn(help,drv,dir,name,ext);
		strcat(name,".");
		strcat(name,ext);
		
		/* 表示プログラム起動 */
		if (strcmpi(name,DEFHELP)==0) { /* CHELP.Xである */
			/* CHELP専用の引数で起動 */
			ret=spawnlp(P_WAIT,help,help,helpname,argv[0],"/C","/E",NULL);
		} else { /* CHELP.Xでないとき */
			/* ヘルプファイル名作成 */
			env_fname_set(name,".","COMHELP",helpname);
			fn_ext(name,helpfile,"hlp"); /* 拡張子補足 */
			
			/* 第１引数に表示ファイル（ヘルプファイル）名持って起動 */
			ret=spawnlp(P_WAIT,help,help,helpfile/*,ename*/,NULL);
			if (ret==-1) { /* spawnで直に起動出来ない時＝ﾊﾞｯﾁﾌｧｲﾙの可能性有り */
			    int eno;
				eno=errno; /* エラー番号を保存 */
				// command.xで起動する
				ret=spawnlp(P_WAIT,"command.x","command.x"
						,"-c",help,helpfile/*,ename*/,NULL);
				if (ret==-1) errno=eno;
				// command.xでも起動出来ない時は完全なｴﾗｰなのでｴﾗｰ番号を戻す
				/* 起動出来た時はバッチファイルだった */
			}
		}
		
		if (ret>0 || errno) { /* エラー等の時 */
			/* 簡易説明表示 */
			printss("［書式］",ename);
			printsn(" ",helpmes);
			return(2); /* 簡易で表示された */
		}
		/* ヘルプは表示された */
		return(1);
	}
	/* ヘルプは表示されなかった */
	return(0);
}

/*******************************************************************************/
