From 691a193bba4f2c9df5fe9aec049ca24ee887a866 Mon Sep 17 00:00:00 2001 From: Else Someone Date: Thu, 22 Jan 2026 15:08:38 +0200 Subject: [PATCH] taps: fix error messages --- pkgs/taps/main.c | 21 +++++++++++++-------- shell.nix | 3 +++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pkgs/taps/main.c b/pkgs/taps/main.c index c921bd0..82a02cd 100644 --- a/pkgs/taps/main.c +++ b/pkgs/taps/main.c @@ -10,7 +10,7 @@ #include #include #include /* open, O_NONBLOCK, &c */ -#include /* perror */ +#include #include #include @@ -31,8 +31,7 @@ #define DO_OR_DIE(expr) DO_OR_DIE_X((expr) == 0) #define DO_OR_DIE_X(expr) \ do if (!(expr)) { \ - perror((#expr)); \ - exit(EXIT_FAILURE); \ + error(EXIT_FAILURE, errno, ("Failed assertion: " #expr)); \ } while(false) struct allow_pattern { @@ -214,6 +213,7 @@ int main(int argc, char **argv) { char **rest = argv + 1; + DO_OR_DIE_X(argc > 1); if (strcmp(rest[0], "serve") == 0) { cmdServe = true; ++rest; @@ -221,21 +221,26 @@ int main(int argc, char **argv) { cmdGet = true; ++rest; } else { - exit(EXIT_FAILURE); + error(EINVAL, EINVAL, "no subcommand \"%s\"", rest[0]); } const char *patternsRaw = secure_getenv("TAPS_ALLOW"); struct allow_patterns patterns = { 0 }; - if (cmdServe && patternsRaw != NULL) { patterns = parsePatterns(patternsRaw); } - DO_OR_DIE_X(patterns.patterns != NULL); + if (cmdServe && patternsRaw != NULL) { + patterns = parsePatterns(patternsRaw); + DO_OR_DIE_X(patterns.patterns != NULL); + } const char *servePath = secure_getenv("TAPS_SOCK"); - if (cmdServe && patterns.patterns != NULL) { + if (cmdServe) { + error(patterns.patterns == NULL, EINVAL, "TAPS_ALLOW"); acceptRequests(servePath, &patterns); } else if (cmdGet) { + error(ENOSYS, ENOSYS, "get"); } else { - exit(EXIT_FAILURE); } + error(EINVAL, EINVAL, "subcommand args"); + } return 0; } diff --git a/shell.nix b/shell.nix index 497375b..f8bb9a7 100644 --- a/shell.nix +++ b/shell.nix @@ -6,5 +6,8 @@ mkShell.override { stdenv = stdenvNoCC; } { virtiofsd crosvm # virtio-gpu npins + ] ++ [ + man-pages + linux-manual ]; }