From 463afa5216280f80fd7de905b1fbd41c59499249 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Fri, 29 May 2015 20:40:40 +0900 Subject: [PATCH] Cleanup --- dir.go | 4 ++-- node.go | 16 +++++++--------- node_group.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ version.go | 5 ++--- 4 files changed, 60 insertions(+), 14 deletions(-) create mode 100644 node_group.go diff --git a/dir.go b/dir.go index 291a4b6..0bd4e1a 100644 --- a/dir.go +++ b/dir.go @@ -58,7 +58,7 @@ func (this *versionedDir) createDir(name string) (*versionedDir, error) { return nil, err } - node, err := newVersionedNode(childPath, this.node.parent, this.node.ver) + node, err := newVersionedNode(childPath, this.node.ver) if err != nil { return nil, err } @@ -77,7 +77,7 @@ func (this *versionedDir) createFile(name string, flags int) (*versionedFile, er return nil, err } - node, err := newVersionedNode(childPath, this.node.parent, this.node.ver) + node, err := newVersionedNode(childPath, this.node.ver) if err != nil { return nil, err } diff --git a/node.go b/node.go index aaa6d9e..6a9aea9 100644 --- a/node.go +++ b/node.go @@ -34,26 +34,24 @@ import ( // type versionedNode struct { - path string - info os.FileInfo - parent *versionedNode - prev *versionedNode - ver *version + path string + info os.FileInfo + ver *version } type versionedNodeMap map[string]*versionedNode -func newVersionedNode(path string, parent *versionedNode, ver *version) (*versionedNode, error) { +func newVersionedNode(path string, ver *version) (*versionedNode, error) { info, err := os.Stat(ver.rebasePath(path)) if err != nil { return nil, err } - return newVersionedNodeStat(path, parent, ver, info), nil + return newVersionedNodeStat(path, ver, info), nil } -func newVersionedNodeStat(path string, parent *versionedNode, ver *version, info os.FileInfo) *versionedNode { - return &versionedNode{path, info, parent, nil, ver} +func newVersionedNodeStat(path string, ver *version, info os.FileInfo) *versionedNode { + return &versionedNode{path, info, ver} } func (this *versionedNode) setAttr(req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error { diff --git a/node_group.go b/node_group.go new file mode 100644 index 0000000..cfd2fde --- /dev/null +++ b/node_group.go @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2015 Alex Yatskov + * Author: Alex Yatskov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package main + +// +// versionNodeGroup +// + +type versionNodeGroup struct { + nodes []*versionedNode +} + +func (this *versionNodeGroup) latest() *versionedNode { + if length := len(this.nodes); length > 0 { + return this.nodes[length-1] + } + + return nil +} + +func (this *versionNodeGroup) version(path string, ver *version) error { + node, err := newVersionedNode(path, ver) + if err != nil { + return err + } + + this.nodes = append(this.nodes, node) + return nil +} diff --git a/version.go b/version.go index 2e820ae..4360f7f 100644 --- a/version.go +++ b/version.go @@ -88,7 +88,7 @@ func (this *version) scanNode(node *versionedNode) (versionedNodeMap, error) { for _, info := range infos { childName := info.Name() childPath := filepath.Join(node.path, childName) - ownNodes[childName] = newVersionedNodeStat(childPath, node, this, info) + ownNodes[childName] = newVersionedNodeStat(childPath, this, info) } } @@ -100,7 +100,6 @@ func (this *version) scanNode(node *versionedNode) (versionedNodeMap, error) { } for ownName, ownNode := range ownNodes { - ownNode.prev = baseNodes[ownName] baseNodes[ownName] = ownNode } @@ -130,7 +129,7 @@ func (this *version) buildVerDir(dir *versionedDir) error { } func (this *version) resolve() error { - node, err := newVersionedNode("/", nil, this) + node, err := newVersionedNode("/", this) if err != nil { return err }