aboutsummaryrefslogtreecommitdiff
path: root/src/prog.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2020-12-04 22:58:28 +0200
committerSergey Poznyakoff <gray@gnu.org>2020-12-04 23:11:27 +0200
commit1f75cee8eefea039697affb0ab43e3ccb5357861 (patch)
tree57bc463575ac0bcec06ac27ebde2f72d9938b95a /src/prog.h
parent5196a3a826938c08dc890db63c06ee6a6bc61953 (diff)
downloadpies-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.h10
1 files changed, 1 insertions, 9 deletions
diff --git a/src/prog.h b/src/prog.h
index 6647ee4..99145cd 100644
--- a/src/prog.h
+++ b/src/prog.h
@@ -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;

Return to:

Send suggestions and report system problems to the System administrator.