From cdc00bacf0c66ff3e1cfb49983be20cf3ce9eff1 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Tue, 6 Jan 2026 11:19:50 +0100 Subject: [PATCH] isobusfs: treat interactive exit as control flow, not error Stop using -EINTR for cmd_exit(). Introduce ISOBUSFS_CLI_RET_EXIT and map it to exit code 0 in main(), keeping errno values for real errors. Signed-off-by: Oleksij Rempel --- isobusfs/isobusfs_cli.c | 4 ++++ isobusfs/isobusfs_cli.h | 3 +++ isobusfs/isobusfs_cli_int.c | 4 ++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/isobusfs/isobusfs_cli.c b/isobusfs/isobusfs_cli.c index 6d74bba..b1f1e6c 100644 --- a/isobusfs/isobusfs_cli.c +++ b/isobusfs/isobusfs_cli.c @@ -671,6 +671,10 @@ int main(int argc, char *argv[]) while (1) { ret = isobusfs_cli_process_events_and_tasks(priv); + if (ret == ISOBUSFS_CLI_RET_EXIT) { + ret = 0; + break; + } if (ret) break; } diff --git a/isobusfs/isobusfs_cli.h b/isobusfs/isobusfs_cli.h index 6689c6c..d722e1b 100644 --- a/isobusfs/isobusfs_cli.h +++ b/isobusfs/isobusfs_cli.h @@ -13,6 +13,9 @@ #define ISOBUSFS_CLI_MAX_EPOLL_EVENTS 10 #define ISOBUSFS_CLI_DEFAULT_WAIT_TIMEOUT_MS 1000 /* ms */ +/* internel return codes, not errno values */ +#define ISOBUSFS_CLI_RET_EXIT 1 + enum isobusfs_cli_state { ISOBUSFS_CLI_STATE_CONNECTING, ISOBUSFS_CLI_STATE_IDLE, diff --git a/isobusfs/isobusfs_cli_int.c b/isobusfs/isobusfs_cli_int.c index ae0217a..3d2d544 100644 --- a/isobusfs/isobusfs_cli_int.c +++ b/isobusfs/isobusfs_cli_int.c @@ -66,8 +66,8 @@ static int cmd_help(struct isobusfs_priv *priv, const char *options) static int cmd_exit(struct isobusfs_priv *priv, const char *options) { pr_int("exit interactive mode\n"); - /* Return -EINTR to indicate the program should exit */ - return -EINTR; + + return ISOBUSFS_CLI_RET_EXIT; } static int cmd_dmesg(struct isobusfs_priv *priv, const char *options)