hrev47821 adds 1 changeset to branch 'master' old head: 884dab8a1793f18f316e5b987fbabe0ca7abae95 new head: c1fcde6665f1519093ea1819a18731abd679dd7a overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=c1fcde6+%5E884dab8 ---------------------------------------------------------------------------- c1fcde6: Set the archive bit on new or modified directory entries (but not subdirectories) Signed-off-by: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> [ Matej Horvat <matej.horvat@xxxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev47821 Commit: c1fcde6665f1519093ea1819a18731abd679dd7a URL: http://cgit.haiku-os.org/haiku/commit/?id=c1fcde6 Author: Matej Horvat <matej.horvat@xxxxxxxxxxxxxx> Date: Wed Aug 20 12:29:12 2014 UTC Committer: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> Commit-Date: Sat Sep 6 10:57:49 2014 UTC ---------------------------------------------------------------------------- 2 files changed, 5 insertions(+), 1 deletion(-) src/add-ons/kernel/file_systems/fat/dir.c | 2 ++ src/add-ons/kernel/file_systems/fat/file.c | 4 +++- ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/fat/dir.c b/src/add-ons/kernel/file_systems/fat/dir.c index 7d35276..96753be 100644 --- a/src/add-ons/kernel/file_systems/fat/dir.c +++ b/src/add-ons/kernel/file_systems/fat/dir.c @@ -900,6 +900,8 @@ create_dir_entry(nspace *vol, vnode *dir, vnode *node, const char *name, DPRINTF(0, ("creating directory entry (%11.11s)\n", nshort)); info.mode = node->mode; + if ((node->mode & FAT_SUBDIR) == 0) + info.mode |= FAT_ARCHIVE; info.cluster = node->cluster; info.size = node->st_size; info.time = node->st_time; diff --git a/src/add-ons/kernel/file_systems/fat/file.c b/src/add-ons/kernel/file_systems/fat/file.c index d9239a3..5d5f028 100644 --- a/src/add-ons/kernel/file_systems/fat/file.c +++ b/src/add-ons/kernel/file_systems/fat/file.c @@ -248,6 +248,8 @@ dosfs_wstat(fs_volume *_vol, fs_vnode *_node, const struct stat *st, if (mask & B_STAT_MODIFICATION_TIME) { DPRINTF(0, ("setting modification time\n")); + if ((node->mode & FAT_SUBDIR) == 0) + node->mode |= FAT_ARCHIVE; node->st_time = st->st_mtime; dirty = true; } @@ -934,7 +936,7 @@ dosfs_mkdir(fs_volume *_vol, fs_vnode *_dir, const char *name, int perms) memset(buffer, ' ', 11); memset(buffer+0x20, ' ', 11); buffer[0] = buffer[0x20] = buffer[0x21] = '.'; - buffer[0x0b] = buffer[0x2b] = 0x30; + buffer[0x0b] = buffer[0x2b] = FAT_SUBDIR; i = time_t2dos(dummy.st_time); buffer[0x16] = i & 0xff; buffer[0x17] = (i >> 8) & 0xff;