/*****************************************************************************/
/*	filenameがディレクトリ名かどうかチェックし、ディレクトリ名の時は
	*.*を付けて完全なファイルネームにして返す関数			     */
/*****************************************************************************/

#include <stdio.h>
#include <string.h>
#include "doslibm.h"
#include "defines.h"
#include "acmp.h"
#include "astring.h"
#include "astdio.h"

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

int fn_make(unchar *makename,unchar *filename,int mode)
{
struct NAMECKBUF buffer;
struct FILBUF fblock;
int done;
unchar *adrive,*aname,*aext;
	/* 高速化のため */
	adrive=buffer.drive;
	aname=buffer.name;
	aext=buffer.ext;
	
	/* ファイルネーム分解 */
	done=NAMECK(filename,&buffer);
	if (done<0) { /* filename error */
		if (mode) printsn("\aファイル名が異常です:",filename);
		return(1);
	}
	/* 特に重要な判定
	    1.	NAME\ -> ﾃﾞｨﾚｸﾄﾘ名 -> dir=NAME & name=""
	    2.	NAME  -> ﾃﾞｨﾚｸﾄﾘ名／ファイル名 -> name=NAME , dir=""
	    3.	NAME1\NAME2 - > ﾃﾞｨﾚｸﾄﾘ名＋ファイル名／ﾃﾞｨﾚｸﾄﾘ名＋ﾃﾞｨﾚｸﾄﾘ名
					-> dir=NAME1 , dir=NAME2
	printf2("%s -> %s , %s , %s\n",filename,adrive,aname,aext);
	＊実験の結果
	NAMECK関数はﾃﾞｨﾚｸﾄﾘ名を絶対ﾃﾞｨﾚｸﾄﾘ名に自動的に変換する、
		もしくは指定がない時はそれを追加する。
	ﾃﾞｨﾚｸﾄﾘ名の後ろには"\"が付く。従って、それがルートになる時はdir="\"
	になる。また、ドライブ名も補う。ドライブ名は":"付き。
	拡張子は"."付き。'*'ワイルドカードは'?'に展開される。
	.ext = 拡張子.extのみとなり、ファイル名無しとなる。
	*/
	if (aname[0]==0) { /* ファイル名がない時 */
		/* path\*.extにする */
		fd_strcpy(makename,adrive);
		strcat(makename,"*");
		strcat(makename,aext[0]==0? (unchar *)".*":aext); /* 拡張子もない時はpath\*.* */
		/*printf2("fname:%s\n",makename); exit(1);*/
		return(0); /* 正常終了 */
	}
	
	/* NAMECKはドライブ名、ﾃﾞｨﾚｸﾄﾘ名を自動修正するので修正後の名前でパス名を再編成する */
	strmfp2(makename,adrive,aname,aext);
	/* 修正後の名前をとりあえずストアしておく */
	
	if (done==0x00) { /* ワイルドカードがない時 */
		/* makenameがﾃﾞｨﾚｸﾄﾘ名かどうかを調べる */
		done=FILES(&fblock,makename,FA_DIREC);
		while (done>=0) { /* ﾃﾞｨﾚｸﾄﾘ名の時 */
			if (!CheckParentDir(fblock.name)) { /* "."".."は飛ばす */
				strcat(makename,"\\*.*"); /* fname\*.*とする */
				break;
			}
			done=NFILES(&fblock);
		}
	}
	/*printf2("fname:%s\n",makename); exit(1);*/
	return(0); /* 正常終了 */
}

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