Skip to content

Commit e3ff69a

Browse files
committed
Update go version
1 parent 5549223 commit e3ff69a

File tree

3 files changed

+39
-17
lines changed

3 files changed

+39
-17
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module github.com/mogren/grig
22

3-
go 1.17
3+
go 1.24

grig.go

+37-15
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"flag"
1414
"fmt"
1515
"github.com/mogren/grig/vose"
16-
"io/ioutil"
1716
"math/rand"
1817
"os"
1918
"strconv"
@@ -100,7 +99,7 @@ func main() {
10099
listLangs()
101100
os.Exit(0)
102101
}
103-
rand.Seed(time.Now().UnixNano())
102+
// rand.Seed is deprecated in Go 1.20+, random source is now auto-seeded
104103
dict := loadData(langFlag)
105104
if jsonFlag && nrLoopsFlag > 1 {
106105
fmt.Println("\"list\": [")
@@ -122,7 +121,7 @@ func main() {
122121

123122
func listLangs() {
124123
// for all dirs in data
125-
files, _ := ioutil.ReadDir("./data/")
124+
files, _ := os.ReadDir("./data/")
126125
for _, f := range files {
127126
if f.IsDir() && !strings.HasPrefix(f.Name(), ".") {
128127
if validateDir(f.Name()) {
@@ -136,14 +135,23 @@ func validateDir(iso string) bool {
136135
// Check for fnames, mnames, lnames, zipcodes and Streets
137136
srcFileNames := []string{"fnames.grig", "lnames.grig", "mnames.grig", "streets.grig", "zipcodes.grig"}
138137
valid := true
139-
filename := ""
138+
140139
for _, srcFile := range srcFileNames {
141-
filename = "./data/" + iso + "/" + srcFile
142-
if _, err := os.Stat(filename); os.IsNotExist(err) {
143-
if verbose {
144-
fmt.Println("Data file", srcFile, "missing for", iso)
140+
filePath := "./data/" + iso + "/" + srcFile
141+
_, err := os.Stat(filePath)
142+
if err != nil {
143+
if os.IsNotExist(err) {
144+
if verbose {
145+
fmt.Println("Data file", srcFile, "missing for", iso)
146+
}
147+
valid = false
148+
} else {
149+
// Handle other errors (permissions, etc.)
150+
if verbose {
151+
fmt.Printf("Error accessing %s: %v\n", filePath, err)
152+
}
153+
valid = false
145154
}
146-
valid = false
147155
}
148156
}
149157
return valid
@@ -175,6 +183,7 @@ func loadFile(iso string, srcFile string) RigFile {
175183
defer func(file *os.File) {
176184
err := file.Close()
177185
if err != nil {
186+
fmt.Println("Error closing file:", err)
178187
os.Exit(1)
179188
}
180189
}(file)
@@ -189,22 +198,30 @@ func loadFile(iso string, srcFile string) RigFile {
189198
if strings.HasPrefix(scanText, "#") {
190199
continue
191200
}
192-
dataStr = strings.Split(scanner.Text(), "\t")
201+
dataStr = strings.Split(scanText, "\t")
193202
// string to float
194203
f, err := strconv.ParseFloat(dataStr[0], 64)
195204
if err != nil {
196-
// Ignore error
197-
fmt.Println(err)
205+
fmt.Printf("Error parsing float in %s: %v\n", srcFile, err)
206+
continue
198207
}
199208
sum += f
200209
str = dataStr[1:]
201210
weights = append(weights, f)
202211
rigFile.texts = append(rigFile.texts, str)
203212
}
213+
214+
if err := scanner.Err(); err != nil {
215+
fmt.Printf("Error reading file %s: %v\n", srcFile, err)
216+
}
217+
204218
rigFile.total = sum
205-
rigFile.vose, err = vose.NewVose(weights, rand.New(rand.NewSource(time.Now().UnixNano())))
219+
220+
// Create a new random source for each file to avoid correlations
221+
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
222+
rigFile.vose, err = vose.NewVose(weights, rng)
206223
if err != nil {
207-
fmt.Println("Vose error:", err)
224+
fmt.Printf("Vose error with %s: %v\n", srcFile, err)
208225
panic(1)
209226
}
210227
return rigFile
@@ -222,6 +239,11 @@ func getNext(dict RigDict) Rig {
222239
rig.StreetNumber = rand.Intn(150) + 1
223240
zip := dict.zipcodes.texts[dict.zipcodes.vose.Next()]
224241
rig.City = zip[1]
225-
rig.Zipcode, _ = strconv.Atoi(zip[0])
242+
zipcode, err := strconv.Atoi(zip[0])
243+
if err != nil {
244+
// Fallback to default value if conversion fails
245+
zipcode = 10000
246+
}
247+
rig.Zipcode = zipcode
226248
return rig
227249
}

vose/vose.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func NewVose(prob []float64, generator *rand.Rand) (v *Vose, err error) {
3636
// Check for negative numbers and get sum
3737
for i, d := range prob {
3838
if d < 0.0 {
39-
return nil, errors.New(fmt.Sprintf("%.6f", prob[i]) + " is below zero!")
39+
return nil, fmt.Errorf("%.6f is below zero!", prob[i])
4040
}
4141
sum += d
4242
}

0 commit comments

Comments
 (0)