Improve XTreeGold support. Thanks ripsaw
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3677
This commit is contained in:
parent
f94c0830ce
commit
212f673568
3 changed files with 10 additions and 2 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue