diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2020-12-04 22:58:28 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2020-12-04 23:11:27 +0200 |
commit | 1f75cee8eefea039697affb0ab43e3ccb5357861 (patch) | |
tree | 57bc463575ac0bcec06ac27ebde2f72d9938b95a /src/prog.h | |
parent | 5196a3a826938c08dc890db63c06ee6a6bc61953 (diff) | |
download | pies-1f75cee8eefea039697affb0ab43e3ccb5357861.tar.gz pies-1f75cee8eefea039697affb0ab43e3ccb5357861.tar.bz2 |
Rewrite stdout/stderr redirection
Instead of spawning a subprocess for each redirection, read the
output directly from pipe and send it to syslog using an asynchronous
syslog implementation.
* src/syslog.c: New file.
* src/pies_syslog.h: New file.
* src/Makefile.am: Add syslog.c and pies_syslog.h
* src/comp.c (component_create): Use pies_log_facility.
* src/ctl.c (auth_prog)
(prog_serialize): Remove TYPE_REDIRECTOR case
* src/diag.c (syslog_printer): Use pies_vsyslog.
(syslog_open): Use pies_syslog_open.
(syslog_close): Use pies_syslog_close.
(diag_setup): Use pies_syslog_open.
* src/pies.c (log_facility, log_tag): Remove globals. Use
pies_log_facility and pies_log_tag instead.
New configuration statement syslog.dev
* src/pies.h: Include pies_syslog.h
(register_socket,register_program_socket): Additional argument: free_data.
* src/prog.h (TYPE_REDIRECTOR): Remove.
(prog.v.p.redir): Change data type.
(prog.v.r): Remove.
* src/progman.c (prog_tag)
(destroy_prog)
(progman_cleanup): Remove TYPE_REDIRECTOR case
(prog_stop_redirectors): Deregister fds
(redir_tag,register_redir)
(update_redir): Remove.
(open_redirector): Rewrite. Set up direct reader from the stream,
instead of spawning a subprocess.
(prog_start): Change open_redirector actual arguments.
* src/socket.c (sockinst): New member: free_data.
(register_socket): Initialize the free_data member.
(register_program_socket): Likewise.
Diffstat (limited to 'src/prog.h')
-rw-r--r-- | src/prog.h | 10 |
1 files changed, 1 insertions, 9 deletions
@@ -17,7 +17,6 @@ enum prog_type { TYPE_COMPONENT, - TYPE_REDIRECTOR, TYPE_COMMAND }; @@ -56,7 +55,7 @@ struct prog size_t argc; char **argv; /* Actual command line (NULL-terminated) */ int socket; - struct prog *redir[2]; /* Pointers to redirectors */ + int redir[2]; /* FDs of redirectors */ time_t timestamp; /* Time of last startup */ size_t failcount; /* Number of failed starts since timestamp */ enum prog_status status; /* Current component status */ @@ -73,13 +72,6 @@ struct prog struct { char *tag; - struct component *comp; - struct prog *master; - } r; - - struct - { - char *tag; char *command; } c; } v; |