#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>

#include <egb.h>
#include <guidbg.h>

#include "ysmacro.h"
#include "ysgui.h"
#include "ysmalloc.h"
#include "ysrename.h"


static char head[64],tail[64];  /* 先頭文字列,後尾文字列 */
static int type;                /* 数値 / アルファベット */
static int nNum;                /* 数値桁数 */
static int sta,stp;             /* 開始番号 / ステップ   */
static char ext[4];             /* 拡張子 */


int NfInitialize(void)
{
	NfSetHead("FILE");
	NfSetType(NFTYPE_NUMBER);
	NfSetNumColumn(4);
	NfSetStartStep(0,1);
	NfSetTail("");
	NfSetExtention("");
	return YSTRUE;
}


/* 指定のリネーミング条件に従ってnumに対応する新しいファイル名を返す */
/* num  1が先頭 */
int NfGetNewFileName(char *neo,int num)
{
	int serial;
	char fom[64];

	switch(type)
	{
	case NFTYPE_NUMBER:
		/* %s%04d%s.%s */
		serial = sta+(num-1)*stp;
		sprintf(fom,"%s%d%s", "%s%0",nNum,"d%s.%s");
		sprintf(neo,(const char *)fom, head,serial,tail,ext);
		break;
	case NFTYPE_ALPHA:
		serial = 'A'+sta+(num-1)*stp;
		sprintf(neo,"%s%c%s.%s",head,(char)serial,tail,ext);
		break;
	}

	return YSTRUE;
}


int NfSetHead(char *hd)
{
	strcpy(head,hd);
	return YSTRUE;
}

int NfGetHead(char *hd)
{
	strcpy(hd,head);
	return YSTRUE;
}

int NfSetTail(char *tl)
{
	strcpy(tail,tl);
	return YSTRUE;
}

int NfGetTail(char *tl)
{
	strcpy(tl,tail);
	return YSTRUE;
}

int NfSetType(int tp)
{
	int nf;
	int sta,stp;

	FlNumFiles(&nf);
	NfGetStartStep(&sta,&stp);
	if(tp==NFTYPE_ALPHA && nf>('Z'-('A'+sta)+1)/stp)
	{
		return YSFALSE;
	}

	type=tp;
	return YSTRUE;
}

int NfGetType(int *tp)
{
	*tp=type;
	return YSTRUE;
}

int NfSetNumColumn(int nc)
{
	nNum=nc;
	return YSTRUE;
}

int NfGetNumColumn(int *nc)
{
	*nc=nNum;
	return YSTRUE;
}

int NfSetStartStep(int start,int step)
{
	sta=start;
	stp=step;
	return YSTRUE;
}

int NfGetStartStep(int *start,int *step)
{
	*start=sta;
	*step=stp;
	return YSTRUE;
}

int NfSetExtention(char *ex)
{
	if(*ex=='*')
	{
		ex++;
	}

	if(*ex=='.')
	{
		ex++;
	}

	strncpy(ext,ex,3);
	return YSTRUE;
}

int NfGetExtention(char *ex)
{
	strncpy(ex,ext,3);
	return YSTRUE;
}
