treat missing mode correctly

This commit is contained in:
Alexander Weiss 2022-07-07 12:15:18 +02:00
parent b2f251c086
commit 96288d888d
3 changed files with 7 additions and 5 deletions

View File

@ -183,7 +183,7 @@ fn map_entry(entry: DirEntry, with_atime: bool, cache: &UsersCache) -> Result<(P
mtime,
atime,
ctime,
mode,
mode: Some(mode),
uid: Some(uid),
gid: Some(gid),
user,

View File

@ -240,8 +240,10 @@ impl LocalBackend {
pub fn set_permission(&self, item: impl AsRef<Path>, meta: &Metadata) -> Result<()> {
let filename = self.path.join(item);
let mode = map_mode_from_go(*meta.mode());
std::fs::set_permissions(&filename, fs::Permissions::from_mode(mode))?;
if let Some(mode) = meta.mode() {
let mode = map_mode_from_go(*mode);
std::fs::set_permissions(&filename, fs::Permissions::from_mode(mode))?;
}
Ok(())
}

View File

@ -45,8 +45,8 @@ pub enum NodeType {
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize, Getters)]
pub struct Metadata {
#[serde(default, skip_serializing_if = "is_default")]
pub mode: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mtime: Option<DateTime<Local>>,
#[serde(default, skip_serializing_if = "Option::is_none")]