чување afd404bcd7b642d77da85a69b90d859f2fb4ad55
родитељ 572558ba046784005e5b5bfc8bbb17ed0444caec
Аутор: Страхиња Радић <sr@strahinja.org>
Датум: Fri, 17 Oct 2025 08:36:03 +0200
Fix errno handling and sled exit status to be consistent with manpage
Diffstat:
измењених датотека: 1, додавања: 5(+), брисања: 1(-)
diff --git a/sled.c b/sled.c
@@ -702,6 +702,7 @@ handle_key_event(struct tb_event* ev, struct DrawState* state)
assert((state != NULL) && (ev != NULL));
state->error = ERR_NONE;
+ errno = 0;
if (IN(state->mode, M_PROMPT))
{
@@ -2025,6 +2026,7 @@ save_file(struct DrawState* state)
char* pbuf = NULL;
ssize_t bufsize = LINE_DEFAULT;
int result = 0;
+ int saved_errno;
assert(state != NULL);
if (!(buf = calloc(bufsize, 1)))
@@ -2126,10 +2128,12 @@ save_file_alloc_error:
return 1;
save_file_cleanup:
+ saved_errno = errno;
if (output)
fclose(output);
free(buf);
state->action = ACT_IDLE;
+ errno = saved_errno;
return result;
}
@@ -3204,5 +3208,5 @@ main_done:
free(wd);
free(dir);
free(rfn);*/
- return state.error ? CUSTOM_ERROR_START + state.error : saved_errno;
+ return saved_errno ? saved_errno : CUSTOM_ERROR_START + state.error;
}