summaryrefslogtreecommitdiff
path: root/src/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/error.c')
-rw-r--r--src/error.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/error.c b/src/error.c
new file mode 100644
index 0000000..af84cba
--- /dev/null
+++ b/src/error.c
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-3.0-or-later */
+/*
+ * vfetch - neofetch but the ascii part is a video
+ *
+ * Copyright (C) 2026 Doan Luu Duc Tai
+ *
+ */
+
+#include "error.h"
+#include <sysexits.h>
+
+int map_vfetch_error_to_exit_code(VfetchError err) {
+ switch (err) {
+ case VFETCH_SUCCESS:
+ case VFETCH_SUCCESS_EXIT_EARLY:
+ return EX_OK;
+ case VFETCH_ERROR_INVALID_ARGUMENT:
+ return EX_USAGE;
+ case VFETCH_ERROR_FILE_IO:
+ case VFETCH_ERROR_MKDIR_FAILED:
+ case VFETCH_ERROR_STAT_FAILED:
+ case VFETCH_ERROR_PATH_FAILED:
+ return EX_IOERR;
+ case VFETCH_ERROR_VIDEO_OPEN_FAILED:
+ case VFETCH_ERROR_AV_STREAM_INFO:
+ case VFETCH_ERROR_CACHE_INVALID:
+ return EX_DATAERR;
+ case VFETCH_ERROR_EXEC_FAILED:
+ case VFETCH_ERROR_COMMAND_FAILED:
+ case VFETCH_ERROR_MA_INIT:
+ return EX_UNAVAILABLE;
+ case VFETCH_ERROR_MEMORY_ALLOCATION:
+ case VFETCH_ERROR_PIPE_CREATION:
+ case VFETCH_ERROR_FORK_FAILED:
+ case VFETCH_ERROR_WAITPID_FAILED:
+ case VFETCH_ERROR_THREAD_CREATION:
+ case VFETCH_ERROR_MUTEX_INIT:
+ case VFETCH_ERROR_MMAP_FAILED:
+ return EX_OSERR;
+ case VFETCH_ERROR_CHAFA_CONFIG:
+ default:
+ return EX_SOFTWARE;
+ }
+}