#include <error.h>
#include "defines.h"
#include "ascsi.h"
#include "FAT32.h"

//#define	DEBUG	1

#if DEBUG >=1
#define	Fat2Sec0(fp,fat)	(fp->secdata+((fat-fp->fatroot)*fp->clu1sec))
#endif

int _Attrib32(FILE32 *fp,int atr)
// ファイル／ディレクトリ／ボリューム名を指定した属性に変更する
// atr = -1 の時はファイルの属性を調べる
// return : =0:ok , !=0:error
{
int atr0;
	// エントリは現在読み込んでいるFAT内にある
	#if DEBUG
	printf("fname:%s=%02x\n",fp->name,fp->atr);
	#endif
	atr0=fp->atr; // 元の属性
	if (atr!=-1) {
	    int ret;
		atr=(fp->atr&(FA_ARCH|FA_DIREC|FA_VOL))|(atr&(FA_HIDE|FA_SYS|FA_RONLY));
		if (atr==0x0f) return(-111); // VFATになる時はエラーにする
		fp->next[0x0b]=fp->atr=(unchar)atr;
		ret=CluWrite(fp,fp->oldfat);
		if (ret) return(-ret);
	} // atr=-1の時は現在の設定読み出しのみ
	return(atr0);
}
