From 966105e56638c50bac0652017247a4e523ba34cb Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 11 May 2019 11:50:19 -0600 Subject: [PATCH] Copy uid, gid, ctime, and mtime --- src/bin/ar.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/bin/ar.rs b/src/bin/ar.rs index e7ede3e873..99e2f95b61 100644 --- a/src/bin/ar.rs +++ b/src/bin/ar.rs @@ -6,7 +6,7 @@ use std::{env, fs, process}; use std::io::{self, Read}; use std::path::Path; use std::time::{Duration, SystemTime, UNIX_EPOCH}; -use std::os::unix::fs::PermissionsExt; +use std::os::unix::fs::MetadataExt; use redoxfs::{BLOCK_SIZE, Disk, DiskSparse, Extent, FileSystem, Node}; use uuid::Uuid; @@ -20,7 +20,6 @@ fn archive_at>(fs: &mut FileSystem, parent_path: P, c let entry = entry_res?; let metadata = entry.metadata()?; - let permissions = metadata.permissions(); let file_type = metadata.file_type(); let name = entry.file_name().into_string().map_err(|_| @@ -43,16 +42,16 @@ fn archive_at>(fs: &mut FileSystem, parent_path: P, c )); }; - let mode = mode_type | (permissions.mode() as u16 & Node::MODE_PERM); + let mode = mode_type | (metadata.mode() as u16 & Node::MODE_PERM); let mut node = fs.create_node( mode, &name, parent_block, - ctime.as_secs(), - ctime.subsec_nanos() + metadata.ctime() as u64, + metadata.ctime_nsec() as u32 ).map_err(syscall_err)?; - node.1.uid = 0; - node.1.gid = 0; + node.1.uid = metadata.uid(); + node.1.gid = metadata.gid(); fs.write_at(node.0, &node.1).map_err(syscall_err)?; let path = entry.path(); @@ -64,8 +63,8 @@ fn archive_at>(fs: &mut FileSystem, parent_path: P, c node.0, 0, &data, - ctime.as_secs(), - ctime.subsec_nanos() + metadata.mtime() as u64, + metadata.mtime_nsec() as u32 ).map_err(syscall_err)?; } else { return Err(io::Error::new(