added DOS_SetFileAttr : check if file is available, failure if cdrom, but no change of file attributes
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1346
This commit is contained in:
		
							parent
							
								
									628357a1b0
								
							
						
					
					
						commit
						3a49d4acf2
					
				
					 3 changed files with 24 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -117,6 +117,7 @@ bool DOS_RemoveDir(char * dir);
 | 
			
		|||
bool DOS_Rename(char * oldname,char * newname);
 | 
			
		||||
bool DOS_GetFreeDiskSpace(Bit8u drive,Bit16u * bytes,Bit8u * sectors,Bit16u * clusters,Bit16u * free);
 | 
			
		||||
bool DOS_GetFileAttr(char * name,Bit16u * attr);
 | 
			
		||||
bool DOS_SetFileAttr(char * name,Bit16u attr);
 | 
			
		||||
 | 
			
		||||
/* IOCTL Stuff */
 | 
			
		||||
bool DOS_IOCTL(void);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@
 | 
			
		|||
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* $Id: dos.cpp,v 1.57 2003-10-14 23:33:33 harekiet Exp $ */
 | 
			
		||||
/* $Id: dos.cpp,v 1.58 2003-10-17 16:56:38 finsterr Exp $ */
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -527,7 +527,12 @@ static Bitu DOS_21Handler(void) {
 | 
			
		|||
			break;
 | 
			
		||||
		case 0x01:				/* Set */
 | 
			
		||||
			LOG(LOG_MISC,LOG_ERROR)("DOS:Set File Attributes for %s not supported",name1);
 | 
			
		||||
			CALLBACK_SCF(false);
 | 
			
		||||
			if (DOS_SetFileAttr(name1,reg_cx)) {
 | 
			
		||||
				CALLBACK_SCF(false);
 | 
			
		||||
			} else {
 | 
			
		||||
				CALLBACK_SCF(true);
 | 
			
		||||
				reg_ax=dos.errorcode;
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			LOG(LOG_MISC,LOG_ERROR)("DOS:0x43:Illegal subfunction %2X",reg_al);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@
 | 
			
		|||
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* $Id: dos_files.cpp,v 1.47 2003-10-10 13:50:34 finsterr Exp $ */
 | 
			
		||||
/* $Id: dos_files.cpp,v 1.48 2003-10-17 16:56:06 finsterr Exp $ */
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -447,6 +447,21 @@ bool DOS_GetFileAttr(char * name,Bit16u * attr) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool DOS_SetFileAttr(char * name,Bit16u attr) 
 | 
			
		||||
// this function does not change the file attributs
 | 
			
		||||
// it just does some tests if file is available 
 | 
			
		||||
// returns false when using on cdrom (stonekeep)
 | 
			
		||||
{
 | 
			
		||||
	Bit16u attrTemp;
 | 
			
		||||
	char fullname[DOS_PATHLENGTH];Bit8u drive;
 | 
			
		||||
	if (!DOS_MakeName(name,fullname,&drive)) return false;	
 | 
			
		||||
	if (strcmp(Drives[drive]->GetInfo(),"CDRom.")==0) {
 | 
			
		||||
		DOS_SetError(DOSERR_ACCESS_DENIED);
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
	return Drives[drive]->GetFileAttr(fullname,&attrTemp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool DOS_Canonicalize(char * name,char * big) {
 | 
			
		||||
//TODO Add Better support for devices and shit but will it be needed i doubt it :) 
 | 
			
		||||
	Bit8u drive;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue