From 78754a7b23e5fc7a40bd3c450d54a193aaf585b1 Mon Sep 17 00:00:00 2001 From: Laria Carolin Chabowski Date: Mon, 3 Jul 2017 08:10:28 +0200 Subject: Implementing backup methods --- objects/object_tree.go | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) (limited to 'objects/object_tree.go') diff --git a/objects/object_tree.go b/objects/object_tree.go index 2a8f982..609aa7e 100644 --- a/objects/object_tree.go +++ b/objects/object_tree.go @@ -41,6 +41,15 @@ type TreeEntryBase struct { user, group string } +func baseFromExec(exec bool) (base TreeEntryBase) { + if exec { + base.acl = acl.ACLFromUnixPerms(0755) + } else { + base.acl = acl.ACLFromUnixPerms(0644) + } + return +} + func (teb TreeEntryBase) ACL() acl.ACL { return teb.acl } @@ -54,11 +63,14 @@ func (teb TreeEntryBase) Group() string { } func (teb TreeEntryBase) toProperties() properties { - return properties{ - "acl": teb.acl.String(), - "user": teb.user, - "group": teb.group, + props := properties{"acl": teb.acl.String()} + if teb.user != "" { + props["user"] = teb.user + } + if teb.group != "" { + props["group"] = teb.group } + return props } func (a TreeEntryBase) equalContent(b TreeEntryBase) bool { @@ -70,6 +82,13 @@ type TreeEntryFile struct { Ref ObjectId } +func NewTreeEntryFile(ref ObjectId, exec bool) TreeEntryFile { + return TreeEntryFile{ + TreeEntryBase: baseFromExec(exec), + Ref: ref, + } +} + func (tef TreeEntryFile) Type() TreeEntryType { return TETFile } @@ -90,6 +109,13 @@ type TreeEntryDir struct { Ref ObjectId } +func NewTreeEntryDir(ref ObjectId, exec bool) TreeEntryDir { + return TreeEntryDir{ + TreeEntryBase: baseFromExec(exec), + Ref: ref, + } +} + func (ted TreeEntryDir) Type() TreeEntryType { return TETDir } @@ -110,6 +136,13 @@ type TreeEntrySymlink struct { Target string } +func NewTreeEntrySymlink(target string, exec bool) TreeEntrySymlink { + return TreeEntrySymlink{ + TreeEntryBase: baseFromExec(exec), + Target: target, + } +} + func (tes TreeEntrySymlink) Type() TreeEntryType { return TETSymlink } -- cgit v1.2.3-54-g00ecf