/* * statuscodes.h * MontaukOS status codes * Copyright (c) 2026 Daniel Hammer */ #pragma once // Userspace status codes. // Analogous to kernel/src/Common/StatusCodes.hpp, but positive numbers are used. #ifdef __cplusplus namespace montauk { #endif typedef enum { Success = 0, GenericFailure = 1, PermissionDenied = 2, CapabilityDenied = 3, SystemIntegrityError = 4, BadPointer = 5, InvalidArgument = 6, UnsupportedOp = 7, NoDevice = 8, IoFailure = 9, BadInvocation = 10, NoSuchPath = 11, Busy = 12, BufferTooSmall = 13, OutOfMemory = 14 } StatusCode; inline const char* GetStatusText(StatusCode statusCode) { const char* statusText[] = { "Success", // 0 "Generic failure", // 1 "Permission denied", // 2 "Capability denied", // 3 "System integrity error", // 4 "Bad pointer", // 5 "Invalid argument", // 6 "Unsupported operation", // 7 "No device", // 8 "I/O failure", // 9 "Bad invocation", // 10 "No such path", // 11 "Busy", // 12 "Buffer too small", // 13 "Out of memory", // 14 }; if (statusCode > 0 && statusCode <= 14) { return statusText[statusCode]; } else { return "Unknown error"; } } inline const char* GetStatusExplanationText(StatusCode statusCode) { const char* explanationText[] = { nullptr, // 0 nullptr, // 1 nullptr, // 2 nullptr, // 3 "The path is protected by the system and cannot be modified.", // 4 nullptr, // 5 nullptr, // 6 nullptr, // 7 nullptr, // 8 nullptr, // 9 nullptr, // 10 nullptr, // 11 nullptr, // 12 "The buffer supplied by the caller is too small.", // 13 nullptr, // 14 }; if (statusCode > 0 && statusCode <= 14) { if (explanationText[statusCode] != nullptr) { return explanationText[statusCode]; } } return GetStatusText(statusCode); } #ifdef __cplusplus } #endif