aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/init.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-29 01:37:13 +0900
committerOphestra <cat@gensokyo.uk>2025-08-29 01:37:13 +0900
commitf24dd4ab8c3f1440654f9c5c18e50f03fdf85e27 (patch)
treec59d04453fa1859f6f1c4fec2110f53fcea339dc /container/init.go
parenta462341a0a3e1132f3fcdb1efb0f7a56e851a9e1 (diff)
container/init: handle unwrapped errors
This is much cleaner from both the return statement and the error handling. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/init.go')
-rw-r--r--container/init.go24
1 files changed, 16 insertions, 8 deletions
diff --git a/container/init.go b/container/init.go
index 8b0a7a26..e56b4cf0 100644
--- a/container/init.go
+++ b/container/init.go
@@ -184,10 +184,14 @@ func initEntrypoint(k syscallDispatcher, prepareLogger func(prefix string), setV
}
if err := op.early(state, k); err != nil {
- k.printBaseErr(err,
- fmt.Sprintf("cannot prepare op at index %d:", i))
- k.beforeExit()
- k.exit(1)
+ if m, ok := messageFromError(err); ok {
+ k.fatal(m)
+ } else {
+ k.printBaseErr(err,
+ fmt.Sprintf("cannot prepare op at index %d:", i))
+ k.beforeExit()
+ k.exit(1)
+ }
}
}
@@ -224,10 +228,14 @@ func initEntrypoint(k syscallDispatcher, prepareLogger func(prefix string), setV
// ops already checked during early setup
k.verbosef("%s %s", op.prefix(), op)
if err := op.apply(state, k); err != nil {
- k.printBaseErr(err,
- fmt.Sprintf("cannot apply op at index %d:", i))
- k.beforeExit()
- k.exit(1)
+ if m, ok := messageFromError(err); ok {
+ k.fatal(m)
+ } else {
+ k.printBaseErr(err,
+ fmt.Sprintf("cannot apply op at index %d:", i))
+ k.beforeExit()
+ k.exit(1)
+ }
}
}