From 39b901e6fde673d0635a6910764a23dacdcccbd2 Mon Sep 17 00:00:00 2001 From: CapCreeperGR Date: Thu, 16 May 2024 22:05:03 +0300 Subject: [PATCH] Added PARTITION_LABEL bash variable --- main.go | 3 +++ utils.go | 24 ++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index b747089..f46f484 100644 --- a/main.go +++ b/main.go @@ -193,6 +193,9 @@ func SetupFetchEnv() []string { for i, part := range partitions { env["PARTITION"+strconv.Itoa(i+1)+"_DEVICE"] = part.Device env["PARTITION"+strconv.Itoa(i+1)+"_MOUNTPOINT"] = part.MountPoint + if part.Label != "" { + env["PARTITION"+strconv.Itoa(i+1)+"_LABEL"] = part.Label + } env["PARTITION"+strconv.Itoa(i+1)+"_TOTAL_SIZE"] = FormatBytes(part.TotalSize) env["PARTITION"+strconv.Itoa(i+1)+"_USED_SIZE"] = FormatBytes(part.UsedSize) env["PARTITION"+strconv.Itoa(i+1)+"_FREE_SIZE"] = FormatBytes(part.FreeSize) diff --git a/utils.go b/utils.go index b73870b..7ccff00 100644 --- a/utils.go +++ b/utils.go @@ -323,23 +323,39 @@ func getMonitorResolution() []string { type partition struct { Device string MountPoint string + Label string TotalSize uint64 UsedSize uint64 FreeSize uint64 } func getMountedPartitions() []partition { - entries, err := os.ReadDir("/dev/disk/by-partuuid") + partuuids, err := os.ReadDir("/dev/disk/by-partuuid") if err != nil { return nil } + partlabels, err := os.ReadDir("/dev/disk/by-partlabel") + if err != nil { + return nil + } + labels := make(map[string]string) + for _, entry := range partlabels { + link, err := filepath.EvalSymlinks(filepath.Join("/dev/disk/by-partlabel/", entry.Name())) + if err != nil { + continue + } + labels[link] = entry.Name() + } + bytes, err := os.ReadFile("/proc/mounts") if err != nil { return nil } + mountsRaw := strings.Split(string(bytes), "\n") mounts := make(map[string]string) + for i := 0; i < len(mountsRaw); i++ { split := strings.Split(mountsRaw[i], " ") if len(split) <= 2 { @@ -349,7 +365,7 @@ func getMountedPartitions() []partition { } var partitions []partition - for _, entry := range entries { + for _, entry := range partuuids { link, err := filepath.EvalSymlinks(filepath.Join("/dev/disk/by-partuuid/", entry.Name())) if err != nil { continue @@ -360,10 +376,14 @@ func getMountedPartitions() []partition { p := partition{ link, mounts[link], + "", 0, 0, 0, } + if value, ok := labels[link]; ok { + p.Label = value + } buf := new(syscall.Statfs_t) err = syscall.Statfs(p.MountPoint, buf) if err != nil {