|
@@ -3,6 +3,7 @@ package main
|
|
|
import (
|
|
|
"fmt"
|
|
|
"os/exec"
|
|
|
+ "strconv"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
@@ -22,38 +23,8 @@ func getDiskUsage(path string) (uint64, error) {
|
|
|
if len(fields) < 3 {
|
|
|
return 0, fmt.Errorf("unexpected output format from df command")
|
|
|
}
|
|
|
-
|
|
|
- used := fields[2]
|
|
|
- usedBytes, err := parseSize(used)
|
|
|
- if err != nil {
|
|
|
- return 0, err
|
|
|
- }
|
|
|
-
|
|
|
- return usedBytes, nil
|
|
|
-}
|
|
|
-
|
|
|
-func parseSize(sizeStr string) (uint64, error) {
|
|
|
- var size uint64
|
|
|
- unit := sizeStr[len(sizeStr)-1]
|
|
|
- value := sizeStr[:len(sizeStr)-1]
|
|
|
-
|
|
|
- _, err := fmt.Sscan(value, &size)
|
|
|
- if err != nil {
|
|
|
- return 0, err
|
|
|
- }
|
|
|
-
|
|
|
- switch unit {
|
|
|
- case 'B':
|
|
|
- return size, nil
|
|
|
- case 'K':
|
|
|
- return size * 1024, nil
|
|
|
- case 'M':
|
|
|
- return size * 1024 * 1024, nil
|
|
|
- case 'G':
|
|
|
- return size * 1024 * 1024 * 1024, nil
|
|
|
- default:
|
|
|
- return 0, fmt.Errorf("unknown unit: %c", unit)
|
|
|
- }
|
|
|
+ parseUint, _ := strconv.ParseUint(fields[2], 10, 64)
|
|
|
+ return parseUint, nil
|
|
|
}
|
|
|
|
|
|
func main() {
|