github.com/avfs/avfs@v0.33.1-0.20240303173310-c6ba67c33eb7/vfs/rofs/rofs_cfg.go (about) 1 // 2 // Copyright 2020 The AVFS authors 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 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 package rofs 18 19 import ( 20 "github.com/avfs/avfs" 21 ) 22 23 // New creates a new readonly file system (RoFS) from a base file system. 24 func New(baseFS avfs.VFS) *RoFS { 25 vfs := &RoFS{ 26 baseFS: baseFS, 27 errOpNotPermitted: avfs.ErrOpNotPermitted, 28 errPermDenied: avfs.ErrPermDenied, 29 } 30 31 _ = vfs.SetFeatures(baseFS.Features()&^avfs.FeatIdentityMgr | avfs.FeatReadOnly) 32 33 if baseFS.OSType() == avfs.OsWindows { 34 vfs.errOpNotPermitted = avfs.ErrWinNotSupported 35 vfs.errPermDenied = avfs.ErrWinAccessDenied 36 } 37 38 return vfs 39 } 40 41 // Name returns the name of the fileSystem. 42 func (vfs *RoFS) Name() string { 43 return vfs.baseFS.Name() 44 } 45 46 // OSType returns the operating system type of the file system. 47 func (vfs *RoFS) OSType() avfs.OSType { 48 return vfs.baseFS.OSType() 49 } 50 51 // Type returns the type of the fileSystem or Identity manager. 52 func (*RoFS) Type() string { 53 return "RoFS" 54 }