Documentation
¶
Overview ¶
Package fileutil provides durable filesystem helpers shared by package main and internal/* packages (ADR-0003). It has no dependency on the rest of Culvert (stdlib only).
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AtomicWrite ¶
AtomicWrite writes data to path atomically: it writes to a unique temp file in the same directory, chmods, fsyncs the file, renames over the target, and best-effort fsyncs the parent directory. A crash mid-write never leaves a partial or corrupt target file. Moved verbatim from package main's atomicWriteFile (ADR-0003); behaviour is unchanged.
Every failure branch additionally notifies the write-failure observer (CHAOS-45) so error-discarding callers cannot fail silently.
func SetWriteFailureObserver ¶ added in v1.0.175
SetWriteFailureObserver publishes the durable-write failure observer. Published once at startup by package main. A nil fn clears the observer, which is what tests use to restore the default no-op state.
func SetWriteSuccessObserver ¶ added in v1.0.175
func SetWriteSuccessObserver(fn func(path string))
SetWriteSuccessObserver publishes the durable-write success observer. Nil clears it. See writeOKObserver for why successes are observed at all.
Types ¶
type RotatingFile ¶ added in v1.0.16
type RotatingFile struct {
// contains filtered or unexported fields
}
RotatingFile wraps a log file and rotates it when it exceeds maxBytes.
func NewRotatingFile ¶ added in v1.0.16
func NewRotatingFile(path string, maxMB int) (*RotatingFile, error)
NewRotatingFile opens path for append and returns a writer that rotates the file to path+".1" when it exceeds maxMB (<=0 falls back to 50 MB).
func (*RotatingFile) Close ¶ added in v1.0.16
func (r *RotatingFile) Close() error
Close closes the underlying file.