From b82a53bbf49c3b68428b821a383b0efe74060737 Mon Sep 17 00:00:00 2001
From: Matej Horvat <matej.horvat@guest.arnes.si>
Date: Tue, 19 Aug 2014 12:37:26 +0200
Subject: [PATCH] Set the archive bit on new or modified directory entries
---
src/add-ons/kernel/file_systems/fat/dir.c | 2 +-
src/add-ons/kernel/file_systems/fat/file.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/add-ons/kernel/file_systems/fat/dir.c b/src/add-ons/kernel/file_systems/fat/dir.c
index 7d35276..17c9301 100644
a
|
b
|
_create_dir_entry_(nspace *vol, vnode *dir, struct _entry_info_ *info,
|
726 | 726 | // write directory entry |
727 | 727 | diri_make_writable(&diri); |
728 | 728 | memcpy(buffer, nshort, 11); |
729 | | buffer[0x0b] = info->mode; |
| 729 | buffer[0x0b] = info->mode | FAT_ARCHIVE; |
730 | 730 | memset(buffer+0xc, 0, 0x16-0xc); |
731 | 731 | i = time_t2dos(info->time); |
732 | 732 | buffer[0x16] = i & 0xff; |
diff --git a/src/add-ons/kernel/file_systems/fat/file.c b/src/add-ons/kernel/file_systems/fat/file.c
index d9239a3..1583b60 100644
a
|
b
|
status_t write_vnode_entry(nspace *vol, vnode *node)
|
91 | 91 | return ENOENT; |
92 | 92 | |
93 | 93 | diri_make_writable(&diri); |
94 | | buffer[0x0b] = node->mode; // file attributes |
| 94 | buffer[0x0b] = node->mode | FAT_ARCHIVE; // file attributes |
95 | 95 | |
96 | 96 | memset(buffer+0xc, 0, 0x16-0xc); |
97 | 97 | i = time_t2dos(node->st_time); |
… |
… |
dosfs_mkdir(fs_volume *_vol, fs_vnode *_dir, const char *name, int perms)
|
934 | 934 | memset(buffer, ' ', 11); |
935 | 935 | memset(buffer+0x20, ' ', 11); |
936 | 936 | buffer[0] = buffer[0x20] = buffer[0x21] = '.'; |
937 | | buffer[0x0b] = buffer[0x2b] = 0x30; |
| 937 | buffer[0x0b] = buffer[0x2b] = FAT_SUBDIR | FAT_ARCHIVE; |
938 | 938 | i = time_t2dos(dummy.st_time); |
939 | 939 | buffer[0x16] = i & 0xff; |
940 | 940 | buffer[0x17] = (i >> 8) & 0xff; |