aboutsummaryrefslogtreecommitdiff
path: root/src/progman.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2019-06-24 12:56:24 +0300
committerSergey Poznyakoff <gray@gnu.org>2019-06-24 12:56:24 +0300
commit006bfbc5235c181783445d321ce7a7e3c6d8bd8a (patch)
treef483e0d30c3e801add01b372b24a342281b70b86 /src/progman.c
parentcb90ca582a46ef9f0779837dc4c6fb00656e70c9 (diff)
downloadpies-006bfbc5235c181783445d321ce7a7e3c6d8bd8a.tar.gz
pies-006bfbc5235c181783445d321ce7a7e3c6d8bd8a.tar.bz2
Enable/disable SystemV init code at compile time
* configure.ac: New option --enable-sysvinit. Disable the init code if RUN_LVL is not available. (PIES_SYSVINIT_ENABLED): New configuration define. (PIES_COND_SYSVINIT): New condition Print configuration settings summary. * src/pies.h (is_sysvinit): Check for PIES_SYSVINIT_ENABLED. (SYSVINIT_ACTIVE): New macro. * grecs: Upgrade. * src/Makefile.am: Conditionally link sysvinit-related code. * src/cmdline.opt: Disable the --telinit option if sysvinit support is not available. (parse_options): Use SYSVINIT_ACTIVE in the conditional. * src/comp.c (component_verify): Check if component definition is allowed by the current state of the sysvinit support. * src/ctl.c: Disable the /runlevel entry point if sysvinit support is not compiled. * src/diag.c (stderr_open): Make sure sysvinit-related code is not compiled if the sysvinit support is not available. * src/pies.c (config_syntax_tab): Add entry for CONF_INITTAB only if sysvinit support is available. (_cb_initdefault,_cb_runlevels): Remove. Use cb_initdefault and cb_runlevels instead. (component_keywords): Disable runlevels without sysvinit support. (pies_keywords): Same for initdefault. Use SYSVINIT_ACTIVE to suppress compilation of sysvinit code without sysvinit support. * src/progman.c: Use SYSVINIT_ACTIVE to suppress compilation of sysvinit code without sysvinit support. * src/sysvinit.c (cb_initdefault,cb_runlevels): New functions.
Diffstat (limited to 'src/progman.c')
-rw-r--r--src/progman.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/progman.c b/src/progman.c
index 88f9afa..70ebf68 100644
--- a/src/progman.c
+++ b/src/progman.c
@@ -824,7 +824,7 @@ prog_start_prologue (struct prog *prog)
environ_unset (prog->v.p.env, sockenv_var[i], NULL);
}
envop_exec (prog->v.p.comp->envop, prog->v.p.env);
- if (init_process)
+ if (SYSVINIT_ACTIVE)
{
size_t i;
for (i = 0; sysvinit_environ_hint[i]; i++)
@@ -899,7 +899,7 @@ prog_start (struct prog *prog)
if (is_sysvinit (prog->v.p.comp))
{
- if (!init_process)
+ if (!SYSVINIT_ACTIVE)
{
if (prog->active)
{
@@ -995,7 +995,7 @@ prog_start (struct prog *prog)
break;
default:
- if (init_process)
+ if (SYSVINIT_ACTIVE)
{
int fd = console_open (O_RDWR|O_NOCTTY);
if (fd < 0)
@@ -1037,7 +1037,7 @@ prog_start (struct prog *prog)
break;
}
- if (!init_process)
+ if (!SYSVINIT_ACTIVE)
{
if (redir[RETR_ERR] == -1)
{
@@ -1600,7 +1600,7 @@ print_status (const char *tag, pid_t pid, int status, int expect_term)
{
int prio;
- if (init_process)
+ if (SYSVINIT_ACTIVE)
{
if (debug_level <= 1)
return;
@@ -2147,7 +2147,8 @@ progman_cleanup (int expect_term)
}
else
{
- if (prog->v.p.comp->mode >= pies_mark_sysvinit
+ if (PIES_SYSVINIT_ENABLED
+ && prog->v.p.comp->mode >= pies_mark_sysvinit
&& prog->v.p.comp->mode != pies_comp_ondemand)
{
sysvinit_acct (SYSV_ACCT_PROC_STOP, "", prog_tag (prog),
@@ -2303,7 +2304,7 @@ prog_to_stop (struct prog *prog)
}
#define DIAG_CON \
- (init_process ? (DIAG_TO_STDERR|DIAG_REOPEN_LOG) : diag_output)
+ (SYSVINIT_ACTIVE ? (DIAG_TO_STDERR|DIAG_REOPEN_LOG) : diag_output)
/* Stop all program components marked for termination. Wait at most
2*shutdown_timeout seconds. */

Return to:

Send suggestions and report system problems to the System administrator.