Skip to content

Commit dcdd9cb

Browse files
committed
Refactor: ensure proper resource cleanup with defer statements in file operations
1 parent 3601568 commit dcdd9cb

File tree

3 files changed

+62
-36
lines changed

3 files changed

+62
-36
lines changed

agent/updater/utils/zip.go

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,37 @@ func Unzip(zipFile, destPath string) error {
1616
defer archive.Close()
1717

1818
for _, f := range archive.File {
19-
filePath := path.Join(destPath, f.Name)
20-
if f.FileInfo().IsDir() {
21-
os.MkdirAll(filePath, os.ModePerm)
22-
continue
23-
}
24-
if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
25-
return err
26-
}
27-
dstFile, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
28-
if err != nil {
29-
return err
30-
}
31-
fileInArchive, err := f.Open()
19+
err := func() error {
20+
filePath := path.Join(destPath, f.Name)
21+
if f.FileInfo().IsDir() {
22+
os.MkdirAll(filePath, os.ModePerm)
23+
return nil
24+
}
25+
if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
26+
return err
27+
}
28+
29+
dstFile, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
30+
if err != nil {
31+
return err
32+
}
33+
defer dstFile.Close()
34+
35+
fileInArchive, err := f.Open()
36+
if err != nil {
37+
return err
38+
}
39+
defer fileInArchive.Close()
40+
41+
if _, err := io.Copy(dstFile, fileInArchive); err != nil {
42+
return err
43+
}
44+
45+
return nil
46+
}()
3247
if err != nil {
3348
return err
3449
}
35-
if _, err := io.Copy(dstFile, fileInArchive); err != nil {
36-
return err
37-
}
38-
dstFile.Close()
39-
fileInArchive.Close()
4050
}
4151
return nil
4252
}

agent/utils/files.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ func GenerateFromTemplate(data interface{}, templateFile string, configFile stri
101101
return err
102102
}
103103

104+
defer writer.Close()
105+
104106
err = ut.Execute(writer, data)
105107
if err != nil {
106108
return err
@@ -132,6 +134,7 @@ func ReadFileLines(path string) ([]string, error) {
132134
if err != nil {
133135
return nil, err
134136
}
137+
135138
defer file.Close()
136139

137140
var lines []string
@@ -148,6 +151,7 @@ func IsDirEmpty(path string) (bool, error) {
148151
if err != nil {
149152
return false, err
150153
}
154+
151155
defer f.Close()
152156

153157
_, err = f.Readdirnames(1)
@@ -163,12 +167,14 @@ func copyFile(src, dst string) error {
163167
if err != nil {
164168
return err
165169
}
170+
166171
defer sourceFile.Close()
167172

168173
destFile, err := os.Create(dst)
169174
if err != nil {
170175
return err
171176
}
177+
172178
defer destFile.Close()
173179

174180
_, err = io.Copy(destFile, sourceFile)

agent/utils/zip.go

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,37 @@ func Unzip(zipFile, destPath string) error {
1616
defer archive.Close()
1717

1818
for _, f := range archive.File {
19-
filePath := path.Join(destPath, f.Name)
20-
if f.FileInfo().IsDir() {
21-
os.MkdirAll(filePath, os.ModePerm)
22-
continue
23-
}
24-
if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
25-
return err
26-
}
27-
dstFile, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
28-
if err != nil {
29-
return err
30-
}
31-
fileInArchive, err := f.Open()
19+
err := func() error {
20+
filePath := path.Join(destPath, f.Name)
21+
if f.FileInfo().IsDir() {
22+
os.MkdirAll(filePath, os.ModePerm)
23+
return nil
24+
}
25+
if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
26+
return err
27+
}
28+
29+
dstFile, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
30+
if err != nil {
31+
return err
32+
}
33+
defer dstFile.Close()
34+
35+
fileInArchive, err := f.Open()
36+
if err != nil {
37+
return err
38+
}
39+
defer fileInArchive.Close()
40+
41+
if _, err := io.Copy(dstFile, fileInArchive); err != nil {
42+
return err
43+
}
44+
45+
return nil
46+
}()
3247
if err != nil {
3348
return err
3449
}
35-
if _, err := io.Copy(dstFile, fileInArchive); err != nil {
36-
return err
37-
}
38-
dstFile.Close()
39-
fileInArchive.Close()
4050
}
4151
return nil
4252
}

0 commit comments

Comments
 (0)