diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2016-02-16 07:15:42 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2016-02-16 07:15:42 +0200 |
commit | bd8bd1640c72ceefd87b46a7a3d378c78c9081f5 (patch) | |
tree | 8224d8dfd67ab70240744dfb2df4c3af9fd1f850 /src/ctl.c | |
parent | 27366c475aa4955f296f169cf9acd33e36b9d7b3 (diff) | |
download | pies-bd8bd1640c72ceefd87b46a7a3d378c78c9081f5.tar.gz pies-bd8bd1640c72ceefd87b46a7a3d378c78c9081f5.tar.bz2 |
Associate program's activity flag with prog, instead of with component.
The CF_DISABLED flag is still retained to indicate that the component is
disabled administratively.
* src/prog.h (prog.v.p) <active>: New member.
(IS_ACTIVE_COMPONENT): Use active flag.
* src/comp.c (component_finish): Don't modify component flags.
* src/ctl.c (prog_serialize): Replace attribute "disabled" with
"active".
(fun_stop): Set prog->v.p.active
* src/pies.c (main): Use pies_master_argv to check whether
program name is absolute.
* src/piesctl.c (print_comp): Check "active" attribute.
* src/progman.c (register_prog0): Set prog->v.p.active.
(progman_create_sockets): Remove components if their
socket cannot be opened.
(progman_lookup_tcpmux, prog_open_socket)
(prog_start, progman_start)
(prog_start_prerequisites, react): Operate on prog->v.p.active
to test/change prog's activity state.
* src/sysvinit.c (enablecomp, runlevel_setup_prog): Operate on
prog->v.p.active to test/change prog's activity state.
(demand_prog, IS_RUNNING_DISABLED_PROG): Likewise.
Diffstat (limited to 'src/ctl.c')
-rw-r--r-- | src/ctl.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -1826,14 +1826,13 @@ prog_serialize (struct json_value *ret, struct prog *prog) switch (prog->type) { case TYPE_COMPONENT: FORMAT_IDX (ret, "mode", pies_comp_mode_str, prog->v.p.comp->mode); FORMAT_IDX (ret, "status", pies_status_str, prog->v.p.status); - json_object_set_bool (ret, "disabled", - prog->v.p.comp->flags & CF_DISABLED); + json_object_set_bool (ret, "active", prog->v.p.active); if (prog->pid) json_object_set_number (ret, "PID", prog->pid); else if (prog->v.p.status == status_listener && prog->v.p.comp->socket_url) json_object_set_string (ret, "URL", "%s", @@ -1870,23 +1869,22 @@ fun_list (struct json_value *result, struct prog *prog) return 0; } static int fun_stop (struct json_value *result, struct prog *prog) { - if (prog->v.p.comp->flags & CF_DISABLED - && prog->v.p.status == status_stopped) + if (prog->v.p.active && prog->v.p.status == status_stopped) { json_object_set_string (result, "status", "ER"); json_object_set_string (result, "error_message", "already stopped"); return 1; } else { - prog->v.p.comp->flags |= CF_DISABLED; + prog->v.p.active = 0; progman_stop_component (&prog); json_object_set_string (result, "status", "OK"); } return 0; } @@ -1894,12 +1892,13 @@ static int fun_start (struct json_value *result, struct prog *prog) { switch (prog->v.p.status) { case status_stopped: prog->v.p.comp->flags &= ~CF_DISABLED; + prog->v.p.active = 1; json_object_set_string (result, "status", "OK"); break; case status_sleeping: case status_finished: prog->v.p.status = status_stopped; |