]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
mtime support for xfs
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 10 Dec 2010 15:19:24 +0000 (16:19 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 10 Dec 2010 15:19:24 +0000 (16:19 +0100)
grub-core/fs/xfs.c

index 9dffe31d190a6f66f8bd872fc5aad0e249f7b253..966bade1b5525baae653f3a57cd3bfd2e3effe78 100644 (file)
@@ -98,13 +98,22 @@ struct grub_xfs_btree_root
   grub_uint64_t keys[1];
 }  __attribute__ ((packed));
 
+struct grub_xfs_time
+{
+  grub_uint32_t sec;
+  grub_uint32_t nanosec;
+}  __attribute__ ((packed));
+
 struct grub_xfs_inode
 {
   grub_uint8_t magic[2];
   grub_uint16_t mode;
   grub_uint8_t version;
   grub_uint8_t format;
-  grub_uint8_t unused2[50];
+  grub_uint8_t unused2[26];
+  struct grub_xfs_time atime;
+  struct grub_xfs_time mtime;
+  struct grub_xfs_time ctime;
   grub_uint64_t size;
   grub_uint64_t nblocks;
   grub_uint32_t extsize;
@@ -643,6 +652,11 @@ grub_xfs_dir (grub_device_t device, const char *path,
     {
       struct grub_dirhook_info info;
       grub_memset (&info, 0, sizeof (info));
+      if (node->inode_read)
+       {
+         info.mtimeset = 1;
+         info.mtime = grub_be_to_cpu32 (node->inode.mtime.sec);
+       }
       info.dir = ((filetype & GRUB_FSHELP_TYPE_MASK) == GRUB_FSHELP_DIR);
       grub_free (node);
       return hook (filename, &info);