From dfd827ce4f93079f935db9aff352617a4f71aa44 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys <hanwen@google.com> Date: Wed, 8 Feb 2012 14:02:02 -0200 Subject: [PATCH] Fixes for weekly 2012.02.07: stop using os.FileInfo. --- fuse/attr.go | 10 ++-------- fuse/loopback_test.go | 37 +++++++++++++++++-------------------- fuse/misc_test.go | 7 +++---- fuse/owner_test.go | 19 +++++++++++++------ 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/fuse/attr.go b/fuse/attr.go index eb9574a..26c58be 100644 --- a/fuse/attr.go +++ b/fuse/attr.go @@ -134,12 +134,6 @@ func (a *Attr) FromStat(s *syscall.Stat_t) { a.Blksize = uint32(s.Blksize) } -func (a *Attr) FromFileInfo(fi os.FileInfo) { - stat := fi.(*os.FileStat) - sys := stat.Sys.(*syscall.Stat_t) - a.FromStat(sys) -} - func (a *Attr) ChangeTime() time.Time { return time.Unix(int64(a.Ctime), int64(a.Ctimensec)) } @@ -153,9 +147,9 @@ func (a *Attr) ModTime() time.Time { } func ToStatT(f os.FileInfo) *syscall.Stat_t { - s := f.(*os.FileStat).Sys + s, _ := f.Sys().(*syscall.Stat_t) if s != nil { - return s.(*syscall.Stat_t) + return s } return nil } diff --git a/fuse/loopback_test.go b/fuse/loopback_test.go index a943ae2..b9c73ee 100644 --- a/fuse/loopback_test.go +++ b/fuse/loopback_test.go @@ -126,11 +126,12 @@ func TestTouch(t *testing.T) { CheckSuccess(err) err = os.Chtimes(ts.mountFile, time.Unix(42, 0), time.Unix(43, 0)) CheckSuccess(err) - fi, err := os.Lstat(ts.mountFile) + + var stat syscall.Stat_t + err = syscall.Lstat(ts.mountFile, &stat) CheckSuccess(err) - stat := fi.(*os.FileStat).Sys.(*syscall.Stat_t) if stat.Atim.Sec != 42 || stat.Mtim.Sec != 43 { - t.Errorf("Got wrong timestamps %v", fi) + t.Errorf("Got wrong timestamps %v", stat) } } @@ -242,18 +243,17 @@ func TestLinkCreate(t *testing.T) { err = os.Link(me.mountFile, mountSubfile) CheckSuccess(err) - subStat, err := os.Lstat(mountSubfile) + var subStat, stat syscall.Stat_t + err = syscall.Lstat(mountSubfile, &subStat) CheckSuccess(err) - stat, err := os.Lstat(me.mountFile) + err = syscall.Lstat(me.mountFile, &stat) CheckSuccess(err) - subfi := ToStatT(subStat) - fi := ToStatT(stat) - if fi.Nlink != 2 { - t.Errorf("Expect 2 links: %v", fi) + if stat.Nlink != 2 { + t.Errorf("Expect 2 links: %v", stat) } - if fi.Ino != subfi.Ino { - t.Errorf("Link succeeded, but inode numbers different: %v %v", fi.Ino, subfi.Ino) + if stat.Ino != subStat.Ino { + t.Errorf("Link succeeded, but inode numbers different: %v %v", stat.Ino, subStat.Ino) } readback, err := ioutil.ReadFile(mountSubfile) CheckSuccess(err) @@ -282,13 +282,12 @@ func TestLinkExisting(t *testing.T) { err = os.Link(me.orig+"/file1", me.orig+"/file2") CheckSuccess(err) - f1, err := os.Lstat(me.mnt + "/file1") + var s1, s2 syscall.Stat_t + err = syscall.Lstat(me.mnt + "/file1", &s1) CheckSuccess(err) - f2, err := os.Lstat(me.mnt + "/file2") + err = syscall.Lstat(me.mnt + "/file2", &s2) CheckSuccess(err) - s1 := ToStatT(f1) - s2 := ToStatT(f2) if s1.Ino != s2.Ino { t.Errorf("linked files should have identical inodes %v %v", s1.Ino, s2.Ino) } @@ -313,16 +312,14 @@ func TestLinkForget(t *testing.T) { err = os.Link(me.orig+"/file1", me.orig+"/file2") CheckSuccess(err) - f1, err := os.Lstat(me.mnt + "/file1") + var s1, s2 syscall.Stat_t + err = syscall.Lstat(me.mnt + "/file1", &s1) CheckSuccess(err) me.pathFs.ForgetClientInodes() - f2, err := os.Lstat(me.mnt + "/file2") + err = syscall.Lstat(me.mnt + "/file2", &s2) CheckSuccess(err) - - s1 := ToStatT(f1) - s2 := ToStatT(f2) if s1.Ino == s2.Ino { t.Error("After forget, we should not export links") } diff --git a/fuse/misc_test.go b/fuse/misc_test.go index a476883..f439ec4 100644 --- a/fuse/misc_test.go +++ b/fuse/misc_test.go @@ -35,17 +35,16 @@ func TestLinkAt(t *testing.T) { t.Fatalf("Linkat %d", e) } - f1, err := os.Lstat(dir + "/a") + var s1, s2 syscall.Stat_t + err := syscall.Lstat(dir + "/a", &s1) if err != nil { t.Fatalf("Lstat a: %v", err) } - f2, err := os.Lstat(dir + "/b") + err = syscall.Lstat(dir + "/b", &s2) if err != nil { t.Fatalf("Lstat b: %v", err) } - s1 := ToStatT(f1) - s2 := ToStatT(f2) if s1.Ino != s2.Ino { t.Fatal("Ino mismatch", s1, s2) } diff --git a/fuse/owner_test.go b/fuse/owner_test.go index a535863..0f9bcc2 100644 --- a/fuse/owner_test.go +++ b/fuse/owner_test.go @@ -3,6 +3,7 @@ package fuse import ( "io/ioutil" "os" + "syscall" "testing" ) @@ -43,10 +44,12 @@ func setupOwnerTest(opts *FileSystemOptions) (workdir string, cleanup func()) { func TestOwnerDefault(t *testing.T) { wd, cleanup := setupOwnerTest(NewFileSystemOptions()) defer cleanup() - fi, err := os.Lstat(wd + "/foo") + + var stat syscall.Stat_t + err := syscall.Lstat(wd + "/foo", &stat) CheckSuccess(err) - if int(ToStatT(fi).Uid) != os.Getuid() || int(ToStatT(fi).Gid) != os.Getgid() { + if int(stat.Uid) != os.Getuid() || int(stat.Gid) != os.Getgid() { t.Fatal("Should use current uid for mount") } } @@ -54,10 +57,12 @@ func TestOwnerDefault(t *testing.T) { func TestOwnerRoot(t *testing.T) { wd, cleanup := setupOwnerTest(&FileSystemOptions{}) defer cleanup() - fi, err := os.Lstat(wd + "/foo") + + var st syscall.Stat_t + err := syscall.Lstat(wd + "/foo", &st) CheckSuccess(err) - if ToStatT(fi).Uid != _RANDOM_OWNER || ToStatT(fi).Gid != _RANDOM_OWNER { + if st.Uid != _RANDOM_OWNER || st.Gid != _RANDOM_OWNER { t.Fatal("Should use FS owner uid") } } @@ -65,10 +70,12 @@ func TestOwnerRoot(t *testing.T) { func TestOwnerOverride(t *testing.T) { wd, cleanup := setupOwnerTest(&FileSystemOptions{Owner: &Owner{42, 43}}) defer cleanup() - fi, err := os.Lstat(wd + "/foo") + + var stat syscall.Stat_t + err := syscall.Lstat(wd + "/foo", &stat) CheckSuccess(err) - if ToStatT(fi).Uid != 42 || ToStatT(fi).Gid != 43 { + if stat.Uid != 42 || stat.Gid != 43 { t.Fatal("Should use current uid for mount") } } -- 2.30.9