feat: tested

This commit is contained in:
2024-09-01 23:48:01 +08:00
parent eeca2decb2
commit 987e750d5e
3 changed files with 25 additions and 42 deletions

View File

@@ -6,7 +6,6 @@ import (
"encoding/binary"
"encoding/json"
"errors"
"fmt"
"io"
"io/fs"
"math"
@@ -114,6 +113,20 @@ func NewEncFile(name string, file *os.File, encFs *EncFs, isCreate bool) (*EncFi
}
isDir := fileInfo.IsDir()
var encFileMeta *EncFileMeta = nil
fileState, err := os.Stat(name)
if err != nil {
if os.IsNotExist(err) {
isCreate = true
} else {
return nil, err
}
} else {
if !fileState.IsDir() && fileState.Size() == 0 {
isCreate = true
}
}
if !isDir {
if isCreate {
encFileMeta, err = openOrNewEncFileMeta(name)
@@ -193,14 +206,9 @@ func (f *EncFile) Seek(offset int64, whence int) (int64, error) {
return 0, checkIsFileErr
}
// I do not understand whence
if whence != 0 {
return 0, fmt.Errorf("not supported whence: %d", whence)
}
ret, err := f.file.Seek(offset, whence)
if err == nil {
f.filePos = offset
f.filePos = ret
}
return ret, err
}

View File

@@ -56,28 +56,30 @@ func (encFs *EncFs) Open(name string) (afero.File, error) {
return convertOsFileToEncFile(name, f, e, encFs, false)
}
func (*EncFs) OpenFile(name string, flag int, perm os.FileMode) (afero.File, error) {
func (encFs *EncFs) OpenFile(name string, flag int, perm os.FileMode) (afero.File, error) {
f, e := os.OpenFile(name, flag, perm)
if f == nil {
// while this looks strange, we need to return a bare nil (of type nil) not
// a nil value of type *os.File or nil won't be nil
return nil, e
}
return f, e
return convertOsFileToEncFile(name, f, e, encFs, false)
}
func (*EncFs) Remove(name string) error {
// TODO remove enc file meta
encFileMetaName := name + EncFileExt
_ = os.Remove(encFileMetaName)
return os.Remove(name)
}
func (*EncFs) RemoveAll(path string) error {
// TODO remove enc file meta
return os.RemoveAll(path)
}
func (*EncFs) Rename(oldname, newname string) error {
// TODO rename enc file meta
oldEncFileMetaName := oldname + EncFileExt
newEncFileMetaName := newname + EncFileExt
_ = os.Rename(oldEncFileMetaName, newEncFileMetaName)
return os.Rename(oldname, newname)
}

33
main.go
View File

@@ -10,38 +10,9 @@ import (
func main() {
key := []byte{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
}
fmt.Println(hex.EncodeToString(key))
encFs := encfs.NewEncFs(key)
encFs2 := encfs.NewEncFs(nil)
// -----------------------------------------------------------------------------------------------------------------------------------
encFile1, err := encFs2.Create("test1")
if err != nil {
fmt.Println(err)
return
}
encFile1.Write([]byte("hello world"))
encFile1.Write([]byte("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"))
encFile1.WriteAt([]byte("TEST"), 10)
encFile1.Write([]byte("------"))
encFile1.Close()
encFile2, err := encFs2.Create("test2")
if err != nil {
fmt.Println(err)
return
}
encFile2.Write([]byte("hello world"))
seekI, err := encFile2.Seek(2, 0)
fmt.Println(seekI, ", ", err)
encFile2.Write([]byte("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"))
encFile2.Write([]byte("------"))
encFile2.Close()
// -----------------------------------------------------------------------------------------------------------------------------------
func() {
encFile, err := encFs.Create("test")
@@ -80,4 +51,6 @@ func main() {
fmt.Println(readLen, err)
fmt.Println(string(buff))
}()
encFs.Remove("test")
}