/*
	拡張子別のディレクトリを示す環境ファイルを参照して
	その拡張子のサーチパスを返す関数
	
	１、環境ファイルは環境変数で指定されるファイルとする
	２、環境変数がない場合はデフォルトの環境ファイルを参照する
	３、環境ファイルは拡張子 − ディレクトリの表である
	４、ディレクトリは';'でつなぎ複数指定できる
	５、環境ファイルがない、環境ファイル中にその拡張子に対する記述がない時は
		デフォルトを返す
*/

#include <stdio.h>
#include <string.h>
#include "defines.h"
#include "aig.h"

void ext_env_check(path,env,defenv,ext,defpath)
unchar path[MAXDIR],*env,*defenv,*ext,*defpath;
/* 引数
	path	結果のパスを入れるワークエリア
	env	環境ファイルを示す環境変数名
	defenv	環境変数がない時に参照する環境ファイル名
	ext	探す拡張子
	defpath	環境ファイルがない時に返すパス
*/
{
#define LMAX	256
unchar envname[MAXPATH],line[LMAX];
unchar ext2[LMAX];
FILE *fp;
	/* 環境変数サーチ */
	env_name_set(envname,defenv,env);
	
	/* 環境ファイルオープン */
	fp=fopen(envname,"rt");
	if (fp!=NULL) {
		/* 拡張子に対するパスを探す */
		while (read1line0(fp,line,ext2,LMAX)==0) {
			/* 拡張子名比較 */
			if (strcmpi(ext2,ext)==0) { /* 一致 */
			    int i,c;
				/* ディレクトリ名読みだし */
				i=strlen(ext2); /* skip 拡張子 */
				while (c=line[i],c==' '||c==TAB) i++; /* skip セパレーター */
				defpath=&line[i];
				break;
			}
		} /* 環境ファイル中になかった時はデフォルトのまま */
		fclose(fp);
	} /* 環境ファイルがない -> デフォルトパス */
	strcpy(path,defpath);
}
