Ticket #11142: 0001-Set-the-archive-bit-on-new-or-modified-directory-ent.2.patch

File 0001-Set-the-archive-bit-on-new-or-modified-directory-ent.2.patch, 1.9 KB (added by MatejHorvat, 10 years ago)
  • src/add-ons/kernel/file_systems/fat/dir.c

    From f20761f9d42def83d954286e740691f970e7928a Mon Sep 17 00:00:00 2001
    From: Matej Horvat <matej.horvat@guest.arnes.si>
    Date: Wed, 20 Aug 2014 14:29:12 +0200
    Subject: [PATCH] Set the archive bit on new or modified directory entries (but
     not subdirectories)
    
    ---
     src/add-ons/kernel/file_systems/fat/dir.c  | 2 ++
     src/add-ons/kernel/file_systems/fat/file.c | 4 +++-
     2 files changed, 5 insertions(+), 1 deletion(-)
    
    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 b create_dir_entry(nspace *vol, vnode *dir, vnode *node, const char *name,  
    900900    DPRINTF(0, ("creating directory entry (%11.11s)\n", nshort));
    901901
    902902    info.mode = node->mode;
     903    if ((node->mode & FAT_SUBDIR) == 0)
     904        info.mode |= FAT_ARCHIVE;
    903905    info.cluster = node->cluster;
    904906    info.size = node->st_size;
    905907    info.time = node->st_time;
  • src/add-ons/kernel/file_systems/fat/file.c

    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 b dosfs_wstat(fs_volume *_vol, fs_vnode *_node, const struct stat *st,  
    248248
    249249    if (mask & B_STAT_MODIFICATION_TIME) {
    250250        DPRINTF(0, ("setting modification time\n"));
     251        if ((node->mode & FAT_SUBDIR) == 0)
     252            node->mode |= FAT_ARCHIVE;
    251253        node->st_time = st->st_mtime;
    252254        dirty = true;
    253255    }
    dosfs_mkdir(fs_volume *_vol, fs_vnode *_dir, const char *name, int perms)  
    934936    memset(buffer, ' ', 11);
    935937    memset(buffer+0x20, ' ', 11);
    936938    buffer[0] = buffer[0x20] = buffer[0x21] = '.';
    937     buffer[0x0b] = buffer[0x2b] = 0x30;
     939    buffer[0x0b] = buffer[0x2b] = FAT_SUBDIR;
    938940    i = time_t2dos(dummy.st_time);
    939941    buffer[0x16] = i & 0xff;
    940942    buffer[0x17] = (i >> 8) & 0xff;