Skip to content

Commit

Permalink
mem: add rudimentary FileInfo.Sys() implementation
Browse files Browse the repository at this point in the history
This allows downstream users to act on file ownership.

Signed-off-by: Dominik Menke <dom@digineo.de>
  • Loading branch information
dmke committed Apr 18, 2022
1 parent 100c9a6 commit 7c60862
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 1 deletion.
6 changes: 5 additions & 1 deletion mem/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,11 @@ func (s *FileInfo) IsDir() bool {
defer s.Unlock()
return s.dir
}
func (s *FileInfo) Sys() interface{} { return nil }
func (s *FileInfo) Sys() interface{} {
s.Lock()
defer s.Unlock()
return sysFromFileInfo(s)
}
func (s *FileInfo) Size() int64 {
if s.IsDir() {
return int64(42)
Expand Down
31 changes: 31 additions & 0 deletions mem/file_unix.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright © 2015 Steve Francia <spf@spf13.com>.
// Copyright 2013 tsuru authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// +build linux aix darwin openbsd freebsd netbsd dragonfly js

package mem

import "syscall"

func sysFromFileInfo(s *FileInfo) interface{} {
sys := &syscall.Stat_t{
Uid: uint32(s.uid),
Gid: uint32(s.gid),
Size: 42,
}
if !s.dir {
sys.Size = int64(len(s.data))
}
return sys
}
19 changes: 19 additions & 0 deletions mem/file_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Copyright © 2015 Steve Francia <spf@spf13.com>.
// Copyright 2013 tsuru authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// +build windows

package mem

func sysFromFileInfo(s *FileInfo) interface{} { return nil }

0 comments on commit 7c60862

Please sign in to comment.