From 87e008d56de974947ebb99c2cc40b25d3c2cf43e Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 25 Jun 2025 03:59:52 +0900 Subject: treewide: rename to hakurei Fortify makes little sense for a container tool. Signed-off-by: Ophestra --- internal/fmsg/errors.go | 88 ------------------------------------------------ internal/fmsg/fmsg.go | 86 ---------------------------------------------- internal/fmsg/msg.go | 12 ------- internal/fmsg/verbose.go | 23 ------------- 4 files changed, 209 deletions(-) delete mode 100644 internal/fmsg/errors.go delete mode 100644 internal/fmsg/fmsg.go delete mode 100644 internal/fmsg/msg.go delete mode 100644 internal/fmsg/verbose.go (limited to 'internal/fmsg') diff --git a/internal/fmsg/errors.go b/internal/fmsg/errors.go deleted file mode 100644 index bf9884f6..00000000 --- a/internal/fmsg/errors.go +++ /dev/null @@ -1,88 +0,0 @@ -package fmsg - -import ( - "fmt" - "log" - "reflect" - "strings" -) - -// baseError implements a basic error container -type baseError struct { - Err error -} - -func (e *baseError) Error() string { - return e.Err.Error() -} - -func (e *baseError) Unwrap() error { - return e.Err -} - -// BaseError implements an error container with a user-facing message -type BaseError struct { - message string - baseError -} - -// Message returns a user-facing error message -func (e *BaseError) Message() string { - return e.message -} - -// WrapError wraps an error with a corresponding message. -func WrapError(err error, a ...any) error { - if err == nil { - return nil - } - return wrapError(err, fmt.Sprintln(a...)) -} - -// WrapErrorSuffix wraps an error with a corresponding message with err at the end of the message. -func WrapErrorSuffix(err error, a ...any) error { - if err == nil { - return nil - } - return wrapError(err, fmt.Sprintln(append(a, err)...)) -} - -// WrapErrorFunc wraps an error with a corresponding message returned by f. -func WrapErrorFunc(err error, f func(err error) string) error { - if err == nil { - return nil - } - return wrapError(err, f(err)) -} - -func wrapError(err error, message string) *BaseError { - return &BaseError{message, baseError{err}} -} - -var ( - baseErrorType = reflect.TypeFor[*BaseError]() -) - -func AsBaseError(err error, target **BaseError) bool { - v := reflect.ValueOf(err) - if !v.CanConvert(baseErrorType) { - return false - } - - *target = v.Convert(baseErrorType).Interface().(*BaseError) - return true -} - -func PrintBaseError(err error, fallback string) { - var e *BaseError - - if AsBaseError(err, &e) { - if msg := e.Message(); strings.TrimSpace(msg) != "" { - log.Print(msg) - return - } - Verbose("*"+fallback, err) - return - } - log.Println(fallback, err) -} diff --git a/internal/fmsg/fmsg.go b/internal/fmsg/fmsg.go deleted file mode 100644 index 48538380..00000000 --- a/internal/fmsg/fmsg.go +++ /dev/null @@ -1,86 +0,0 @@ -// Package fmsg provides various functions for output messages. -package fmsg - -import ( - "bytes" - "io" - "log" - "os" - "sync" - "sync/atomic" - "syscall" -) - -const ( - bufSize = 4 * 1024 - bufSizeMax = 16 * 1024 * 1024 -) - -var o = &suspendable{w: os.Stderr} - -// Prepare configures the system logger for [Suspend] and [Resume] to take effect. -func Prepare(prefix string) { log.SetPrefix(prefix + ": "); log.SetFlags(0); log.SetOutput(o) } - -type suspendable struct { - w io.Writer - s atomic.Bool - - buf bytes.Buffer - bufOnce sync.Once - bufMu sync.Mutex - dropped int -} - -func (s *suspendable) Write(p []byte) (n int, err error) { - if !s.s.Load() { - return s.w.Write(p) - } - s.bufOnce.Do(func() { s.prepareBuf() }) - - s.bufMu.Lock() - defer s.bufMu.Unlock() - - if l := len(p); s.buf.Len()+l > bufSizeMax { - s.dropped += l - return 0, syscall.ENOMEM - } - return s.buf.Write(p) -} - -func (s *suspendable) prepareBuf() { s.buf.Grow(bufSize) } -func (s *suspendable) Suspend() bool { return o.s.CompareAndSwap(false, true) } -func (s *suspendable) Resume() (resumed bool, dropped uintptr, n int64, err error) { - if o.s.CompareAndSwap(true, false) { - o.bufMu.Lock() - defer o.bufMu.Unlock() - - resumed = true - dropped = uintptr(o.dropped) - - o.dropped = 0 - n, err = io.Copy(s.w, &s.buf) - s.buf = bytes.Buffer{} - s.prepareBuf() - } - return -} - -func Suspend() bool { return o.Suspend() } -func Resume() bool { - resumed, dropped, _, err := o.Resume() - if err != nil { - // probably going to result in an error as well, - // so this call is as good as unreachable - log.Printf("cannot dump buffer on resume: %v", err) - } - if resumed && dropped > 0 { - log.Fatalf("dropped %d bytes while output is suspended", dropped) - } - return resumed -} - -func BeforeExit() { - if Resume() { - log.Printf("beforeExit reached on suspended output") - } -} diff --git a/internal/fmsg/msg.go b/internal/fmsg/msg.go deleted file mode 100644 index 7ff42b75..00000000 --- a/internal/fmsg/msg.go +++ /dev/null @@ -1,12 +0,0 @@ -package fmsg - -type Output struct{} - -func (Output) IsVerbose() bool { return Load() } -func (Output) Verbose(v ...any) { Verbose(v...) } -func (Output) Verbosef(format string, v ...any) { Verbosef(format, v...) } -func (Output) WrapErr(err error, a ...any) error { return WrapError(err, a...) } -func (Output) PrintBaseErr(err error, fallback string) { PrintBaseError(err, fallback) } -func (Output) Suspend() { Suspend() } -func (Output) Resume() bool { return Resume() } -func (Output) BeforeExit() { BeforeExit() } diff --git a/internal/fmsg/verbose.go b/internal/fmsg/verbose.go deleted file mode 100644 index a8e4c81f..00000000 --- a/internal/fmsg/verbose.go +++ /dev/null @@ -1,23 +0,0 @@ -package fmsg - -import ( - "log" - "sync/atomic" -) - -var verbose = new(atomic.Bool) - -func Load() bool { return verbose.Load() } -func Store(v bool) { verbose.Store(v) } - -func Verbosef(format string, v ...any) { - if verbose.Load() { - log.Printf(format, v...) - } -} - -func Verbose(v ...any) { - if verbose.Load() { - log.Println(v...) - } -} -- cgit v1.3.1