mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-24 22:32:58 +03:00
nfqws,tpws: always use line buffering for console IO
Forces stdout and stderr to always use line buffering. Note that glibc does automatically flush on newline iff connected to a terminal, but that is not the case when running under systemd. See also https://www.gnu.org/software/libc/manual/html_node/Buffering-Concepts.html https://www.gnu.org/software/libc/manual/html_node/Controlling-Buffering.html
This commit is contained in:
@@ -383,6 +383,11 @@ bool pf_is_empty(const port_filter *pf)
|
||||
return !pf->neg && !pf->from && !pf->to;
|
||||
}
|
||||
|
||||
void disable_console_io_buffering(void)
|
||||
{
|
||||
setvbuf(stdout, NULL, _IOLBF, 0);
|
||||
setvbuf(stderr, NULL, _IOLBF, 0);
|
||||
}
|
||||
|
||||
bool set_env_exedir(const char *argv0)
|
||||
{
|
||||
|
@@ -82,6 +82,7 @@ bool pf_in_range(uint16_t port, const port_filter *pf);
|
||||
bool pf_parse(const char *s, port_filter *pf);
|
||||
bool pf_is_empty(const port_filter *pf);
|
||||
|
||||
void disable_console_io_buffering(void);
|
||||
bool set_env_exedir(const char *argv0);
|
||||
|
||||
#ifndef IN_LOOPBACK
|
||||
|
@@ -1707,6 +1707,7 @@ int main(int argc, char *argv[])
|
||||
struct salisten_s list[MAX_BINDS];
|
||||
char ip_port[48];
|
||||
|
||||
disable_console_io_buffering();
|
||||
set_env_exedir(argv[0]);
|
||||
srand(time(NULL));
|
||||
mask_from_preflen6_prepare();
|
||||
|
@@ -1755,8 +1755,6 @@ int event_loop(const int *listen_fd, size_t listen_fd_ct)
|
||||
// at least one leg was removed. recount legs
|
||||
print_legs();
|
||||
}
|
||||
|
||||
fflush(stderr); fflush(stdout); // for console messages
|
||||
}
|
||||
|
||||
ex:
|
||||
|
Reference in New Issue
Block a user