func()

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
}