From 654a0b64c35d6f648c6ae1dc81214234e840e1d3 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 9 May 2015 13:59:38 +0900 Subject: [PATCH] Work in progress --- database.go | 30 ++++++++++++++++++++++-- table.go | 53 ------------------------------------------- node.go => version.go | 21 +++++++++-------- 3 files changed, 40 insertions(+), 64 deletions(-) delete mode 100644 table.go rename node.go => version.go (84%) diff --git a/database.go b/database.go index 8662bda..f0b89a9 100644 --- a/database.go +++ b/database.go @@ -22,13 +22,39 @@ package main +import ( + "io/ioutil" + "os" +) + type Database struct { } -func (*Database) load(dir string) { +func (this *Database) load(dir string) error { + dirs, err := this.scan(dir) + if err != nil { + return err + } + return err } -func (*Database) save(dir string) { +func (this *Database) scan(dir string) ([]os.FileInfo, error) { + nodes, err := ioutil.ReadDir(dir) + if err != nil { + return nil, err + } + + var dirs []os.FileInfo + for _, node := range nodes { + if node.IsDir() { + dirs = append(dirs, node) + } + } + + return dirs, nil +} + +func (this *Database) save(dir string) { } diff --git a/table.go b/table.go deleted file mode 100644 index a51a171..0000000 --- a/table.go +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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 - -import ( - "bytes" - "encoding/binary" - "io/ioutil" -) - -type NodeTable struct { - Magic uint16 - Nodes []Node -} - -func NewNodeTable() *NodeTable { - return &NodeTable{} -} - -func (this *NodeTable) load(fname string) error { - data, err := ioutil.ReadFile(fname) - if err != nil { - return err - } - - reader := bytes.NewReader(data) - - if err := binary.Read(reader, binary.BigEndian, this); err != nil { - return err - } - - return nil -} diff --git a/node.go b/version.go similarity index 84% rename from node.go rename to version.go index 79ea19b..ce1ef47 100644 --- a/node.go +++ b/version.go @@ -22,13 +22,16 @@ package main -type Node struct { - Magic uint8 - Size uint64 - Atime int64 - Mtime int64 - Ctime int64 - Mode uint32 - Uid uint32 - Gid uint32 +import ( + "time" +) + +type Version struct { + root string + parent *Version + version time.Time +} + +func (this *Version) NewVersion(root string, parent *Version) *Version { + return &Version{root: root, parent: parent} }