From 235939e277edf5a01aeada1162191a82f10a03d3 Mon Sep 17 00:00:00 2001 From: ripsaw8080 Date: Fri, 13 Mar 2015 13:47:26 +0000 Subject: [PATCH] Attempting to unlink (delete) an existing device name returns an access denied error. Fixes EMM device driver detection, and thus SoundBlaster sound, in the Striker soccer game. Also add a log message for FindFirst. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3905 --- src/dos/dos_files.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index 2e0e5a79..a37b4cf8 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -309,6 +309,7 @@ bool DOS_Rename(char const * const oldname,char const * const newname) { } bool DOS_FindFirst(char * search,Bit16u attr,bool fcb_findfirst) { + LOG(LOG_FILES,LOG_NORMAL)("file search attributes %X name %s",attr,search); DOS_DTA dta(dos.dta()); Bit8u drive;char fullsearch[DOS_PATHLENGTH]; char dir[DOS_PATHLENGTH];char pattern[DOS_PATHLENGTH]; @@ -633,6 +634,11 @@ bool DOS_OpenFileExtended(char const * name, Bit16u flags, Bit16u createAttr, Bi bool DOS_UnlinkFile(char const * const name) { char fullname[DOS_PATHLENGTH];Bit8u drive; + // An existing device returns an access denied error + if (DOS_FindDevice(name) != DOS_DEVICES) { + DOS_SetError(DOSERR_ACCESS_DENIED); + return false; + } if (!DOS_MakeName(name,fullname,&drive)) return false; if(Drives[drive]->FileUnlink(fullname)){ return true;