os.go (2927B)
1 // Copyright © 2014 Steve Francia <spf@spf13.com>. 2 // Copyright 2013 tsuru authors. All rights reserved. 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package afero 16 17 import ( 18 "os" 19 "time" 20 ) 21 22 var _ Lstater = (*OsFs)(nil) 23 24 // OsFs is a Fs implementation that uses functions provided by the os package. 25 // 26 // For details in any method, check the documentation of the os package 27 // (http://golang.org/pkg/os/). 28 type OsFs struct{} 29 30 func NewOsFs() Fs { 31 return &OsFs{} 32 } 33 34 func (OsFs) Name() string { return "OsFs" } 35 36 func (OsFs) Create(name string) (File, error) { 37 f, e := os.Create(name) 38 if f == nil { 39 // while this looks strange, we need to return a bare nil (of type nil) not 40 // a nil value of type *os.File or nil won't be nil 41 return nil, e 42 } 43 return f, e 44 } 45 46 func (OsFs) Mkdir(name string, perm os.FileMode) error { 47 return os.Mkdir(name, perm) 48 } 49 50 func (OsFs) MkdirAll(path string, perm os.FileMode) error { 51 return os.MkdirAll(path, perm) 52 } 53 54 func (OsFs) Open(name string) (File, error) { 55 f, e := os.Open(name) 56 if f == nil { 57 // while this looks strange, we need to return a bare nil (of type nil) not 58 // a nil value of type *os.File or nil won't be nil 59 return nil, e 60 } 61 return f, e 62 } 63 64 func (OsFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) { 65 f, e := os.OpenFile(name, flag, perm) 66 if f == nil { 67 // while this looks strange, we need to return a bare nil (of type nil) not 68 // a nil value of type *os.File or nil won't be nil 69 return nil, e 70 } 71 return f, e 72 } 73 74 func (OsFs) Remove(name string) error { 75 return os.Remove(name) 76 } 77 78 func (OsFs) RemoveAll(path string) error { 79 return os.RemoveAll(path) 80 } 81 82 func (OsFs) Rename(oldname, newname string) error { 83 return os.Rename(oldname, newname) 84 } 85 86 func (OsFs) Stat(name string) (os.FileInfo, error) { 87 return os.Stat(name) 88 } 89 90 func (OsFs) Chmod(name string, mode os.FileMode) error { 91 return os.Chmod(name, mode) 92 } 93 94 func (OsFs) Chown(name string, uid, gid int) error { 95 return os.Chown(name, uid, gid) 96 } 97 98 func (OsFs) Chtimes(name string, atime time.Time, mtime time.Time) error { 99 return os.Chtimes(name, atime, mtime) 100 } 101 102 func (OsFs) LstatIfPossible(name string) (os.FileInfo, bool, error) { 103 fi, err := os.Lstat(name) 104 return fi, true, err 105 } 106 107 func (OsFs) SymlinkIfPossible(oldname, newname string) error { 108 return os.Symlink(oldname, newname) 109 } 110 111 func (OsFs) ReadlinkIfPossible(name string) (string, error) { 112 return os.Readlink(name) 113 }