]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/spf13/afero/readonlyfs.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / spf13 / afero / readonlyfs.go
1 package afero
2
3 import (
4 "os"
5 "syscall"
6 "time"
7 )
8
9 var _ Lstater = (*ReadOnlyFs)(nil)
10
11 type ReadOnlyFs struct {
12 source Fs
13 }
14
15 func NewReadOnlyFs(source Fs) Fs {
16 return &ReadOnlyFs{source: source}
17 }
18
19 func (r *ReadOnlyFs) ReadDir(name string) ([]os.FileInfo, error) {
20 return ReadDir(r.source, name)
21 }
22
23 func (r *ReadOnlyFs) Chtimes(n string, a, m time.Time) error {
24 return syscall.EPERM
25 }
26
27 func (r *ReadOnlyFs) Chmod(n string, m os.FileMode) error {
28 return syscall.EPERM
29 }
30
31 func (r *ReadOnlyFs) Name() string {
32 return "ReadOnlyFilter"
33 }
34
35 func (r *ReadOnlyFs) Stat(name string) (os.FileInfo, error) {
36 return r.source.Stat(name)
37 }
38
39 func (r *ReadOnlyFs) LstatIfPossible(name string) (os.FileInfo, bool, error) {
40 if lsf, ok := r.source.(Lstater); ok {
41 return lsf.LstatIfPossible(name)
42 }
43 fi, err := r.Stat(name)
44 return fi, false, err
45 }
46
47 func (r *ReadOnlyFs) Rename(o, n string) error {
48 return syscall.EPERM
49 }
50
51 func (r *ReadOnlyFs) RemoveAll(p string) error {
52 return syscall.EPERM
53 }
54
55 func (r *ReadOnlyFs) Remove(n string) error {
56 return syscall.EPERM
57 }
58
59 func (r *ReadOnlyFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {
60 if flag&(os.O_WRONLY|syscall.O_RDWR|os.O_APPEND|os.O_CREATE|os.O_TRUNC) != 0 {
61 return nil, syscall.EPERM
62 }
63 return r.source.OpenFile(name, flag, perm)
64 }
65
66 func (r *ReadOnlyFs) Open(n string) (File, error) {
67 return r.source.Open(n)
68 }
69
70 func (r *ReadOnlyFs) Mkdir(n string, p os.FileMode) error {
71 return syscall.EPERM
72 }
73
74 func (r *ReadOnlyFs) MkdirAll(n string, p os.FileMode) error {
75 return syscall.EPERM
76 }
77
78 func (r *ReadOnlyFs) Create(n string) (File, error) {
79 return nil, syscall.EPERM
80 }