/*
	ファイル名処理関数
	
	1993.12.07	関数名を新たにして作り直した
	1994.01.14	漢字ファイル名に対応した。
	1994.02.05	拡張子を扱う get_ext, chk_ext を追加した。
*/
#include	<stdio.h>
#include	<string.h>
#include	<jctype.h>

#define	FILE_MAX 81

char    *FILE_get_name(char *name)
{	char	*f;
	
	for( f=name;*f != NULL;f++ );
	f++;
	do
	{	f--;
		/* 先頭でない、パス区切りでない */
		for( ;f != name && *f !='\\' && *f !=':' ; f-- );
	
	}while( *f=='\\' && iskanji(*(f-1)) );	/* 漢字？ */
	
	if ( *f=='\\' || f != name )	/* 先頭がルート \ かもしれない */
		f++;
	return f;
}

char	*FILE_get_path(char *name)
{
	char	f[FILE_MAX],*p;
	
	strcpy(f,name);
	p=FILE_get_name(f);
	*p=NULL;
	
	return f;
}

char	*FILE_get_ext(char *name)
{	char	*f;
	
	f=FILE_get_name(name);
	for( ; *f !='.' && *f != NULL ;f++);
	
	return f;
}

char	*FILE_del_ext(char *name)
{
	char	f[FILE_MAX],*p;
	
	strcpy(f,name);
	p=(FILE_get_ext(f));
	*p=NULL;
	
	return f;
}

char *FILE_chg_ext(char *org,char *ext)
{
	char	f[FILE_MAX];
	
	strcpy(f,FILE_del_ext(org) );
	strcat(f,ext);
	
	return(f);
}

char *FILE_chk_ext(char *org,char *ext)
{
	char	f[FILE_MAX],e[5];
	
	strcpy( f ,org );
	strcpy(e,FILE_get_ext(f));
	
	if (e[0] ==NULL)		/* 指定ないとき、追加して返す */
		strcat(f,ext);
	else if ( strcmpi(e,ext) != 0 )		/* 指定と違うとき */
		f[0]=NULL;
	
	return(f);
}


int FILE_chk_exist(char *name)
{
	FILE	*fp;
	
	fp=fopen(name,"r");
	fclose(fp);
	
	return( (fp==NULL) ? 1: 0 );
}

#ifdef TEST
main(int argc,char *argv[])
{
	char tmp[FILE_MAX];
	
	strcpy(tmp,FILE_get_name(argv[1]));
	printf("get name %s\n",tmp);
	
	strcpy(tmp,FILE_get_path(argv[1]));
	printf("get path %s\n",tmp);
	
	strcpy(tmp,FILE_get_ext(argv[1]));
	printf("get ext  %s\n",tmp);
	
	strcpy(tmp,FILE_del_ext(argv[1]));
	printf("del ext  %s\n",tmp);
	
	strcpy(tmp,FILE_chg_ext(argv[1],".tmp"));
	printf("chg ext  %s\n",tmp);
	
	printf("chk exist ",tmp);
	if( FILE_chk_exist(argv[1]) )
		puts("(NG)");
	else
		puts("(OK)");
	
	strcpy(tmp,FILE_chk_ext(argv[1],".tmp"));
	printf("chk ext %s ",tmp);
	if( tmp[0] ==NULL ) puts("(NG)");	else puts("(OK)");

}
#endif
