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

#include <string.h>
#include "defines.h"
#include "astring.h"
#include "acmp.h"
#include "etc.h"

// 92/11/27 初版
// 97/09/15 TwentyOne対応
/****************************************************************************/

int fcpwild(const unchar *wild0,const unchar *fname0)
/* 拡張ワイルドカード対応ファイル名比較ルーチン */
/* wild0のファイル名（拡張ワイルドカード使用可）とfname0のファイル名を比較する */
/* ファイル名＋拡張子のみを比較すること */
/* ワイルドカードは'?'と'*'の２つ。また、fname0中に'?''*'が存在してはいけない */
/* ワイルドカードは２バイト文字も１文字として判断する */
/* リターン値：０＝不一致、１＝一致 */
{
int tw;
unchar wild[MAXFILEEXT],fname[MAXFILEEXT];
	/* ファイル名は大文字小文字区別しない */
	tw=TwentyOneOptions();
	if (tw==-1) tw=0; // TwentyOneは存在しない＝デフォルト比較
	if (tw!=0) {
		// ここで使うのは次のビットのみ
		//  bit30 : 大文字小文字区別有り
		//  bit27 : 8+3比較する
		tw&=(BIT27|BIT30);
	}
	// 変更するのでワークエリアにコピー
	strcpy(wild,wild0);
	strcpy(fname,fname0);
	if (!(tw&BIT30)) { // 大文字小文字区別無しの時
		// 両方大文字化
		jstrupr(wild);
		jstrupr(fname);
	}
	// 現在は8+3文字比較はサポートしていない
	// TwentyOneのマルチピリオドを非対応にすれば何とかなるのだが・・・
	
	/* ファイルに合うように変更する */
	{int len;
	len=strlen(wild);
	if (len>2) {
		/* .* : 拡張子はなんでもいい -> 拡張子部分 "*" */
		if (strcmp(&wild[len-2],".*")==0) strcpy(&wild[len-2],"*");
	}
	}
	if (strcmp(wild,"*.")==0) { /* 拡張子がないもの */
		// fname側に拡張子の印を付けておく
		if (strchr(fname,'.')==NULL) strcat(fname,".");
	}
	
	/* 後は日本語対応比較に任せる */
	return(jcpwild(wild,fname));
}

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