mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Merge pull request #1192 from profanity-im/issue1186
log: set nonblocking mode for stderr
This commit is contained in:
commit
fd161d92ed
22
src/log.c
22
src/log.c
@ -790,26 +790,36 @@ log_stderr_handler(void)
|
||||
}
|
||||
}
|
||||
|
||||
static int log_stderr_nonblock_set(int fd)
|
||||
{
|
||||
int rc;
|
||||
|
||||
rc = fcntl(fd, F_GETFL);
|
||||
if (rc >= 0)
|
||||
rc = fcntl(fd, F_SETFL, rc | O_NONBLOCK);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
void
|
||||
log_stderr_init(log_level_t level)
|
||||
{
|
||||
int rc;
|
||||
int flags;
|
||||
|
||||
rc = pipe(stderr_pipe);
|
||||
if (rc != 0)
|
||||
goto err;
|
||||
|
||||
flags = fcntl(stderr_pipe[0], F_GETFL);
|
||||
rc = fcntl(stderr_pipe[0], F_SETFL, flags | O_NONBLOCK);
|
||||
if (rc != 0)
|
||||
goto err_close;
|
||||
|
||||
close(STDERR_FILENO);
|
||||
rc = dup2(stderr_pipe[1], STDERR_FILENO);
|
||||
if (rc < 0)
|
||||
goto err_close;
|
||||
|
||||
rc = log_stderr_nonblock_set(stderr_pipe[0])
|
||||
?: log_stderr_nonblock_set(stderr_pipe[1]);
|
||||
if (rc != 0)
|
||||
goto err_close;
|
||||
|
||||
stderr_buf = malloc(STDERR_BUFSIZE);
|
||||
stderr_msg = g_string_sized_new(STDERR_BUFSIZE);
|
||||
stderr_level = level;
|
||||
|
Loading…
Reference in New Issue
Block a user