package store import ( "os" "github.com/mjl-/mox/mlog" "github.com/mjl-/mox/mox-" ) // CreateMessageTemp creates a temporary file, e.g. for delivery. The is created in // subdirectory tmp of the data directory, so the file is on the same file system // as the accounts directory, so renaming files can succeed. The caller is // responsible for closing and possibly removing the file. The caller should ensure // the contents of the file are synced to disk before attempting to deliver the // message. func CreateMessageTemp(log mlog.Log, pattern string) (*os.File, error) { dir := mox.DataDirPath("tmp") os.MkdirAll(dir, 0770) f, err := os.CreateTemp(dir, pattern) if err != nil { return nil, err } err = f.Chmod(0660) if err != nil { xerr := f.Close() log.Check(xerr, "closing temp message file after chmod error") return nil, err } return f, err }