@@ -411,7 +411,7 @@ static struct fs_node *open(struct filesys *fs, const char *path, unsigned int f
411
411
fatdent = dent -> data ;
412
412
413
413
if ((fatdent -> first_cluster_low | fatdent -> first_cluster_high ) == 0 ) {
414
- if (fatdent -> attr == ATTR_DIR ) {
414
+ if (fatdent -> attr & ATTR_DIR ) {
415
415
/* ".." entries back to the root directory seem to have a 0
416
416
* cluster address as a special case
417
417
*/
@@ -420,7 +420,7 @@ static struct fs_node *open(struct filesys *fs, const char *path, unsigned int f
420
420
return 0 ; /* but we can't have 0-address files (right?) */
421
421
}
422
422
} else {
423
- newdir = fatdent -> attr == ATTR_DIR ? load_dir (fatfs , fatdent ) : 0 ;
423
+ newdir = ( fatdent -> attr & ATTR_DIR ) ? load_dir (fatfs , fatdent ) : 0 ;
424
424
}
425
425
if (dir != fatfs -> rootdir && dir != cwdnode -> data ) {
426
426
free_dir (dir );
@@ -659,7 +659,7 @@ static struct fat_dir *load_dir(struct fatfs *fs, struct fat_dirent *dent)
659
659
char * buf = 0 ;
660
660
int bufsz = 0 ;
661
661
662
- if (dent -> attr != ATTR_DIR ) return 0 ;
662
+ if (!( dent -> attr & ATTR_DIR ) ) return 0 ;
663
663
664
664
addr = dent -> first_cluster_low ;
665
665
if (fs -> type >= FAT32 ) {
@@ -720,7 +720,7 @@ static void parse_dir_entries(struct fat_dir *dir)
720
720
}
721
721
strcpy (eptr -> name , entname );
722
722
eptr -> data = dent ;
723
- eptr -> type = dent -> attr == ATTR_DIR ? FSNODE_DIR : FSNODE_FILE ;
723
+ eptr -> type = ( dent -> attr & ATTR_DIR ) ? FSNODE_DIR : FSNODE_FILE ;
724
724
eptr -> fsize = dent -> size_bytes ;
725
725
eptr ++ ;
726
726
}
@@ -942,7 +942,7 @@ static void dbg_printdir(struct fat_dirent *dir, int max_entries)
942
942
while(!DENT_IS_NULL(dir) && (!end || dir < end)) {
943
943
if(!DENT_IS_UNUSED(dir) && dir->attr != ATTR_VOLID && dir->attr != ATTR_LFN) {
944
944
if(dent_filename(dir, prev, name) > 0) {
945
- printf("%s%c\n", name, dir->attr == ATTR_DIR ? '/' : ' ');
945
+ printf("%s%c\n", name, ( dir->attr & ATTR_DIR) ? '/' : ' ');
946
946
}
947
947
}
948
948
if(dir->attr != ATTR_LFN) {
0 commit comments