MCPcopy
hub / github.com/wavetermdev/waveterm / AtomicWriteFile

Function AtomicWriteFile

pkg/util/fileutil/fileutil.go:179–194  ·  view source on GitHub ↗
(fileName string, data []byte, perm os.FileMode)

Source from the content-addressed store, hash-verified

177}
178
179func AtomicWriteFile(fileName string, data []byte, perm os.FileMode) error {
180 tmpFileName := fileName + TempFileSuffix
181 if err := os.WriteFile(tmpFileName, data, perm); err != nil {
182 if removeErr := os.Remove(tmpFileName); removeErr != nil && !os.IsNotExist(removeErr) {
183 return fmt.Errorf("failed to write temp file %q: %w (also failed to remove temp file: %v)", tmpFileName, err, removeErr)
184 }
185 return err
186 }
187 if err := os.Rename(tmpFileName, fileName); err != nil {
188 if removeErr := os.Remove(tmpFileName); removeErr != nil && !os.IsNotExist(removeErr) {
189 return fmt.Errorf("failed to rename temp file %q to %q: %w (also failed to remove temp file: %v)", tmpFileName, fileName, err, removeErr)
190 }
191 return err
192 }
193 return nil
194}
195
196var (
197 systemBinDirs = []string{

Calls 1

WriteFileMethod · 0.80

Tested by 2

TestAtomicWriteFileFunction · 0.68