mirror of https://github.com/spf13/afero.git
mem: add rudimentary FileInfo.Sys() implementation
This allows downstream users to act on file ownership. Signed-off-by: Dominik Menke <dom@digineo.de>
This commit is contained in:
parent
5c4385aa20
commit
ade8094005
|
@ -339,7 +339,7 @@ func (s *FileInfo) IsDir() bool {
|
||||||
defer s.Unlock()
|
defer s.Unlock()
|
||||||
return s.dir
|
return s.dir
|
||||||
}
|
}
|
||||||
func (s *FileInfo) Sys() interface{} { return nil }
|
|
||||||
func (s *FileInfo) Size() int64 {
|
func (s *FileInfo) Size() int64 {
|
||||||
if s.IsDir() {
|
if s.IsDir() {
|
||||||
return int64(42)
|
return int64(42)
|
||||||
|
@ -349,6 +349,12 @@ func (s *FileInfo) Size() int64 {
|
||||||
return int64(len(s.data))
|
return int64(len(s.data))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *FileInfo) Sys() interface{} {
|
||||||
|
s.Lock()
|
||||||
|
defer s.Unlock()
|
||||||
|
return sysFromFileInfo(s)
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrFileClosed = errors.New("File is closed")
|
ErrFileClosed = errors.New("File is closed")
|
||||||
ErrOutOfRange = errors.New("out of range")
|
ErrOutOfRange = errors.New("out of range")
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
//go:build !windows
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
//go:build windows
|
||||||
|
// +build windows
|
||||||
|
|
||||||
|
package mem
|
||||||
|
|
||||||
|
func sysFromFileInfo(s *FileInfo) interface{} { return nil }
|
Loading…
Reference in New Issue