summaryrefslogtreecommitdiff
path: root/libpod/define
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2019-09-07 05:40:45 -0400
committerDaniel J Walsh <dwalsh@redhat.com>2019-09-12 16:20:01 -0400
commit535111b5d5cfa0d203df77e6d6b0b69eda46bb82 (patch)
treea22a31672391f8d2235fccaa891162a6f9467e7e /libpod/define
parentaf8fedcc78674d71d43ca3000438c42b7b6b6994 (diff)
downloadpodman-535111b5d5cfa0d203df77e6d6b0b69eda46bb82.tar.gz
podman-535111b5d5cfa0d203df77e6d6b0b69eda46bb82.tar.bz2
podman-535111b5d5cfa0d203df77e6d6b0b69eda46bb82.zip
Use exit code constants
We have leaked the exit number codess all over the code, this patch removes the numbers to constants. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'libpod/define')
-rw-r--r--libpod/define/exec_codes.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/libpod/define/exec_codes.go b/libpod/define/exec_codes.go
index 7184f1e59..33d631326 100644
--- a/libpod/define/exec_codes.go
+++ b/libpod/define/exec_codes.go
@@ -1,6 +1,8 @@
package define
import (
+ "strings"
+
"github.com/pkg/errors"
)
@@ -28,3 +30,19 @@ func TranslateExecErrorToExitCode(originalEC int, err error) int {
}
return originalEC
}
+
+// ExitCode reads the error message when failing to executing container process
+// and then returns 0 if no error, ExecErrorCodeNotFound if command does not exist, or ExecErrorCodeCannotInvoke for
+// all other errors
+func ExitCode(err error) int {
+ if err == nil {
+ return 0
+ }
+ e := strings.ToLower(err.Error())
+ if strings.Contains(e, "file not found") ||
+ strings.Contains(e, "no such file or directory") {
+ return ExecErrorCodeNotFound
+ }
+
+ return ExecErrorCodeCannotInvoke
+}