[haiku-commits] haiku: hrev47821 - src/add-ons/kernel/file_systems/fat

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 6 Sep 2014 12:58:42 +0200 (CEST)

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;


Other related posts:

  • » [haiku-commits] haiku: hrev47821 - src/add-ons/kernel/file_systems/fat - axeld