mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-09-19 20:26:26 +08:00

* feat(style): add driver icons and disk usage * feat(driver): add disk usage for 115_open, 123_open, aliyundrive_open and baidu_netdisk * feat(driver): add disk usage for crypt, sftp and smb * chore: clean unused variable * feat(driver): add disk usage for cloudreve_v4 Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> * fix(local): disk label check when getting disk usage * feat(style): return details when accessing the manage page --------- Signed-off-by: MadDogOwner <xiaoran@xrgzs.top> Co-authored-by: MadDogOwner <xiaoran@xrgzs.top>
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
//go:build windows
|
|
|
|
package local
|
|
|
|
import (
|
|
"errors"
|
|
"io/fs"
|
|
"path/filepath"
|
|
"syscall"
|
|
|
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
func isHidden(f fs.FileInfo, fullPath string) bool {
|
|
filePath := filepath.Join(fullPath, f.Name())
|
|
namePtr, err := syscall.UTF16PtrFromString(filePath)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
attrs, err := syscall.GetFileAttributes(namePtr)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return attrs&syscall.FILE_ATTRIBUTE_HIDDEN != 0
|
|
}
|
|
|
|
func getDiskUsage(path string) (model.DiskUsage, error) {
|
|
abs, err := filepath.Abs(path)
|
|
if err != nil {
|
|
return model.DiskUsage{}, err
|
|
}
|
|
root := filepath.VolumeName(abs)
|
|
if len(root) != 2 || root[1] != ':' {
|
|
return model.DiskUsage{}, errors.New("cannot get disk label")
|
|
}
|
|
var freeBytes, totalBytes, totalFreeBytes uint64
|
|
err = windows.GetDiskFreeSpaceEx(
|
|
windows.StringToUTF16Ptr(root),
|
|
&freeBytes,
|
|
&totalBytes,
|
|
&totalFreeBytes,
|
|
)
|
|
if err != nil {
|
|
return model.DiskUsage{}, err
|
|
}
|
|
return model.DiskUsage{
|
|
TotalSpace: totalBytes,
|
|
FreeSpace: freeBytes,
|
|
}, nil
|
|
}
|