Skip to content

Commit e0f7991

Browse files
committed
changes
1 parent c1960c2 commit e0f7991

1 file changed

Lines changed: 25 additions & 9 deletions

File tree

src/internal/service/array/status.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@ import (
44
"bufio"
55
"fmt"
66
"os"
7+
"strconv"
78
"strings"
89

910
"raidman/src/internal/domain"
1011
)
1112

1213
func GetArrayStatus() (*domain.ArrayStatus, error) {
14+
return getArrayStatusWithPaths("/var/local/emhttp/var.ini", "/var/local/emhttp/disks.ini", "/var/local/emhttp/devs.ini")
15+
}
16+
17+
func getArrayStatusWithPaths(varIniPath, disksIniPath, devsIniPath string) (*domain.ArrayStatus, error) {
1318
// 1. Read /var/local/emhttp/var.ini for Global Status
14-
varIniPath := "/var/local/emhttp/var.ini"
1519
if _, err := os.Stat(varIniPath); os.IsNotExist(err) {
1620
// Fallback for dev/testing
1721
return &domain.ArrayStatus{
@@ -62,13 +66,27 @@ func GetArrayStatus() (*domain.ArrayStatus, error) {
6266
var total, pos, errs, dur int64
6367
var dTime, dBlocks int64
6468

65-
fmt.Sscanf(varMap["mdResyncSize"], "%d", &total) // Use mdResyncSize for total
66-
fmt.Sscanf(varMap["mdResyncPos"], "%d", &pos)
67-
fmt.Sscanf(varMap["mdResyncCorr"], "%d", &errs)
68-
fmt.Sscanf(varMap["mdResyncDt"], "%d", &dur)
69+
// Helper for robust parsing
70+
parseInt := func(key string) int64 {
71+
val, ok := varMap[key]
72+
if !ok || val == "" {
73+
return 0
74+
}
75+
// Plain integer parsing
76+
i, err := strconv.ParseInt(val, 10, 64)
77+
if err != nil {
78+
return 0
79+
}
80+
return i
81+
}
82+
83+
total = parseInt("mdResyncSize")
84+
pos = parseInt("mdResyncPos")
85+
errs = parseInt("mdResyncCorr")
86+
dur = parseInt("mdResyncDt")
6987
// For speed calc
70-
fmt.Sscanf(varMap["mdResyncDt"], "%d", &dTime)
71-
fmt.Sscanf(varMap["mdResyncDb"], "%d", &dBlocks)
88+
dTime = parseInt("mdResyncDt")
89+
dBlocks = parseInt("mdResyncDb")
7290

7391
status.ParityCheckStatus.Total = total
7492
status.ParityCheckStatus.Pos = pos
@@ -201,7 +219,6 @@ func GetArrayStatus() (*domain.ArrayStatus, error) {
201219
}
202220

203221
// 2. Read /var/local/emhttp/disks.ini for Disk Details
204-
disksIniPath := "/var/local/emhttp/disks.ini"
205222
disksMap, err := parseIniSections(disksIniPath)
206223
if err == nil {
207224
for section, data := range disksMap {
@@ -247,7 +264,6 @@ func GetArrayStatus() (*domain.ArrayStatus, error) {
247264
}
248265

249266
// 3. Read /var/local/emhttp/devs.ini for Unassigned Devices
250-
devsIniPath := "/var/local/emhttp/devs.ini"
251267
devsMap, err := parseIniSections(devsIniPath)
252268
if err == nil {
253269
for section, data := range devsMap {

0 commit comments

Comments
 (0)