in internal/status/status_linux.go [59:80]
func (r statusReport) Save(statusFolder string, seqNum int) error {
fn := fmt.Sprintf("%d.status", seqNum)
path := filepath.Join(statusFolder, fn)
tmpFile, err := ioutil.TempFile(statusFolder, fn)
if err != nil {
return errorhelper.AddStackToError(fmt.Errorf("status: failed to create temporary file: %v", err))
}
tmpFile.Close()
b, err := r.marshal()
if err != nil {
return errorhelper.AddStackToError(fmt.Errorf("status: failed to marshal into json: %v", err))
}
if err := ioutil.WriteFile(tmpFile.Name(), b, chmod); err != nil {
return errorhelper.AddStackToError(fmt.Errorf("status: failed to path=%s error=%v", tmpFile.Name(), err))
}
if err := os.Rename(tmpFile.Name(), path); err != nil {
return errorhelper.AddStackToError(fmt.Errorf("status: failed to move to path=%s error=%v", path, err))
}
return nil
}