diff --git a/Userland/Libraries/LibAudio/LoaderError.h b/Userland/Libraries/LibAudio/LoaderError.h index abf9899b7e..cc630fcdb8 100644 --- a/Userland/Libraries/LibAudio/LoaderError.h +++ b/Userland/Libraries/LibAudio/LoaderError.h @@ -6,7 +6,9 @@ #pragma once +#include #include +#include namespace Audio { @@ -47,6 +49,18 @@ struct LoaderError { LoaderError(LoaderError&) = default; LoaderError(LoaderError&&) = default; + + LoaderError(Error&& error) + { + if (error.is_errno()) { + auto code = error.code(); + description = String::formatted("{} ({})", strerror(code), code); + if (code == EBADF || code == EBUSY || code == EEXIST || code == EIO || code == EISDIR || code == ENOENT || code == ENOMEM || code == EPIPE) + category = Category::IO; + } else { + description = error.string_literal(); + } + } }; }