func (fs *unionFsFile) GetAttr(out *fuse.Attr) fuse.Status { code := fs.File.GetAttr(out) if code.Ok() { out.Mode |= 0200 } return code }
func (n *memNode) GetAttr(out *fuse.Attr, file fuse.File, context *fuse.Context) fuse.Status { if n.Inode().IsDir() { out.Mode = fuse.S_IFDIR | 0777 return fuse.OK } n.file.Stat(out) return fuse.OK }
func (fs *UnionFs) Create(name string, flags uint32, mode uint32, context *fuse.Context) (fuseFile fuse.File, code fuse.Status) { writable := fs.fileSystems[0] code = fs.promoteDirsTo(name) if code != fuse.OK { return nil, code } fuseFile, code = writable.Create(name, flags, mode, context) if code.Ok() { fuseFile = fs.newUnionFsFile(fuseFile, 0) fs.removeDeletion(name) now := time.Now() a := fuse.Attr{ Mode: fuse.S_IFREG | mode, } a.SetTimes(nil, &now, &now) fs.branchCache.Set(name, branchResult{&a, fuse.OK, 0}) } return fuseFile, code }
func HeaderToFileInfo(out *fuse.Attr, h *tar.Header) { out.Mode = uint32(h.Mode) out.Size = uint64(h.Size) out.Uid = uint32(h.Uid) out.Gid = uint32(h.Gid) out.SetTimes(&h.AccessTime, &h.ModTime, &h.ChangeTime) }
func (f *ZipFile) Stat(out *fuse.Attr) { // TODO - do something intelligent with timestamps. out.Mode = fuse.S_IFREG | 0444 out.Size = uint64(f.File.UncompressedSize) }
func (f *TarFile) Stat(out *fuse.Attr) { HeaderToFileInfo(out, &f.Header) out.Mode |= syscall.S_IFREG }