From 64540187d880ba52579c65d20c1d29a9a44139a6 Mon Sep 17 00:00:00 2001 From: t_max <1172915550@qq.com> Date: Mon, 2 Sep 2024 17:35:30 +0800 Subject: [PATCH 1/4] fix: get disk size for macOS and other arch --- space.go | 4 ++-- space_bsd.go | 19 +++++++++++++++++++ space_netbsd.go | 17 +++++++++++++++++ space_openbsd.go | 17 +++++++++++++++++ 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 space_bsd.go create mode 100644 space_netbsd.go create mode 100644 space_openbsd.go diff --git a/space.go b/space.go index f7b0d17..7ab3e73 100644 --- a/space.go +++ b/space.go @@ -1,5 +1,5 @@ -//go:build !windows -// +build !windows +//go:build linux && !s390x && !netbsd +// +build linux,!s390x,!netbsd package rotatelogs diff --git a/space_bsd.go b/space_bsd.go new file mode 100644 index 0000000..3ef8bd9 --- /dev/null +++ b/space_bsd.go @@ -0,0 +1,19 @@ +//go:build darwin || dragonfly || s390x +// +build darwin dragonfly s390x + +package rotatelogs + +import ( + "golang.org/x/sys/unix" +) + +func GetDiskSize(dir string) (total uint64, avail uint64, err error) { + fs := unix.Statfs_t{} + err = unix.Statfs(dir, &fs) + if err != nil { + return 0, 0, err + } + avail = fs.Bavail * uint64(fs.Bsize) + total = fs.Blocks * uint64(fs.Bsize) + return total, avail, nil +} diff --git a/space_netbsd.go b/space_netbsd.go new file mode 100644 index 0000000..a4f5f03 --- /dev/null +++ b/space_netbsd.go @@ -0,0 +1,17 @@ +//go:build netbsd +// +build netbsd + +package rotatelogs + +import "golang.org/x/sys/unix" + +func GetDiskSize(dir string) (total uint64, avail uint64, err error) { + fs := unix.Statvfs_t{} + err = unix.Statvfs(dir, &fs) + if err != nil { + return 0, 0, err + } + avail = fs.Bavail * fs.Frsize + total = fs.Blocks * fs.Frsize + return total, avail, nil +} diff --git a/space_openbsd.go b/space_openbsd.go new file mode 100644 index 0000000..085216e --- /dev/null +++ b/space_openbsd.go @@ -0,0 +1,17 @@ +//go:build openbsd +// +build openbsd + +package rotatelogs + +import "golang.org/x/sys/unix" + +func GetDiskSize(dir string) (total uint64, avail uint64, err error) { + fs := unix.Statfs_t{} + err = unix.Statfs(dir, &fs) + if err != nil { + return 0, 0, err + } + avail = fs.F_blocks * uint64(fs.F_bsize) + total = uint64(fs.F_bavail) * uint64(fs.F_bsize) + return total, avail, nil +} From 7939d381a3ad1b054044179ae2dc323db3303220 Mon Sep 17 00:00:00 2001 From: t_max <1172915550@qq.com> Date: Mon, 2 Sep 2024 17:44:35 +0800 Subject: [PATCH 2/4] fix: get disk size on openbsd --- space_openbsd.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/space_openbsd.go b/space_openbsd.go index 085216e..7fec577 100644 --- a/space_openbsd.go +++ b/space_openbsd.go @@ -11,7 +11,7 @@ func GetDiskSize(dir string) (total uint64, avail uint64, err error) { if err != nil { return 0, 0, err } - avail = fs.F_blocks * uint64(fs.F_bsize) - total = uint64(fs.F_bavail) * uint64(fs.F_bsize) + avail = uint64(fs.F_bavail) * uint64(fs.F_bsize) + total = fs.F_blocks * uint64(fs.F_bsize) return total, avail, nil } From 340552306d225c820eb20b80bef5ed3ff46210b1 Mon Sep 17 00:00:00 2001 From: t_max <1172915550@qq.com> Date: Mon, 2 Sep 2024 17:46:31 +0800 Subject: [PATCH 3/4] fix: get disk size on dragonfly --- space_bsd.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/space_bsd.go b/space_bsd.go index 3ef8bd9..aeb3175 100644 --- a/space_bsd.go +++ b/space_bsd.go @@ -13,7 +13,7 @@ func GetDiskSize(dir string) (total uint64, avail uint64, err error) { if err != nil { return 0, 0, err } - avail = fs.Bavail * uint64(fs.Bsize) - total = fs.Blocks * uint64(fs.Bsize) + avail = uint64(fs.Bavail) * uint64(fs.Bsize) + total = uint64(fs.Blocks) * uint64(fs.Bsize) return total, avail, nil } From 3e13ddfe45ee6ef12ea5e36e9e8599eb9b55915f Mon Sep 17 00:00:00 2001 From: t_max <1172915550@qq.com> Date: Mon, 2 Sep 2024 17:48:06 +0800 Subject: [PATCH 4/4] fix: get disk size on linux --- space.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/space.go b/space.go index 7ab3e73..4ae0928 100644 --- a/space.go +++ b/space.go @@ -13,7 +13,7 @@ func GetDiskSize(dir string) (total uint64, avail uint64, err error) { if err != nil { return 0, 0, err } - avail = fs.Bavail * uint64(fs.Frsize) - total = fs.Blocks * uint64(fs.Frsize) + avail = uint64(fs.Bavail) * uint64(fs.Frsize) + total = uint64(fs.Blocks) * uint64(fs.Frsize) return total, avail, nil }