From 8618ef8870451a52cb5687683b097ca35b646441 Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Wed, 16 Mar 2005 20:44:56 +0000 Subject: [PATCH] basic hidden file detection. Used as initial check by mechwarrior 2 Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2128 --- src/dos/drive_iso.cpp | 11 ++++++----- src/dos/drives.h | 4 +++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/dos/drive_iso.cpp b/src/dos/drive_iso.cpp index b30c2f72..72d07fc0 100644 --- a/src/dos/drive_iso.cpp +++ b/src/dos/drive_iso.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: drive_iso.cpp,v 1.5 2005-02-10 10:20:51 qbix79 Exp $ */ +/* $Id: drive_iso.cpp,v 1.6 2005-03-16 20:44:56 qbix79 Exp $ */ #include #include @@ -280,10 +280,11 @@ bool isoDrive::FindNext(DOS_DTA &dta) while (dirIter != searchCache.end()) { isoDirEntry &de = *dirIter; - Bit8u findAttr; - if (IS_DIR(de.fileFlags)) findAttr = DOS_ATTR_DIRECTORY; - else findAttr = DOS_ATTR_ARCHIVE; - + Bit8u findAttr = 0; + if (IS_DIR(de.fileFlags)) findAttr |= DOS_ATTR_DIRECTORY; + else findAttr |= DOS_ATTR_ARCHIVE; + if (IS_HIDDEN(de.fileFlags)) findAttr |= DOS_ATTR_HIDDEN; + if (WildFileCmp((char*)de.ident, pattern) && !(~attr & findAttr & (DOS_ATTR_DIRECTORY | DOS_ATTR_HIDDEN | DOS_ATTR_SYSTEM))) { diff --git a/src/dos/drives.h b/src/dos/drives.h index de99e339..e1da4047 100644 --- a/src/dos/drives.h +++ b/src/dos/drives.h @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: drives.h,v 1.26 2005-02-10 10:20:52 qbix79 Exp $ */ +/* $Id: drives.h,v 1.27 2005-03-16 20:44:55 qbix79 Exp $ */ #ifndef _DRIVES_H__ #define _DRIVES_H__ @@ -274,9 +274,11 @@ struct isoDirEntry { #define ISO_FRAMESIZE 2048 #define ISO_DIRECTORY 2 +#define ISO_HIDDEN 1 #define ISO_MAXPATHNAME 256 #define ISO_FIRST_VD 16 #define IS_DIR(fileFlags) (fileFlags & ISO_DIRECTORY) +#define IS_HIDDEN(fileFlags) (fileFlags & ISO_HIDDEN) class isoDrive : public DOS_Drive { public: