#include "defines.h"
#include "ascsi.h"
#include <ctype.h>	// toupper

unchar *Path2ScsiID(unchar *path,unlong *scsiid)
// FAT32システム用パス名からSCSI-IDを得る
// return : =NULL:エラー , !=NULL:pathのSCSI-ID:の次の位置
{
unchar c,max;
unlong id=0x00000000;
	// ID:\path\fname
	// ID='0'〜'9','A'〜'F'(TWOscsi対応)
	// LUN付きの場合:２桁になり前１桁がLUN='0'〜'7',後ろ１桁がSCSI-ID
	// 「例」00: ID=0,LUN=0
	//	 1A: ID=A,LUN=1
	if (path[2]==':') { // LUNあり
		// 最初の１文字はLUN
		c=*path++;
		if (c>='0' && c<='7') id=(((int)(c-'0'))<<16); // 上位１６ビットにLUNを入れる
		else goto ID_ERR; // 正しくない文字でエラー
	}
	c=*path++;
	// ID読み取り
	if (*path++==':') { // その後ろが':'の時のみ有効
		max=(S_TW_CHK()==-2? 15:7);
		c=toupper(c);
		if (c>='A' && c<='F') c=(c-'A')+10;
		else c-='0';
		if (c<=max) { // cはuncharなので常に>=0
			*scsiid=(id+(int)c);
			return(path);
		}
		// 正しくない文字でエラー
	}
    ID_ERR:;
	return(NULL); // エラー：SCSI-ID指定がない
}
