From c7ced14d563876a6062be3a2a6b7d7c2ea5f1d6a Mon Sep 17 00:00:00 2001 From: ripsaw8080 Date: Thu, 3 May 2018 16:08:53 +0000 Subject: [PATCH] Support rarely used FCB feature: open file with search mask. Fixes Buckaroo Banzai. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4096 --- src/dos/dos_files.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index e3a0cd0f..b7cf1ca4 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -971,6 +971,20 @@ bool DOS_FCBOpen(Bit16u seg,Bit16u offset) { char shortname[DOS_FCBNAME];Bit16u handle; fcb.GetName(shortname); + /* Search for file if name has wildcards */ + if (strpbrk(shortname,"*?")) { + LOG(LOG_FCB,LOG_WARN)("Wildcards in filename"); + if (!DOS_FCBFindFirst(seg,offset)) return false; + DOS_DTA find_dta(dos.tables.tempdta); + DOS_FCB find_fcb(RealSeg(dos.tables.tempdta),RealOff(dos.tables.tempdta)); + char name[DOS_NAMELENGTH_ASCII],file_name[9],ext[4]; + Bit32u size;Bit16u date,time;Bit8u attr; + find_dta.GetResult(name,size,date,time,attr); + DTAExtendName(name,file_name,ext); + find_fcb.SetName(fcb.GetDrive()+1,file_name,ext); + find_fcb.GetName(shortname); + } + /* First check if the name is correct */ Bit8u drive; char fullname[DOS_PATHLENGTH];