1
0
Fork 0

Improve XTreeGold support. Thanks ripsaw

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3677
This commit is contained in:
Peter Veenstra 2011-02-19 19:57:30 +00:00
parent f94c0830ce
commit 212f673568
3 changed files with 10 additions and 2 deletions

View file

@ -506,6 +506,7 @@ public:
bool Extended(void);
void GetAttr(Bit8u & attr);
void SetAttr(Bit8u attr);
void SetResultAttr(Bit8u attr);
bool Valid(void);
private:
bool extended;

View file

@ -492,6 +492,10 @@ void DOS_FCB::SetAttr(Bit8u attr) {
if(extended) mem_writeb(pt - 1,attr);
}
void DOS_FCB::SetResultAttr(Bit8u attr) {
mem_writeb(pt + 12,attr);
}
void DOS_SDA::Init() {
/* Clear */
for(Bitu i=0;i<sizeof(sSDA);i++) mem_writeb(pt+i,0x00);

View file

@ -891,7 +891,7 @@ savefcb:
static void DTAExtendName(char * const name,char * const filename,char * const ext) {
char * find=strchr(name,'.');
if (find) {
if (find && find!=name) {
strcpy(ext,find+1);
*find=0;
} else ext[0]=0;
@ -909,12 +909,15 @@ static void SaveFindResult(DOS_FCB & find_fcb) {
char file_name[9];char ext[4];
find_dta.GetResult(name,size,date,time,attr);
drive=find_fcb.GetDrive()+1;
Bit8u find_attr = DOS_ATTR_ARCHIVE;
find_fcb.GetAttr(find_attr); /* Gets search attributes if extended */
/* Create a correct file and extention */
DTAExtendName(name,file_name,ext);
DOS_FCB fcb(RealSeg(dos.dta()),RealOff(dos.dta()));//TODO
fcb.Create(find_fcb.Extended());
fcb.SetName(drive,file_name,ext);
fcb.SetAttr(attr); /* Only adds attribute if fcb is extended */
fcb.SetAttr(find_attr); /* Only adds attribute if fcb is extended */
fcb.SetResultAttr(attr);
fcb.SetSizeDateTime(size,date,time);
}