Skip to content
Snippets Groups Projects
Commit abb21345 authored by Eric Vidal's avatar Eric Vidal :speech_balloon:
Browse files

provide 66 {poweroff,reboot,halt,wall} command

parent b21a017b
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,7 @@ src/include/66/svc.h: src/include/66/graph.h src/include/66/service.h src/includ
src/include/66/tree.h: src/include/66/resolve.h src/include/66/ssexec.h
src/include/66/utils.h: src/include/66/service.h src/include/66/ssexec.h
src/include/66/write.h: src/include/66/service.h
src/66/66.o src/66/66.lo: src/66/66.c src/include/66/sanitize.h src/include/66/ssexec.h src/include/66/tree.h src/include/66/utils.h
src/66/66.o src/66/66.lo: src/66/66.c src/include/66/hpr.h src/include/66/sanitize.h src/include/66/ssexec.h src/include/66/tree.h src/include/66/utils.h
src/66/66-fdholder-filler.o src/66/66-fdholder-filler.lo: src/66/66-fdholder-filler.c src/include/66/constants.h
src/66/66-hpr.o src/66/66-hpr.lo: src/66/66-hpr.c src/include/66/config.h src/include/66/hpr.h
src/66/66-oneshot.o src/66/66-oneshot.lo: src/66/66-oneshot.c src/include/66/constants.h src/include/66/resolve.h src/include/66/service.h
......@@ -50,16 +50,17 @@ src/lib66/exec/ssexec_parse.o src/lib66/exec/ssexec_parse.lo: src/lib66/exec/sse
src/lib66/exec/ssexec_reconfigure.o src/lib66/exec/ssexec_reconfigure.lo: src/lib66/exec/ssexec_reconfigure.c src/include/66/config.h src/include/66/constants.h src/include/66/graph.h src/include/66/sanitize.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/svc.h
src/lib66/exec/ssexec_reload.o src/lib66/exec/ssexec_reload.lo: src/lib66/exec/ssexec_reload.c src/include/66/config.h src/include/66/enum.h src/include/66/graph.h src/include/66/sanitize.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/svc.h
src/lib66/exec/ssexec_restart.o src/lib66/exec/ssexec_restart.lo: src/lib66/exec/ssexec_restart.c src/include/66/config.h src/include/66/enum.h src/include/66/graph.h src/include/66/sanitize.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/svc.h
src/lib66/exec/ssexec_scandir_create.o src/lib66/exec/ssexec_scandir_create.lo: src/lib66/exec/ssexec_scandir_create.c src/include/66/config.h src/include/66/constants.h src/include/66/enum.h src/include/66/ssexec.h src/include/66/svc.h src/include/66/utils.h
src/lib66/exec/ssexec_scandir_create.o src/lib66/exec/ssexec_scandir_create.lo: src/lib66/exec/ssexec_scandir_create.c src/include/66/config.h src/include/66/constants.h src/include/66/enum.h src/include/66/ssexec.h src/include/66/utils.h
src/lib66/exec/ssexec_scandir_remove.o src/lib66/exec/ssexec_scandir_remove.lo: src/lib66/exec/ssexec_scandir_remove.c src/include/66/constants.h src/include/66/ssexec.h src/include/66/svc.h
src/lib66/exec/ssexec_scandir_signal.o src/lib66/exec/ssexec_scandir_signal.lo: src/lib66/exec/ssexec_scandir_signal.c src/include/66/ssexec.h src/include/66/svc.h
src/lib66/exec/ssexec_scandir_wrapper.o src/lib66/exec/ssexec_scandir_wrapper.lo: src/lib66/exec/ssexec_scandir_wrapper.c src/include/66/config.h src/include/66/ssexec.h
src/lib66/exec/ssexec_scandir_signal.o src/lib66/exec/ssexec_scandir_signal.lo: src/lib66/exec/ssexec_scandir_signal.c src/include/66/ssexec.h src/include/66/svc.h src/include/66/utils.h
src/lib66/exec/ssexec_scandir_wrapper.o src/lib66/exec/ssexec_scandir_wrapper.lo: src/lib66/exec/ssexec_scandir_wrapper.c src/include/66/config.h src/include/66/constants.h src/include/66/ssexec.h src/include/66/utils.h
src/lib66/exec/ssexec_service_admin.o src/lib66/exec/ssexec_service_admin.lo: src/lib66/exec/ssexec_service_admin.c src/include/66/config.h src/include/66/ssexec.h
src/lib66/exec/ssexec_service_resolve.o src/lib66/exec/ssexec_service_resolve.lo: src/lib66/exec/ssexec_service_resolve.c src/include/66/config.h src/include/66/constants.h src/include/66/info.h src/include/66/resolve.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/utils.h
src/lib66/exec/ssexec_service_signal.o src/lib66/exec/ssexec_service_signal.lo: src/lib66/exec/ssexec_service_signal.c src/include/66/constants.h src/include/66/enum.h src/include/66/graph.h src/include/66/resolve.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/svc.h src/include/66/utils.h
src/lib66/exec/ssexec_service_state.o src/lib66/exec/ssexec_service_state.lo: src/lib66/exec/ssexec_service_state.c src/include/66/config.h src/include/66/constants.h src/include/66/info.h src/include/66/resolve.h src/include/66/ssexec.h src/include/66/state.h src/include/66/utils.h
src/lib66/exec/ssexec_service_status.o src/lib66/exec/ssexec_service_status.lo: src/lib66/exec/ssexec_service_status.c src/include/66/config.h src/include/66/constants.h src/include/66/enum.h src/include/66/environ.h src/include/66/graph.h src/include/66/info.h src/include/66/resolve.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/tree.h src/include/66/utils.h
src/lib66/exec/ssexec_service_wrapper.o src/lib66/exec/ssexec_service_wrapper.lo: src/lib66/exec/ssexec_service_wrapper.c src/include/66/config.h src/include/66/ssexec.h
src/lib66/exec/ssexec_shutdown_wrapper.o src/lib66/exec/ssexec_shutdown_wrapper.lo: src/lib66/exec/ssexec_shutdown_wrapper.c src/include/66/config.h src/include/66/ssexec.h
src/lib66/exec/ssexec_start.o src/lib66/exec/ssexec_start.lo: src/lib66/exec/ssexec_start.c src/include/66/config.h src/include/66/enum.h src/include/66/graph.h src/include/66/sanitize.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/svc.h
src/lib66/exec/ssexec_stop.o src/lib66/exec/ssexec_stop.lo: src/lib66/exec/ssexec_stop.c src/include/66/config.h src/include/66/graph.h src/include/66/service.h src/include/66/ssexec.h src/include/66/state.h src/include/66/svc.h
src/lib66/exec/ssexec_tree_admin.o src/lib66/exec/ssexec_tree_admin.lo: src/lib66/exec/ssexec_tree_admin.c src/include/66/config.h src/include/66/constants.h src/include/66/enum.h src/include/66/graph.h src/include/66/resolve.h src/include/66/sanitize.h src/include/66/service.h src/include/66/state.h src/include/66/tree.h src/include/66/utils.h
......@@ -165,6 +166,7 @@ src/lib66/service/service_resolve_write.o src/lib66/service/service_resolve_writ
src/lib66/service/service_resolve_write_cdb.o src/lib66/service/service_resolve_write_cdb.lo: src/lib66/service/service_resolve_write_cdb.c src/include/66/resolve.h src/include/66/service.h
src/lib66/shutdown/hpr_shutdown.o src/lib66/shutdown/hpr_shutdown.lo: src/lib66/shutdown/hpr_shutdown.c src/include/66/hpr.h
src/lib66/shutdown/hpr_wall.o src/lib66/shutdown/hpr_wall.lo: src/lib66/shutdown/hpr_wall.c src/include/66/hpr.h
src/lib66/shutdown/hpr_wallv.o src/lib66/shutdown/hpr_wallv.lo: src/lib66/shutdown/hpr_wallv.c src/include/66/hpr.h
src/lib66/state/state_check.o src/lib66/state/state_check.lo: src/lib66/state/state_check.c src/include/66/constants.h src/include/66/resolve.h src/include/66/state.h
src/lib66/state/state_get_flags.o src/lib66/state/state_get_flags.lo: src/lib66/state/state_get_flags.c src/include/66/state.h
src/lib66/state/state_messenger.o src/lib66/state/state_messenger.lo: src/lib66/state/state_messenger.c src/include/66/state.h
......@@ -260,9 +262,9 @@ src/lib66/write/write_uint.o src/lib66/write/write_uint.lo: src/lib66/write/writ
execl-envfile: EXTRA_LIBS := -loblibs -lexecline -lskarnet
execl-envfile: src/extra-tools/execl-envfile.o ${LIBEXECLINE}
ifeq ($(strip $(STATIC_LIBS_ARE_PIC)),)
lib66.a.xyzzy: src/lib66/enum/enum.o src/lib66/environ/env_append_version.o src/lib66/environ/env_check_version.o src/lib66/environ/env_clean_with_comment.o src/lib66/environ/env_compute.o src/lib66/environ/env_find_current_version.o src/lib66/environ/env_import_version_file.o src/lib66/environ/env_make_symlink.o src/lib66/environ/env_prepare_for_write.o src/lib66/environ/env_resolve_conf.o src/lib66/exec/ssexec_boot.o src/lib66/exec/ssexec_copy.o src/lib66/exec/ssexec_disable.o src/lib66/exec/ssexec_enable.o src/lib66/exec/ssexec_env.o src/lib66/exec/ssexec_free.o src/lib66/exec/ssexec_help.o src/lib66/exec/ssexec_init.o src/lib66/exec/ssexec_parse.o src/lib66/exec/ssexec_reconfigure.o src/lib66/exec/ssexec_reload.o src/lib66/exec/ssexec_restart.o src/lib66/exec/ssexec_scandir_create.o src/lib66/exec/ssexec_scandir_remove.o src/lib66/exec/ssexec_scandir_signal.o src/lib66/exec/ssexec_scandir_wrapper.o src/lib66/exec/ssexec_service_admin.o src/lib66/exec/ssexec_service_resolve.o src/lib66/exec/ssexec_service_signal.o src/lib66/exec/ssexec_service_state.o src/lib66/exec/ssexec_service_status.o src/lib66/exec/ssexec_service_wrapper.o src/lib66/exec/ssexec_start.o src/lib66/exec/ssexec_stop.o src/lib66/exec/ssexec_tree_admin.o src/lib66/exec/ssexec_tree_resolve.o src/lib66/exec/ssexec_tree_signal.o src/lib66/exec/ssexec_tree_status.o src/lib66/exec/ssexec_tree_wrapper.o src/lib66/graph/graph_build_service.o src/lib66/graph/graph_build_tree.o src/lib66/graph/graph_compute_dependencies.o src/lib66/graph/graph_remove_deps.o src/lib66/info/info_display_field_name.o src/lib66/info/info_display_list.o src/lib66/info/info_display_nline.o src/lib66/info/info_field_align.o src/lib66/info/info_getcols_fd.o src/lib66/info/info_graph_display.o src/lib66/info/info_graph_display_service.o src/lib66/info/info_graph_display_tree.o src/lib66/info/info_graph_init.o src/lib66/info/info_length_from_wchar.o src/lib66/info/info_walk.o src/lib66/instance/instance_check.o src/lib66/instance/instance_create.o src/lib66/instance/instance_splitname.o src/lib66/instance/instance_splitname_to_char.o src/lib66/module/get_list.o src/lib66/module/parse_module.o src/lib66/module/parse_module_check_dir.o src/lib66/module/regex_configure.o src/lib66/module/regex_get_file_name.o src/lib66/module/regex_get_regex.o src/lib66/module/regex_get_replace.o src/lib66/module/regex_rename.o src/lib66/module/regex_replace.o src/lib66/parse/parse_clean_line.o src/lib66/parse/parse_clean_list.o src/lib66/parse/parse_clean_quotes.o src/lib66/parse/parse_clean_runas.o src/lib66/parse/parse_compute_list.o src/lib66/parse/parse_compute_resolve.o src/lib66/parse/parse_contents.o src/lib66/parse/parse_dependencies.o src/lib66/parse/parse_error.o src/lib66/parse/parse_frontend.o src/lib66/parse/parse_line_g.o src/lib66/parse/parse_mandatory.o src/lib66/parse/parse_parentheses.o src/lib66/parse/parse_section.o src/lib66/parse/parse_service.o src/lib66/parse/parse_split_from_section.o src/lib66/parse/parse_store_environ.o src/lib66/parse/parse_store_g.o src/lib66/parse/parse_store_logger.o src/lib66/parse/parse_store_main.o src/lib66/parse/parse_store_regex.o src/lib66/parse/parse_store_start_stop.o src/lib66/resolve/resolve_add_cdb.o src/lib66/resolve/resolve_add_cdb_uint.o src/lib66/resolve/resolve_add_string.o src/lib66/resolve/resolve_check.o src/lib66/resolve/resolve_check_g.o src/lib66/resolve/resolve_find_cdb.o src/lib66/resolve/resolve_free.o src/lib66/resolve/resolve_get_field_tosa.o src/lib66/resolve/resolve_get_field_tosa_g.o src/lib66/resolve/resolve_init.o src/lib66/resolve/resolve_modify_field.o src/lib66/resolve/resolve_modify_field_g.o src/lib66/resolve/resolve_read.o src/lib66/resolve/resolve_read_cdb.o src/lib66/resolve/resolve_read_g.o src/lib66/resolve/resolve_remove.o src/lib66/resolve/resolve_remove_g.o src/lib66/resolve/resolve_set_struct.o src/lib66/resolve/resolve_write.o src/lib66/resolve/resolve_write_cdb.o src/lib66/resolve/resolve_write_g.o src/lib66/sanitize/sanitize_fdholder.o src/lib66/sanitize/sanitize_graph.o src/lib66/sanitize/sanitize_init.o src/lib66/sanitize/sanitize_livestate.o src/lib66/sanitize/sanitize_scandir.o src/lib66/sanitize/sanitize_source.o src/lib66/sanitize/sanitize_system.o src/lib66/service/service_cmp_basedir.o src/lib66/service/service_enable_disable.o src/lib66/service/service_endof_dir.o src/lib66/service/service_frontend_path.o src/lib66/service/service_frontend_src.o src/lib66/service/service_graph_build.o src/lib66/service/service_graph_collect.o src/lib66/service/service_graph_g.o src/lib66/service/service_is_g.o src/lib66/service/service_resolve_array_free.o src/lib66/service/service_resolve_array_search.o src/lib66/service/service_resolve_copy.o src/lib66/service/service_resolve_get_field_tosa.o src/lib66/service/service_resolve_modify_field.o src/lib66/service/service_resolve_read_cdb.o src/lib66/service/service_resolve_write.o src/lib66/service/service_resolve_write_cdb.o src/lib66/shutdown/hpr_shutdown.o src/lib66/shutdown/hpr_wall.o src/lib66/state/state_check.o src/lib66/state/state_get_flags.o src/lib66/state/state_messenger.o src/lib66/state/state_pack.o src/lib66/state/state_read.o src/lib66/state/state_rmfile.o src/lib66/state/state_set_flag.o src/lib66/state/state_unpack.o src/lib66/state/state_write.o src/lib66/svc/svc_scandir_ok.o src/lib66/svc/svc_scandir_send.o src/lib66/svc/svc_send.o src/lib66/svc/svc_send_wait.o src/lib66/svc/svc_unsupervise.o src/lib66/tree/tree_find_current.o src/lib66/tree/tree_get_permissions.o src/lib66/tree/tree_iscurrent.o src/lib66/tree/tree_isenabled.o src/lib66/tree/tree_isinitialized.o src/lib66/tree/tree_issupervised.o src/lib66/tree/tree_isvalid.o src/lib66/tree/tree_ongroups.o src/lib66/tree/tree_resolve_array_search.o src/lib66/tree/tree_resolve_copy.o src/lib66/tree/tree_resolve_get_field_tosa.o src/lib66/tree/tree_resolve_master_copy.o src/lib66/tree/tree_resolve_master_create.o src/lib66/tree/tree_resolve_master_get_field_tosa.o src/lib66/tree/tree_resolve_master_modify_field.o src/lib66/tree/tree_resolve_master_read_cdb.o src/lib66/tree/tree_resolve_master_write_cdb.o src/lib66/tree/tree_resolve_modify_field.o src/lib66/tree/tree_resolve_read_cdb.o src/lib66/tree/tree_resolve_write_cdb.o src/lib66/tree/tree_seed_file_isvalid.o src/lib66/tree/tree_seed_free.o src/lib66/tree/tree_seed_get_group_permissions.o src/lib66/tree/tree_seed_get_key.o src/lib66/tree/tree_seed_isvalid.o src/lib66/tree/tree_seed_parse_file.o src/lib66/tree/tree_seed_resolve_path.o src/lib66/tree/tree_seed_setseed.o src/lib66/tree/tree_service_add.o src/lib66/tree/tree_service_remove.o src/lib66/tree/tree_sethome.o src/lib66/tree/tree_switch_current.o src/lib66/utils/get_userhome.o src/lib66/utils/module_in_cmdline.o src/lib66/utils/module_path.o src/lib66/utils/module_search_service.o src/lib66/utils/name_isvalid.o src/lib66/utils/read_svfile.o src/lib66/utils/set_livedir.o src/lib66/utils/set_livescan.o src/lib66/utils/set_livestate.o src/lib66/utils/set_ownerhome.o src/lib66/utils/set_ownersysdir.o src/lib66/utils/yourgid.o src/lib66/utils/youruid.o src/lib66/write/write_classic.o src/lib66/write/write_common.o src/lib66/write/write_environ.o src/lib66/write/write_execute_scripts.o src/lib66/write/write_logger.o src/lib66/write/write_oneshot.o src/lib66/write/write_service.o src/lib66/write/write_uint.o
lib66.a.xyzzy: src/lib66/enum/enum.o src/lib66/environ/env_append_version.o src/lib66/environ/env_check_version.o src/lib66/environ/env_clean_with_comment.o src/lib66/environ/env_compute.o src/lib66/environ/env_find_current_version.o src/lib66/environ/env_import_version_file.o src/lib66/environ/env_make_symlink.o src/lib66/environ/env_prepare_for_write.o src/lib66/environ/env_resolve_conf.o src/lib66/exec/ssexec_boot.o src/lib66/exec/ssexec_copy.o src/lib66/exec/ssexec_disable.o src/lib66/exec/ssexec_enable.o src/lib66/exec/ssexec_env.o src/lib66/exec/ssexec_free.o src/lib66/exec/ssexec_help.o src/lib66/exec/ssexec_init.o src/lib66/exec/ssexec_parse.o src/lib66/exec/ssexec_reconfigure.o src/lib66/exec/ssexec_reload.o src/lib66/exec/ssexec_restart.o src/lib66/exec/ssexec_scandir_create.o src/lib66/exec/ssexec_scandir_remove.o src/lib66/exec/ssexec_scandir_signal.o src/lib66/exec/ssexec_scandir_wrapper.o src/lib66/exec/ssexec_service_admin.o src/lib66/exec/ssexec_service_resolve.o src/lib66/exec/ssexec_service_signal.o src/lib66/exec/ssexec_service_state.o src/lib66/exec/ssexec_service_status.o src/lib66/exec/ssexec_service_wrapper.o src/lib66/exec/ssexec_shutdown_wrapper.o src/lib66/exec/ssexec_start.o src/lib66/exec/ssexec_stop.o src/lib66/exec/ssexec_tree_admin.o src/lib66/exec/ssexec_tree_resolve.o src/lib66/exec/ssexec_tree_signal.o src/lib66/exec/ssexec_tree_status.o src/lib66/exec/ssexec_tree_wrapper.o src/lib66/graph/graph_build_service.o src/lib66/graph/graph_build_tree.o src/lib66/graph/graph_compute_dependencies.o src/lib66/graph/graph_remove_deps.o src/lib66/info/info_display_field_name.o src/lib66/info/info_display_list.o src/lib66/info/info_display_nline.o src/lib66/info/info_field_align.o src/lib66/info/info_getcols_fd.o src/lib66/info/info_graph_display.o src/lib66/info/info_graph_display_service.o src/lib66/info/info_graph_display_tree.o src/lib66/info/info_graph_init.o src/lib66/info/info_length_from_wchar.o src/lib66/info/info_walk.o src/lib66/instance/instance_check.o src/lib66/instance/instance_create.o src/lib66/instance/instance_splitname.o src/lib66/instance/instance_splitname_to_char.o src/lib66/module/get_list.o src/lib66/module/parse_module.o src/lib66/module/parse_module_check_dir.o src/lib66/module/regex_configure.o src/lib66/module/regex_get_file_name.o src/lib66/module/regex_get_regex.o src/lib66/module/regex_get_replace.o src/lib66/module/regex_rename.o src/lib66/module/regex_replace.o src/lib66/parse/parse_clean_line.o src/lib66/parse/parse_clean_list.o src/lib66/parse/parse_clean_quotes.o src/lib66/parse/parse_clean_runas.o src/lib66/parse/parse_compute_list.o src/lib66/parse/parse_compute_resolve.o src/lib66/parse/parse_contents.o src/lib66/parse/parse_dependencies.o src/lib66/parse/parse_error.o src/lib66/parse/parse_frontend.o src/lib66/parse/parse_line_g.o src/lib66/parse/parse_mandatory.o src/lib66/parse/parse_parentheses.o src/lib66/parse/parse_section.o src/lib66/parse/parse_service.o src/lib66/parse/parse_split_from_section.o src/lib66/parse/parse_store_environ.o src/lib66/parse/parse_store_g.o src/lib66/parse/parse_store_logger.o src/lib66/parse/parse_store_main.o src/lib66/parse/parse_store_regex.o src/lib66/parse/parse_store_start_stop.o src/lib66/resolve/resolve_add_cdb.o src/lib66/resolve/resolve_add_cdb_uint.o src/lib66/resolve/resolve_add_string.o src/lib66/resolve/resolve_check.o src/lib66/resolve/resolve_check_g.o src/lib66/resolve/resolve_find_cdb.o src/lib66/resolve/resolve_free.o src/lib66/resolve/resolve_get_field_tosa.o src/lib66/resolve/resolve_get_field_tosa_g.o src/lib66/resolve/resolve_init.o src/lib66/resolve/resolve_modify_field.o src/lib66/resolve/resolve_modify_field_g.o src/lib66/resolve/resolve_read.o src/lib66/resolve/resolve_read_cdb.o src/lib66/resolve/resolve_read_g.o src/lib66/resolve/resolve_remove.o src/lib66/resolve/resolve_remove_g.o src/lib66/resolve/resolve_set_struct.o src/lib66/resolve/resolve_write.o src/lib66/resolve/resolve_write_cdb.o src/lib66/resolve/resolve_write_g.o src/lib66/sanitize/sanitize_fdholder.o src/lib66/sanitize/sanitize_graph.o src/lib66/sanitize/sanitize_init.o src/lib66/sanitize/sanitize_livestate.o src/lib66/sanitize/sanitize_scandir.o src/lib66/sanitize/sanitize_source.o src/lib66/sanitize/sanitize_system.o src/lib66/service/service_cmp_basedir.o src/lib66/service/service_enable_disable.o src/lib66/service/service_endof_dir.o src/lib66/service/service_frontend_path.o src/lib66/service/service_frontend_src.o src/lib66/service/service_graph_build.o src/lib66/service/service_graph_collect.o src/lib66/service/service_graph_g.o src/lib66/service/service_is_g.o src/lib66/service/service_resolve_array_free.o src/lib66/service/service_resolve_array_search.o src/lib66/service/service_resolve_copy.o src/lib66/service/service_resolve_get_field_tosa.o src/lib66/service/service_resolve_modify_field.o src/lib66/service/service_resolve_read_cdb.o src/lib66/service/service_resolve_write.o src/lib66/service/service_resolve_write_cdb.o src/lib66/shutdown/hpr_shutdown.o src/lib66/shutdown/hpr_wall.o src/lib66/shutdown/hpr_wallv.o src/lib66/state/state_check.o src/lib66/state/state_get_flags.o src/lib66/state/state_messenger.o src/lib66/state/state_pack.o src/lib66/state/state_read.o src/lib66/state/state_rmfile.o src/lib66/state/state_set_flag.o src/lib66/state/state_unpack.o src/lib66/state/state_write.o src/lib66/svc/svc_scandir_ok.o src/lib66/svc/svc_scandir_send.o src/lib66/svc/svc_send.o src/lib66/svc/svc_send_wait.o src/lib66/svc/svc_unsupervise.o src/lib66/tree/tree_find_current.o src/lib66/tree/tree_get_permissions.o src/lib66/tree/tree_iscurrent.o src/lib66/tree/tree_isenabled.o src/lib66/tree/tree_isinitialized.o src/lib66/tree/tree_issupervised.o src/lib66/tree/tree_isvalid.o src/lib66/tree/tree_ongroups.o src/lib66/tree/tree_resolve_array_search.o src/lib66/tree/tree_resolve_copy.o src/lib66/tree/tree_resolve_get_field_tosa.o src/lib66/tree/tree_resolve_master_copy.o src/lib66/tree/tree_resolve_master_create.o src/lib66/tree/tree_resolve_master_get_field_tosa.o src/lib66/tree/tree_resolve_master_modify_field.o src/lib66/tree/tree_resolve_master_read_cdb.o src/lib66/tree/tree_resolve_master_write_cdb.o src/lib66/tree/tree_resolve_modify_field.o src/lib66/tree/tree_resolve_read_cdb.o src/lib66/tree/tree_resolve_write_cdb.o src/lib66/tree/tree_seed_file_isvalid.o src/lib66/tree/tree_seed_free.o src/lib66/tree/tree_seed_get_group_permissions.o src/lib66/tree/tree_seed_get_key.o src/lib66/tree/tree_seed_isvalid.o src/lib66/tree/tree_seed_parse_file.o src/lib66/tree/tree_seed_resolve_path.o src/lib66/tree/tree_seed_setseed.o src/lib66/tree/tree_service_add.o src/lib66/tree/tree_service_remove.o src/lib66/tree/tree_sethome.o src/lib66/tree/tree_switch_current.o src/lib66/utils/get_userhome.o src/lib66/utils/module_in_cmdline.o src/lib66/utils/module_path.o src/lib66/utils/module_search_service.o src/lib66/utils/name_isvalid.o src/lib66/utils/read_svfile.o src/lib66/utils/set_livedir.o src/lib66/utils/set_livescan.o src/lib66/utils/set_livestate.o src/lib66/utils/set_ownerhome.o src/lib66/utils/set_ownersysdir.o src/lib66/utils/yourgid.o src/lib66/utils/youruid.o src/lib66/write/write_classic.o src/lib66/write/write_common.o src/lib66/write/write_environ.o src/lib66/write/write_execute_scripts.o src/lib66/write/write_logger.o src/lib66/write/write_oneshot.o src/lib66/write/write_service.o src/lib66/write/write_uint.o
else
lib66.a.xyzzy: src/lib66/enum/enum.lo src/lib66/environ/env_append_version.lo src/lib66/environ/env_check_version.lo src/lib66/environ/env_clean_with_comment.lo src/lib66/environ/env_compute.lo src/lib66/environ/env_find_current_version.lo src/lib66/environ/env_import_version_file.lo src/lib66/environ/env_make_symlink.lo src/lib66/environ/env_prepare_for_write.lo src/lib66/environ/env_resolve_conf.lo src/lib66/exec/ssexec_boot.lo src/lib66/exec/ssexec_copy.lo src/lib66/exec/ssexec_disable.lo src/lib66/exec/ssexec_enable.lo src/lib66/exec/ssexec_env.lo src/lib66/exec/ssexec_free.lo src/lib66/exec/ssexec_help.lo src/lib66/exec/ssexec_init.lo src/lib66/exec/ssexec_parse.lo src/lib66/exec/ssexec_reconfigure.lo src/lib66/exec/ssexec_reload.lo src/lib66/exec/ssexec_restart.lo src/lib66/exec/ssexec_scandir_create.lo src/lib66/exec/ssexec_scandir_remove.lo src/lib66/exec/ssexec_scandir_signal.lo src/lib66/exec/ssexec_scandir_wrapper.lo src/lib66/exec/ssexec_service_admin.lo src/lib66/exec/ssexec_service_resolve.lo src/lib66/exec/ssexec_service_signal.lo src/lib66/exec/ssexec_service_state.lo src/lib66/exec/ssexec_service_status.lo src/lib66/exec/ssexec_service_wrapper.lo src/lib66/exec/ssexec_start.lo src/lib66/exec/ssexec_stop.lo src/lib66/exec/ssexec_tree_admin.lo src/lib66/exec/ssexec_tree_resolve.lo src/lib66/exec/ssexec_tree_signal.lo src/lib66/exec/ssexec_tree_status.lo src/lib66/exec/ssexec_tree_wrapper.lo src/lib66/graph/graph_build_service.lo src/lib66/graph/graph_build_tree.lo src/lib66/graph/graph_compute_dependencies.lo src/lib66/graph/graph_remove_deps.lo src/lib66/info/info_display_field_name.lo src/lib66/info/info_display_list.lo src/lib66/info/info_display_nline.lo src/lib66/info/info_field_align.lo src/lib66/info/info_getcols_fd.lo src/lib66/info/info_graph_display.lo src/lib66/info/info_graph_display_service.lo src/lib66/info/info_graph_display_tree.lo src/lib66/info/info_graph_init.lo src/lib66/info/info_length_from_wchar.lo src/lib66/info/info_walk.lo src/lib66/instance/instance_check.lo src/lib66/instance/instance_create.lo src/lib66/instance/instance_splitname.lo src/lib66/instance/instance_splitname_to_char.lo src/lib66/module/get_list.lo src/lib66/module/parse_module.lo src/lib66/module/parse_module_check_dir.lo src/lib66/module/regex_configure.lo src/lib66/module/regex_get_file_name.lo src/lib66/module/regex_get_regex.lo src/lib66/module/regex_get_replace.lo src/lib66/module/regex_rename.lo src/lib66/module/regex_replace.lo src/lib66/parse/parse_clean_line.lo src/lib66/parse/parse_clean_list.lo src/lib66/parse/parse_clean_quotes.lo src/lib66/parse/parse_clean_runas.lo src/lib66/parse/parse_compute_list.lo src/lib66/parse/parse_compute_resolve.lo src/lib66/parse/parse_contents.lo src/lib66/parse/parse_dependencies.lo src/lib66/parse/parse_error.lo src/lib66/parse/parse_frontend.lo src/lib66/parse/parse_line_g.lo src/lib66/parse/parse_mandatory.lo src/lib66/parse/parse_parentheses.lo src/lib66/parse/parse_section.lo src/lib66/parse/parse_service.lo src/lib66/parse/parse_split_from_section.lo src/lib66/parse/parse_store_environ.lo src/lib66/parse/parse_store_g.lo src/lib66/parse/parse_store_logger.lo src/lib66/parse/parse_store_main.lo src/lib66/parse/parse_store_regex.lo src/lib66/parse/parse_store_start_stop.lo src/lib66/resolve/resolve_add_cdb.lo src/lib66/resolve/resolve_add_cdb_uint.lo src/lib66/resolve/resolve_add_string.lo src/lib66/resolve/resolve_check.lo src/lib66/resolve/resolve_check_g.lo src/lib66/resolve/resolve_find_cdb.lo src/lib66/resolve/resolve_free.lo src/lib66/resolve/resolve_get_field_tosa.lo src/lib66/resolve/resolve_get_field_tosa_g.lo src/lib66/resolve/resolve_init.lo src/lib66/resolve/resolve_modify_field.lo src/lib66/resolve/resolve_modify_field_g.lo src/lib66/resolve/resolve_read.lo src/lib66/resolve/resolve_read_cdb.lo src/lib66/resolve/resolve_read_g.lo src/lib66/resolve/resolve_remove.lo src/lib66/resolve/resolve_remove_g.lo src/lib66/resolve/resolve_set_struct.lo src/lib66/resolve/resolve_write.lo src/lib66/resolve/resolve_write_cdb.lo src/lib66/resolve/resolve_write_g.lo src/lib66/sanitize/sanitize_fdholder.lo src/lib66/sanitize/sanitize_graph.lo src/lib66/sanitize/sanitize_init.lo src/lib66/sanitize/sanitize_livestate.lo src/lib66/sanitize/sanitize_scandir.lo src/lib66/sanitize/sanitize_source.lo src/lib66/sanitize/sanitize_system.lo src/lib66/service/service_cmp_basedir.lo src/lib66/service/service_enable_disable.lo src/lib66/service/service_endof_dir.lo src/lib66/service/service_frontend_path.lo src/lib66/service/service_frontend_src.lo src/lib66/service/service_graph_build.lo src/lib66/service/service_graph_collect.lo src/lib66/service/service_graph_g.lo src/lib66/service/service_is_g.lo src/lib66/service/service_resolve_array_free.lo src/lib66/service/service_resolve_array_search.lo src/lib66/service/service_resolve_copy.lo src/lib66/service/service_resolve_get_field_tosa.lo src/lib66/service/service_resolve_modify_field.lo src/lib66/service/service_resolve_read_cdb.lo src/lib66/service/service_resolve_write.lo src/lib66/service/service_resolve_write_cdb.lo src/lib66/shutdown/hpr_shutdown.lo src/lib66/shutdown/hpr_wall.lo src/lib66/state/state_check.lo src/lib66/state/state_get_flags.lo src/lib66/state/state_messenger.lo src/lib66/state/state_pack.lo src/lib66/state/state_read.lo src/lib66/state/state_rmfile.lo src/lib66/state/state_set_flag.lo src/lib66/state/state_unpack.lo src/lib66/state/state_write.lo src/lib66/svc/svc_scandir_ok.lo src/lib66/svc/svc_scandir_send.lo src/lib66/svc/svc_send.lo src/lib66/svc/svc_send_wait.lo src/lib66/svc/svc_unsupervise.lo src/lib66/tree/tree_find_current.lo src/lib66/tree/tree_get_permissions.lo src/lib66/tree/tree_iscurrent.lo src/lib66/tree/tree_isenabled.lo src/lib66/tree/tree_isinitialized.lo src/lib66/tree/tree_issupervised.lo src/lib66/tree/tree_isvalid.lo src/lib66/tree/tree_ongroups.lo src/lib66/tree/tree_resolve_array_search.lo src/lib66/tree/tree_resolve_copy.lo src/lib66/tree/tree_resolve_get_field_tosa.lo src/lib66/tree/tree_resolve_master_copy.lo src/lib66/tree/tree_resolve_master_create.lo src/lib66/tree/tree_resolve_master_get_field_tosa.lo src/lib66/tree/tree_resolve_master_modify_field.lo src/lib66/tree/tree_resolve_master_read_cdb.lo src/lib66/tree/tree_resolve_master_write_cdb.lo src/lib66/tree/tree_resolve_modify_field.lo src/lib66/tree/tree_resolve_read_cdb.lo src/lib66/tree/tree_resolve_write_cdb.lo src/lib66/tree/tree_seed_file_isvalid.lo src/lib66/tree/tree_seed_free.lo src/lib66/tree/tree_seed_get_group_permissions.lo src/lib66/tree/tree_seed_get_key.lo src/lib66/tree/tree_seed_isvalid.lo src/lib66/tree/tree_seed_parse_file.lo src/lib66/tree/tree_seed_resolve_path.lo src/lib66/tree/tree_seed_setseed.lo src/lib66/tree/tree_service_add.lo src/lib66/tree/tree_service_remove.lo src/lib66/tree/tree_sethome.lo src/lib66/tree/tree_switch_current.lo src/lib66/utils/get_userhome.lo src/lib66/utils/module_in_cmdline.lo src/lib66/utils/module_path.lo src/lib66/utils/module_search_service.lo src/lib66/utils/name_isvalid.lo src/lib66/utils/read_svfile.lo src/lib66/utils/set_livedir.lo src/lib66/utils/set_livescan.lo src/lib66/utils/set_livestate.lo src/lib66/utils/set_ownerhome.lo src/lib66/utils/set_ownersysdir.lo src/lib66/utils/yourgid.lo src/lib66/utils/youruid.lo src/lib66/write/write_classic.lo src/lib66/write/write_common.lo src/lib66/write/write_environ.lo src/lib66/write/write_execute_scripts.lo src/lib66/write/write_logger.lo src/lib66/write/write_oneshot.lo src/lib66/write/write_service.lo src/lib66/write/write_uint.lo
lib66.a.xyzzy: src/lib66/enum/enum.lo src/lib66/environ/env_append_version.lo src/lib66/environ/env_check_version.lo src/lib66/environ/env_clean_with_comment.lo src/lib66/environ/env_compute.lo src/lib66/environ/env_find_current_version.lo src/lib66/environ/env_import_version_file.lo src/lib66/environ/env_make_symlink.lo src/lib66/environ/env_prepare_for_write.lo src/lib66/environ/env_resolve_conf.lo src/lib66/exec/ssexec_boot.lo src/lib66/exec/ssexec_copy.lo src/lib66/exec/ssexec_disable.lo src/lib66/exec/ssexec_enable.lo src/lib66/exec/ssexec_env.lo src/lib66/exec/ssexec_free.lo src/lib66/exec/ssexec_help.lo src/lib66/exec/ssexec_init.lo src/lib66/exec/ssexec_parse.lo src/lib66/exec/ssexec_reconfigure.lo src/lib66/exec/ssexec_reload.lo src/lib66/exec/ssexec_restart.lo src/lib66/exec/ssexec_scandir_create.lo src/lib66/exec/ssexec_scandir_remove.lo src/lib66/exec/ssexec_scandir_signal.lo src/lib66/exec/ssexec_scandir_wrapper.lo src/lib66/exec/ssexec_service_admin.lo src/lib66/exec/ssexec_service_resolve.lo src/lib66/exec/ssexec_service_signal.lo src/lib66/exec/ssexec_service_state.lo src/lib66/exec/ssexec_service_status.lo src/lib66/exec/ssexec_service_wrapper.lo src/lib66/exec/ssexec_shutdown_wrapper.lo src/lib66/exec/ssexec_start.lo src/lib66/exec/ssexec_stop.lo src/lib66/exec/ssexec_tree_admin.lo src/lib66/exec/ssexec_tree_resolve.lo src/lib66/exec/ssexec_tree_signal.lo src/lib66/exec/ssexec_tree_status.lo src/lib66/exec/ssexec_tree_wrapper.lo src/lib66/graph/graph_build_service.lo src/lib66/graph/graph_build_tree.lo src/lib66/graph/graph_compute_dependencies.lo src/lib66/graph/graph_remove_deps.lo src/lib66/info/info_display_field_name.lo src/lib66/info/info_display_list.lo src/lib66/info/info_display_nline.lo src/lib66/info/info_field_align.lo src/lib66/info/info_getcols_fd.lo src/lib66/info/info_graph_display.lo src/lib66/info/info_graph_display_service.lo src/lib66/info/info_graph_display_tree.lo src/lib66/info/info_graph_init.lo src/lib66/info/info_length_from_wchar.lo src/lib66/info/info_walk.lo src/lib66/instance/instance_check.lo src/lib66/instance/instance_create.lo src/lib66/instance/instance_splitname.lo src/lib66/instance/instance_splitname_to_char.lo src/lib66/module/get_list.lo src/lib66/module/parse_module.lo src/lib66/module/parse_module_check_dir.lo src/lib66/module/regex_configure.lo src/lib66/module/regex_get_file_name.lo src/lib66/module/regex_get_regex.lo src/lib66/module/regex_get_replace.lo src/lib66/module/regex_rename.lo src/lib66/module/regex_replace.lo src/lib66/parse/parse_clean_line.lo src/lib66/parse/parse_clean_list.lo src/lib66/parse/parse_clean_quotes.lo src/lib66/parse/parse_clean_runas.lo src/lib66/parse/parse_compute_list.lo src/lib66/parse/parse_compute_resolve.lo src/lib66/parse/parse_contents.lo src/lib66/parse/parse_dependencies.lo src/lib66/parse/parse_error.lo src/lib66/parse/parse_frontend.lo src/lib66/parse/parse_line_g.lo src/lib66/parse/parse_mandatory.lo src/lib66/parse/parse_parentheses.lo src/lib66/parse/parse_section.lo src/lib66/parse/parse_service.lo src/lib66/parse/parse_split_from_section.lo src/lib66/parse/parse_store_environ.lo src/lib66/parse/parse_store_g.lo src/lib66/parse/parse_store_logger.lo src/lib66/parse/parse_store_main.lo src/lib66/parse/parse_store_regex.lo src/lib66/parse/parse_store_start_stop.lo src/lib66/resolve/resolve_add_cdb.lo src/lib66/resolve/resolve_add_cdb_uint.lo src/lib66/resolve/resolve_add_string.lo src/lib66/resolve/resolve_check.lo src/lib66/resolve/resolve_check_g.lo src/lib66/resolve/resolve_find_cdb.lo src/lib66/resolve/resolve_free.lo src/lib66/resolve/resolve_get_field_tosa.lo src/lib66/resolve/resolve_get_field_tosa_g.lo src/lib66/resolve/resolve_init.lo src/lib66/resolve/resolve_modify_field.lo src/lib66/resolve/resolve_modify_field_g.lo src/lib66/resolve/resolve_read.lo src/lib66/resolve/resolve_read_cdb.lo src/lib66/resolve/resolve_read_g.lo src/lib66/resolve/resolve_remove.lo src/lib66/resolve/resolve_remove_g.lo src/lib66/resolve/resolve_set_struct.lo src/lib66/resolve/resolve_write.lo src/lib66/resolve/resolve_write_cdb.lo src/lib66/resolve/resolve_write_g.lo src/lib66/sanitize/sanitize_fdholder.lo src/lib66/sanitize/sanitize_graph.lo src/lib66/sanitize/sanitize_init.lo src/lib66/sanitize/sanitize_livestate.lo src/lib66/sanitize/sanitize_scandir.lo src/lib66/sanitize/sanitize_source.lo src/lib66/sanitize/sanitize_system.lo src/lib66/service/service_cmp_basedir.lo src/lib66/service/service_enable_disable.lo src/lib66/service/service_endof_dir.lo src/lib66/service/service_frontend_path.lo src/lib66/service/service_frontend_src.lo src/lib66/service/service_graph_build.lo src/lib66/service/service_graph_collect.lo src/lib66/service/service_graph_g.lo src/lib66/service/service_is_g.lo src/lib66/service/service_resolve_array_free.lo src/lib66/service/service_resolve_array_search.lo src/lib66/service/service_resolve_copy.lo src/lib66/service/service_resolve_get_field_tosa.lo src/lib66/service/service_resolve_modify_field.lo src/lib66/service/service_resolve_read_cdb.lo src/lib66/service/service_resolve_write.lo src/lib66/service/service_resolve_write_cdb.lo src/lib66/shutdown/hpr_shutdown.lo src/lib66/shutdown/hpr_wall.lo src/lib66/shutdown/hpr_wallv.lo src/lib66/state/state_check.lo src/lib66/state/state_get_flags.lo src/lib66/state/state_messenger.lo src/lib66/state/state_pack.lo src/lib66/state/state_read.lo src/lib66/state/state_rmfile.lo src/lib66/state/state_set_flag.lo src/lib66/state/state_unpack.lo src/lib66/state/state_write.lo src/lib66/svc/svc_scandir_ok.lo src/lib66/svc/svc_scandir_send.lo src/lib66/svc/svc_send.lo src/lib66/svc/svc_send_wait.lo src/lib66/svc/svc_unsupervise.lo src/lib66/tree/tree_find_current.lo src/lib66/tree/tree_get_permissions.lo src/lib66/tree/tree_iscurrent.lo src/lib66/tree/tree_isenabled.lo src/lib66/tree/tree_isinitialized.lo src/lib66/tree/tree_issupervised.lo src/lib66/tree/tree_isvalid.lo src/lib66/tree/tree_ongroups.lo src/lib66/tree/tree_resolve_array_search.lo src/lib66/tree/tree_resolve_copy.lo src/lib66/tree/tree_resolve_get_field_tosa.lo src/lib66/tree/tree_resolve_master_copy.lo src/lib66/tree/tree_resolve_master_create.lo src/lib66/tree/tree_resolve_master_get_field_tosa.lo src/lib66/tree/tree_resolve_master_modify_field.lo src/lib66/tree/tree_resolve_master_read_cdb.lo src/lib66/tree/tree_resolve_master_write_cdb.lo src/lib66/tree/tree_resolve_modify_field.lo src/lib66/tree/tree_resolve_read_cdb.lo src/lib66/tree/tree_resolve_write_cdb.lo src/lib66/tree/tree_seed_file_isvalid.lo src/lib66/tree/tree_seed_free.lo src/lib66/tree/tree_seed_get_group_permissions.lo src/lib66/tree/tree_seed_get_key.lo src/lib66/tree/tree_seed_isvalid.lo src/lib66/tree/tree_seed_parse_file.lo src/lib66/tree/tree_seed_resolve_path.lo src/lib66/tree/tree_seed_setseed.lo src/lib66/tree/tree_service_add.lo src/lib66/tree/tree_service_remove.lo src/lib66/tree/tree_sethome.lo src/lib66/tree/tree_switch_current.lo src/lib66/utils/get_userhome.lo src/lib66/utils/module_in_cmdline.lo src/lib66/utils/module_path.lo src/lib66/utils/module_search_service.lo src/lib66/utils/name_isvalid.lo src/lib66/utils/read_svfile.lo src/lib66/utils/set_livedir.lo src/lib66/utils/set_livescan.lo src/lib66/utils/set_livestate.lo src/lib66/utils/set_ownerhome.lo src/lib66/utils/set_ownersysdir.lo src/lib66/utils/yourgid.lo src/lib66/utils/youruid.lo src/lib66/write/write_classic.lo src/lib66/write/write_common.lo src/lib66/write/write_environ.lo src/lib66/write/write_execute_scripts.lo src/lib66/write/write_logger.lo src/lib66/write/write_oneshot.lo src/lib66/write/write_service.lo src/lib66/write/write_uint.lo
endif
lib66.so.xyzzy: EXTRA_LIBS := -loblibs -lskarnet -ls6 -lexecline
lib66.so.xyzzy: src/lib66/enum/enum.lo src/lib66/environ/env_append_version.lo src/lib66/environ/env_check_version.lo src/lib66/environ/env_clean_with_comment.lo src/lib66/environ/env_compute.lo src/lib66/environ/env_find_current_version.lo src/lib66/environ/env_import_version_file.lo src/lib66/environ/env_make_symlink.lo src/lib66/environ/env_prepare_for_write.lo src/lib66/environ/env_resolve_conf.lo src/lib66/exec/ssexec_boot.lo src/lib66/exec/ssexec_copy.lo src/lib66/exec/ssexec_disable.lo src/lib66/exec/ssexec_enable.lo src/lib66/exec/ssexec_env.lo src/lib66/exec/ssexec_free.lo src/lib66/exec/ssexec_help.lo src/lib66/exec/ssexec_init.lo src/lib66/exec/ssexec_parse.lo src/lib66/exec/ssexec_reconfigure.lo src/lib66/exec/ssexec_reload.lo src/lib66/exec/ssexec_restart.lo src/lib66/exec/ssexec_scandir_create.lo src/lib66/exec/ssexec_scandir_remove.lo src/lib66/exec/ssexec_scandir_signal.lo src/lib66/exec/ssexec_scandir_wrapper.lo src/lib66/exec/ssexec_service_admin.lo src/lib66/exec/ssexec_service_resolve.lo src/lib66/exec/ssexec_service_signal.lo src/lib66/exec/ssexec_service_state.lo src/lib66/exec/ssexec_service_status.lo src/lib66/exec/ssexec_service_wrapper.lo src/lib66/exec/ssexec_start.lo src/lib66/exec/ssexec_stop.lo src/lib66/exec/ssexec_tree_admin.lo src/lib66/exec/ssexec_tree_resolve.lo src/lib66/exec/ssexec_tree_signal.lo src/lib66/exec/ssexec_tree_status.lo src/lib66/exec/ssexec_tree_wrapper.lo src/lib66/graph/graph_build_service.lo src/lib66/graph/graph_build_tree.lo src/lib66/graph/graph_compute_dependencies.lo src/lib66/graph/graph_remove_deps.lo src/lib66/info/info_display_field_name.lo src/lib66/info/info_display_list.lo src/lib66/info/info_display_nline.lo src/lib66/info/info_field_align.lo src/lib66/info/info_getcols_fd.lo src/lib66/info/info_graph_display.lo src/lib66/info/info_graph_display_service.lo src/lib66/info/info_graph_display_tree.lo src/lib66/info/info_graph_init.lo src/lib66/info/info_length_from_wchar.lo src/lib66/info/info_walk.lo src/lib66/instance/instance_check.lo src/lib66/instance/instance_create.lo src/lib66/instance/instance_splitname.lo src/lib66/instance/instance_splitname_to_char.lo src/lib66/module/get_list.lo src/lib66/module/parse_module.lo src/lib66/module/parse_module_check_dir.lo src/lib66/module/regex_configure.lo src/lib66/module/regex_get_file_name.lo src/lib66/module/regex_get_regex.lo src/lib66/module/regex_get_replace.lo src/lib66/module/regex_rename.lo src/lib66/module/regex_replace.lo src/lib66/parse/parse_clean_line.lo src/lib66/parse/parse_clean_list.lo src/lib66/parse/parse_clean_quotes.lo src/lib66/parse/parse_clean_runas.lo src/lib66/parse/parse_compute_list.lo src/lib66/parse/parse_compute_resolve.lo src/lib66/parse/parse_contents.lo src/lib66/parse/parse_dependencies.lo src/lib66/parse/parse_error.lo src/lib66/parse/parse_frontend.lo src/lib66/parse/parse_line_g.lo src/lib66/parse/parse_mandatory.lo src/lib66/parse/parse_parentheses.lo src/lib66/parse/parse_section.lo src/lib66/parse/parse_service.lo src/lib66/parse/parse_split_from_section.lo src/lib66/parse/parse_store_environ.lo src/lib66/parse/parse_store_g.lo src/lib66/parse/parse_store_logger.lo src/lib66/parse/parse_store_main.lo src/lib66/parse/parse_store_regex.lo src/lib66/parse/parse_store_start_stop.lo src/lib66/resolve/resolve_add_cdb.lo src/lib66/resolve/resolve_add_cdb_uint.lo src/lib66/resolve/resolve_add_string.lo src/lib66/resolve/resolve_check.lo src/lib66/resolve/resolve_check_g.lo src/lib66/resolve/resolve_find_cdb.lo src/lib66/resolve/resolve_free.lo src/lib66/resolve/resolve_get_field_tosa.lo src/lib66/resolve/resolve_get_field_tosa_g.lo src/lib66/resolve/resolve_init.lo src/lib66/resolve/resolve_modify_field.lo src/lib66/resolve/resolve_modify_field_g.lo src/lib66/resolve/resolve_read.lo src/lib66/resolve/resolve_read_cdb.lo src/lib66/resolve/resolve_read_g.lo src/lib66/resolve/resolve_remove.lo src/lib66/resolve/resolve_remove_g.lo src/lib66/resolve/resolve_set_struct.lo src/lib66/resolve/resolve_write.lo src/lib66/resolve/resolve_write_cdb.lo src/lib66/resolve/resolve_write_g.lo src/lib66/sanitize/sanitize_fdholder.lo src/lib66/sanitize/sanitize_graph.lo src/lib66/sanitize/sanitize_init.lo src/lib66/sanitize/sanitize_livestate.lo src/lib66/sanitize/sanitize_scandir.lo src/lib66/sanitize/sanitize_source.lo src/lib66/sanitize/sanitize_system.lo src/lib66/service/service_cmp_basedir.lo src/lib66/service/service_enable_disable.lo src/lib66/service/service_endof_dir.lo src/lib66/service/service_frontend_path.lo src/lib66/service/service_frontend_src.lo src/lib66/service/service_graph_build.lo src/lib66/service/service_graph_collect.lo src/lib66/service/service_graph_g.lo src/lib66/service/service_is_g.lo src/lib66/service/service_resolve_array_free.lo src/lib66/service/service_resolve_array_search.lo src/lib66/service/service_resolve_copy.lo src/lib66/service/service_resolve_get_field_tosa.lo src/lib66/service/service_resolve_modify_field.lo src/lib66/service/service_resolve_read_cdb.lo src/lib66/service/service_resolve_write.lo src/lib66/service/service_resolve_write_cdb.lo src/lib66/shutdown/hpr_shutdown.lo src/lib66/shutdown/hpr_wall.lo src/lib66/state/state_check.lo src/lib66/state/state_get_flags.lo src/lib66/state/state_messenger.lo src/lib66/state/state_pack.lo src/lib66/state/state_read.lo src/lib66/state/state_rmfile.lo src/lib66/state/state_set_flag.lo src/lib66/state/state_unpack.lo src/lib66/state/state_write.lo src/lib66/svc/svc_scandir_ok.lo src/lib66/svc/svc_scandir_send.lo src/lib66/svc/svc_send.lo src/lib66/svc/svc_send_wait.lo src/lib66/svc/svc_unsupervise.lo src/lib66/tree/tree_find_current.lo src/lib66/tree/tree_get_permissions.lo src/lib66/tree/tree_iscurrent.lo src/lib66/tree/tree_isenabled.lo src/lib66/tree/tree_isinitialized.lo src/lib66/tree/tree_issupervised.lo src/lib66/tree/tree_isvalid.lo src/lib66/tree/tree_ongroups.lo src/lib66/tree/tree_resolve_array_search.lo src/lib66/tree/tree_resolve_copy.lo src/lib66/tree/tree_resolve_get_field_tosa.lo src/lib66/tree/tree_resolve_master_copy.lo src/lib66/tree/tree_resolve_master_create.lo src/lib66/tree/tree_resolve_master_get_field_tosa.lo src/lib66/tree/tree_resolve_master_modify_field.lo src/lib66/tree/tree_resolve_master_read_cdb.lo src/lib66/tree/tree_resolve_master_write_cdb.lo src/lib66/tree/tree_resolve_modify_field.lo src/lib66/tree/tree_resolve_read_cdb.lo src/lib66/tree/tree_resolve_write_cdb.lo src/lib66/tree/tree_seed_file_isvalid.lo src/lib66/tree/tree_seed_free.lo src/lib66/tree/tree_seed_get_group_permissions.lo src/lib66/tree/tree_seed_get_key.lo src/lib66/tree/tree_seed_isvalid.lo src/lib66/tree/tree_seed_parse_file.lo src/lib66/tree/tree_seed_resolve_path.lo src/lib66/tree/tree_seed_setseed.lo src/lib66/tree/tree_service_add.lo src/lib66/tree/tree_service_remove.lo src/lib66/tree/tree_sethome.lo src/lib66/tree/tree_switch_current.lo src/lib66/utils/get_userhome.lo src/lib66/utils/module_in_cmdline.lo src/lib66/utils/module_path.lo src/lib66/utils/module_search_service.lo src/lib66/utils/name_isvalid.lo src/lib66/utils/read_svfile.lo src/lib66/utils/set_livedir.lo src/lib66/utils/set_livescan.lo src/lib66/utils/set_livestate.lo src/lib66/utils/set_ownerhome.lo src/lib66/utils/set_ownersysdir.lo src/lib66/utils/yourgid.lo src/lib66/utils/youruid.lo src/lib66/write/write_classic.lo src/lib66/write/write_common.lo src/lib66/write/write_environ.lo src/lib66/write/write_execute_scripts.lo src/lib66/write/write_logger.lo src/lib66/write/write_oneshot.lo src/lib66/write/write_service.lo src/lib66/write/write_uint.lo
lib66.so.xyzzy: src/lib66/enum/enum.lo src/lib66/environ/env_append_version.lo src/lib66/environ/env_check_version.lo src/lib66/environ/env_clean_with_comment.lo src/lib66/environ/env_compute.lo src/lib66/environ/env_find_current_version.lo src/lib66/environ/env_import_version_file.lo src/lib66/environ/env_make_symlink.lo src/lib66/environ/env_prepare_for_write.lo src/lib66/environ/env_resolve_conf.lo src/lib66/exec/ssexec_boot.lo src/lib66/exec/ssexec_copy.lo src/lib66/exec/ssexec_disable.lo src/lib66/exec/ssexec_enable.lo src/lib66/exec/ssexec_env.lo src/lib66/exec/ssexec_free.lo src/lib66/exec/ssexec_help.lo src/lib66/exec/ssexec_init.lo src/lib66/exec/ssexec_parse.lo src/lib66/exec/ssexec_reconfigure.lo src/lib66/exec/ssexec_reload.lo src/lib66/exec/ssexec_restart.lo src/lib66/exec/ssexec_scandir_create.lo src/lib66/exec/ssexec_scandir_remove.lo src/lib66/exec/ssexec_scandir_signal.lo src/lib66/exec/ssexec_scandir_wrapper.lo src/lib66/exec/ssexec_service_admin.lo src/lib66/exec/ssexec_service_resolve.lo src/lib66/exec/ssexec_service_signal.lo src/lib66/exec/ssexec_service_state.lo src/lib66/exec/ssexec_service_status.lo src/lib66/exec/ssexec_service_wrapper.lo src/lib66/exec/ssexec_shutdown_wrapper.lo src/lib66/exec/ssexec_start.lo src/lib66/exec/ssexec_stop.lo src/lib66/exec/ssexec_tree_admin.lo src/lib66/exec/ssexec_tree_resolve.lo src/lib66/exec/ssexec_tree_signal.lo src/lib66/exec/ssexec_tree_status.lo src/lib66/exec/ssexec_tree_wrapper.lo src/lib66/graph/graph_build_service.lo src/lib66/graph/graph_build_tree.lo src/lib66/graph/graph_compute_dependencies.lo src/lib66/graph/graph_remove_deps.lo src/lib66/info/info_display_field_name.lo src/lib66/info/info_display_list.lo src/lib66/info/info_display_nline.lo src/lib66/info/info_field_align.lo src/lib66/info/info_getcols_fd.lo src/lib66/info/info_graph_display.lo src/lib66/info/info_graph_display_service.lo src/lib66/info/info_graph_display_tree.lo src/lib66/info/info_graph_init.lo src/lib66/info/info_length_from_wchar.lo src/lib66/info/info_walk.lo src/lib66/instance/instance_check.lo src/lib66/instance/instance_create.lo src/lib66/instance/instance_splitname.lo src/lib66/instance/instance_splitname_to_char.lo src/lib66/module/get_list.lo src/lib66/module/parse_module.lo src/lib66/module/parse_module_check_dir.lo src/lib66/module/regex_configure.lo src/lib66/module/regex_get_file_name.lo src/lib66/module/regex_get_regex.lo src/lib66/module/regex_get_replace.lo src/lib66/module/regex_rename.lo src/lib66/module/regex_replace.lo src/lib66/parse/parse_clean_line.lo src/lib66/parse/parse_clean_list.lo src/lib66/parse/parse_clean_quotes.lo src/lib66/parse/parse_clean_runas.lo src/lib66/parse/parse_compute_list.lo src/lib66/parse/parse_compute_resolve.lo src/lib66/parse/parse_contents.lo src/lib66/parse/parse_dependencies.lo src/lib66/parse/parse_error.lo src/lib66/parse/parse_frontend.lo src/lib66/parse/parse_line_g.lo src/lib66/parse/parse_mandatory.lo src/lib66/parse/parse_parentheses.lo src/lib66/parse/parse_section.lo src/lib66/parse/parse_service.lo src/lib66/parse/parse_split_from_section.lo src/lib66/parse/parse_store_environ.lo src/lib66/parse/parse_store_g.lo src/lib66/parse/parse_store_logger.lo src/lib66/parse/parse_store_main.lo src/lib66/parse/parse_store_regex.lo src/lib66/parse/parse_store_start_stop.lo src/lib66/resolve/resolve_add_cdb.lo src/lib66/resolve/resolve_add_cdb_uint.lo src/lib66/resolve/resolve_add_string.lo src/lib66/resolve/resolve_check.lo src/lib66/resolve/resolve_check_g.lo src/lib66/resolve/resolve_find_cdb.lo src/lib66/resolve/resolve_free.lo src/lib66/resolve/resolve_get_field_tosa.lo src/lib66/resolve/resolve_get_field_tosa_g.lo src/lib66/resolve/resolve_init.lo src/lib66/resolve/resolve_modify_field.lo src/lib66/resolve/resolve_modify_field_g.lo src/lib66/resolve/resolve_read.lo src/lib66/resolve/resolve_read_cdb.lo src/lib66/resolve/resolve_read_g.lo src/lib66/resolve/resolve_remove.lo src/lib66/resolve/resolve_remove_g.lo src/lib66/resolve/resolve_set_struct.lo src/lib66/resolve/resolve_write.lo src/lib66/resolve/resolve_write_cdb.lo src/lib66/resolve/resolve_write_g.lo src/lib66/sanitize/sanitize_fdholder.lo src/lib66/sanitize/sanitize_graph.lo src/lib66/sanitize/sanitize_init.lo src/lib66/sanitize/sanitize_livestate.lo src/lib66/sanitize/sanitize_scandir.lo src/lib66/sanitize/sanitize_source.lo src/lib66/sanitize/sanitize_system.lo src/lib66/service/service_cmp_basedir.lo src/lib66/service/service_enable_disable.lo src/lib66/service/service_endof_dir.lo src/lib66/service/service_frontend_path.lo src/lib66/service/service_frontend_src.lo src/lib66/service/service_graph_build.lo src/lib66/service/service_graph_collect.lo src/lib66/service/service_graph_g.lo src/lib66/service/service_is_g.lo src/lib66/service/service_resolve_array_free.lo src/lib66/service/service_resolve_array_search.lo src/lib66/service/service_resolve_copy.lo src/lib66/service/service_resolve_get_field_tosa.lo src/lib66/service/service_resolve_modify_field.lo src/lib66/service/service_resolve_read_cdb.lo src/lib66/service/service_resolve_write.lo src/lib66/service/service_resolve_write_cdb.lo src/lib66/shutdown/hpr_shutdown.lo src/lib66/shutdown/hpr_wall.lo src/lib66/shutdown/hpr_wallv.lo src/lib66/state/state_check.lo src/lib66/state/state_get_flags.lo src/lib66/state/state_messenger.lo src/lib66/state/state_pack.lo src/lib66/state/state_read.lo src/lib66/state/state_rmfile.lo src/lib66/state/state_set_flag.lo src/lib66/state/state_unpack.lo src/lib66/state/state_write.lo src/lib66/svc/svc_scandir_ok.lo src/lib66/svc/svc_scandir_send.lo src/lib66/svc/svc_send.lo src/lib66/svc/svc_send_wait.lo src/lib66/svc/svc_unsupervise.lo src/lib66/tree/tree_find_current.lo src/lib66/tree/tree_get_permissions.lo src/lib66/tree/tree_iscurrent.lo src/lib66/tree/tree_isenabled.lo src/lib66/tree/tree_isinitialized.lo src/lib66/tree/tree_issupervised.lo src/lib66/tree/tree_isvalid.lo src/lib66/tree/tree_ongroups.lo src/lib66/tree/tree_resolve_array_search.lo src/lib66/tree/tree_resolve_copy.lo src/lib66/tree/tree_resolve_get_field_tosa.lo src/lib66/tree/tree_resolve_master_copy.lo src/lib66/tree/tree_resolve_master_create.lo src/lib66/tree/tree_resolve_master_get_field_tosa.lo src/lib66/tree/tree_resolve_master_modify_field.lo src/lib66/tree/tree_resolve_master_read_cdb.lo src/lib66/tree/tree_resolve_master_write_cdb.lo src/lib66/tree/tree_resolve_modify_field.lo src/lib66/tree/tree_resolve_read_cdb.lo src/lib66/tree/tree_resolve_write_cdb.lo src/lib66/tree/tree_seed_file_isvalid.lo src/lib66/tree/tree_seed_free.lo src/lib66/tree/tree_seed_get_group_permissions.lo src/lib66/tree/tree_seed_get_key.lo src/lib66/tree/tree_seed_isvalid.lo src/lib66/tree/tree_seed_parse_file.lo src/lib66/tree/tree_seed_resolve_path.lo src/lib66/tree/tree_seed_setseed.lo src/lib66/tree/tree_service_add.lo src/lib66/tree/tree_service_remove.lo src/lib66/tree/tree_sethome.lo src/lib66/tree/tree_switch_current.lo src/lib66/utils/get_userhome.lo src/lib66/utils/module_in_cmdline.lo src/lib66/utils/module_path.lo src/lib66/utils/module_search_service.lo src/lib66/utils/name_isvalid.lo src/lib66/utils/read_svfile.lo src/lib66/utils/set_livedir.lo src/lib66/utils/set_livescan.lo src/lib66/utils/set_livestate.lo src/lib66/utils/set_ownerhome.lo src/lib66/utils/set_ownersysdir.lo src/lib66/utils/yourgid.lo src/lib66/utils/youruid.lo src/lib66/write/write_classic.lo src/lib66/write/write_common.lo src/lib66/write/write_environ.lo src/lib66/write/write_execute_scripts.lo src/lib66/write/write_logger.lo src/lib66/write/write_oneshot.lo src/lib66/write/write_service.lo src/lib66/write/write_uint.lo
......@@ -9,13 +9,9 @@
66-oneshot 0755
66-fdholder-filler 0755
execl-envfile 0755
halt 0755
init 0755
init.conf 0644
poweroff 0755
rc.init 0755
rc.init.container 0755
rc.shutdown 0755
rc.shutdown.final 0755
reboot 0755
shutdown 0755
#!@EXECLINE_SHEBANGPREFIX@/execlineb -S0
66-hpr -h $@
#!@EXECLINE_SHEBANGPREFIX@/execlineb -S0
66-hpr -p $@
......@@ -11,10 +11,8 @@ importas -iu LIVE LIVE
# redirfd -w 1 /dev/console
if -n {
if { 66-echo -- "[Initiate db of tree ${TREE}...]" }
if { 66-init -v${VERBOSITY} -l ${LIVE} -t ${TREE} database }
if { 66-echo -- "[Start db services of tree ${TREE}...]" }
66-dbctl -v${VERBOSITY} -l ${LIVE} -t ${TREE} -u
if { 66-echo -- "[Start services of tree ${TREE}...]" }
if { 66 -v${VERBOSITY} -l ${LIVE} tree up ${TREE} }
}
if { 66-echo -- "rc.init: fatal: please see the log at ${LIVE}/log/0/current" }
......
......@@ -12,10 +12,8 @@ importas -iu CONTAINER_HALTCMD
# redirfd -w 1 /dev/console
foreground {
if { 66-echo -- "[Initiate db of tree ${TREE}...]" }
if { 66-init -v${VERBOSITY} -l ${LIVE} -t ${TREE} database }
if { 66-echo -- "[Start db services of tree ${TREE}...]" }
66-dbctl -v${VERBOSITY} -l ${LIVE} -t ${TREE} -u
if { 66-echo -- "[Start services of tree ${TREE}...]" }
66 -v${VERBOSITY} -l ${LIVE} tree up ${TREE} }
}
importas initcode ?
......
......@@ -14,6 +14,6 @@ execl-envfile ${1}
if {
if { 66-echo -- "[Starts rc.shutdown...]" }
66-all -v${VERBOSITY} -l ${LIVE} -t ${TREE} -f down
66 -v${VERBOSITY} -l ${LIVE} tree -f down ${TREE}
}
66-echo -- "[rc.shutdown completed successfully]"
#!@EXECLINE_SHEBANGPREFIX@/execlineb -S0
66-hpr -r $@
#!@BINDIR@/sh
# Copyright (c) 2019-2021 Eric Vidal <eric@obarun.org>
# All rights reserved.
#
# This file is part of Obarun. It is subject to the license terms in
# the LICENSE file found in the top-level directory of this
# distribution.
# This file may not be copied, modified, propagated, or distributed
# except according to the terms contained in the LICENSE file.
PROG="shutdown"
usage () {
cat <<EOF
$PROG [ -h | -p | -r ] time
$PROG <options> time
options :
-h: halt the machine
-p: poweroff the machine
-r: reboot the machine
Time must be one of these formats: [ now | [+]mins | hh:mm ] where:
now : triggers the shutdown sequence immediately.
mins or +mins : relative time; triggers the shutdown sequence after mins minutes.
hh:mm : absolute time; triggers the shutdown sequence when the time hh:mm occurs.
See also 66-shutdown program to more features.
EOF
exit 111
}
die() {
printf "${PROG}:fatal: options must be set first\n" >&1
usage
}
[ -z ${1} ] && die
[ ${1:0:1} != '-' ] && die
66-shutdown "${@}"
......@@ -133,6 +133,18 @@ int main (int argc, char const *const *argv)
}
if (!tain_now_g()) log_warnsys("get current time") ;
size_t livelen = strlen(live) ;
char tlive[livelen + INITCTL_LEN + 1] ;
memcpy(tlive,live,livelen) ;
memcpy(tlive + livelen,INITCTL,INITCTL_LEN) ;
tlive[livelen + INITCTL_LEN] = 0 ;
if (!hpr_send(tlive, "", 0)) {
errno = EPERM ;
log_dieusys(LOG_EXIT_SYS, "talk to shutdownd") ;
}
if (dowtmp)
{
struct utmpx utx =
......
......@@ -284,11 +284,13 @@ int main (int argc, char const *const *argv)
}
if (live && live[0] != '/') log_die(LOG_EXIT_USER,"live: ",live," must be an absolute path") ;
else live = SS_LIVE ;
size_t livelen = strlen(live) ;
char tlive[livelen + INITCTL_LEN + 1] ;
memcpy(tlive,live,livelen) ;
memcpy(tlive + livelen,INITCTL,INITCTL_LEN) ;
tlive[livelen + INITCTL_LEN] = 0 ;
if (geteuid())
{
errno = EPERM ;
......
......@@ -25,6 +25,7 @@
#include <66/utils.h>
#include <66/sanitize.h>
#include <66/tree.h>
#include <66/hpr.h>
void set_treeinfo(ssexec_t *info)
{
......@@ -210,13 +211,7 @@ int main(int argc, char const *const *argv)
argc -= l.ind ; argv += l.ind ;
}
if (!strcmp(argv[0], "version")) {
PROG = "version" ;
log_info(SS_VERSION) ;
return 0 ;
} else if (!strcmp(argv[0], "boot")) {
if (!strcmp(argv[0], "boot")) {
PROG = "boot" ;
nargv[n++] = PROG ;
......@@ -354,6 +349,49 @@ int main(int argc, char const *const *argv)
nargv[n++] = PROG ;
func = &ssexec_scandir_wrapper ;
} else if (!strcmp(argv[0], "poweroff")) {
PROG = "poweroff" ;
nargv[n++] = PROG ;
info.prog = PROG ;
info.help = help_poweroff ;
info.usage = usage_poweroff ;
func = &ssexec_shutdown_wrapper ;
} else if (!strcmp(argv[0], "reboot")) {
PROG = "reboot" ;
nargv[n++] = PROG ;
info.prog = PROG ;
info.help = help_reboot ;
info.usage = usage_reboot ;
func = &ssexec_shutdown_wrapper ;
} else if (!strcmp(argv[0], "halt")) {
PROG = "halt" ;
nargv[n++] = PROG ;
info.prog = PROG ;
info.help = help_halt ;
info.usage = usage_halt ;
func = &ssexec_shutdown_wrapper ;
} else if (!strcmp(argv[0], "wall")) {
PROG = "wall" ;
if (!argv[1])
log_die(LOG_EXIT_USER, "missing message to send") ;
/** message need to be double quoted.
* we don't check that here */
hpr_wall(argv[1]) ;
return 0 ;
} else if (!strcmp(argv[0], "version")) {
PROG = "version" ;
log_info(SS_VERSION) ;
return 0 ;
} else {
PROG = "66" ;
......
......@@ -124,6 +124,8 @@ extern ssexec_func_t ssexec_tree_admin ;
extern ssexec_func_t ssexec_tree_status ;
extern ssexec_func_t ssexec_tree_resolve ;
/** shutdown */
extern ssexec_func_t ssexec_shutdown_wrapper ;
extern void info_help (char const *help,char const *usage) ;
......@@ -231,6 +233,13 @@ extern char const *help_scandir_annihilate ;
extern char const *usage_scandir_zombies ;
extern char const *help_scandir_zombies ;
extern char const *usage_poweroff ;
extern char const *help_poweroff ;
extern char const *usage_reboot ;
extern char const *help_reboot ;
extern char const *usage_halt ;
extern char const *help_halt ;
#define OPTS_SUBSTART "hP"
#define OPTS_SUBSTART_LEN (sizeof OPTS_SUBSTART - 1)
#define OPTS_PARSE "hfFcmCI"
......@@ -259,7 +268,7 @@ extern char const *help_scandir_zombies ;
#define OPTS_INSERVICE_LEN (sizeof OPTS_INSERVICE - 1)
#define OPTS_BOOT "hms:e:d:b:l:"
#define OPTS_BOOT_LEN (sizeof OPTS_BOOT - 1)
#define OPTS_SCANCTL "d:s:e:B"
#define OPTS_SCANCTL "d:s:e:bB"
#define OPTS_SCANCTL_LEN (sizeof OPTS_SCANCTL - 1)
#define OPTS_SCANDIR_WRAPPER "ho:"
#define OPTS_SCANCTL_WRAPPER_LEN (sizeof OPTS_SCANDIR_WRAPPER - 1)
......@@ -271,4 +280,7 @@ extern char const *help_scandir_zombies ;
#define OPTS_SERVICE_ADMIN ""
#define OPTS_SERVICE_ADMIN_LEN (sizeof OPTS_SERVICE_ADMIN - 1)
#define OPTS_SHUTDOWN_WRAPPER "hFfat:m:W"
#define OPTS_SHUTDOWN_WRAPPER_LEN (sizeof OPTS_SHUTDOWN_WRAPPER - 1)
#endif
......@@ -20,6 +20,7 @@ ssexec_service_signal.o
ssexec_service_state.o
ssexec_service_status.o
ssexec_service_wrapper.o
ssexec_shutdown_wrapper.o
ssexec_start.o
ssexec_stop.o
ssexec_tree_admin.o
......
......@@ -528,7 +528,7 @@ char const *help_scandir_remove =
" -h: print this help\n"
;
char const *usage_scandir_start = "66 scandir start [ -h ] [ -d notif ] [ -s rescan ] [ -e environment ] [ -B ]" ;
char const *usage_scandir_start = "66 scandir start [ -h ] [ -d notif ] [ -s rescan ] [ -e environment ] [ -b|B ]" ;
char const *help_scandir_start =
"\nstart a scandir\n"
......@@ -538,6 +538,7 @@ char const *help_scandir_start =
" -d: notify readiness on file descriptor\n"
" -s: scan scandir every milliseconds\n"
" -e: use environment as environment directory\n"
" -b: create scandir (if it not exist yet) for a boot process\n"
" -B: create scandir (if it not exist yet) for a boot process inside a container\n"
;
......@@ -623,3 +624,47 @@ char const *help_scandir_zombies =
" -h: print this help\n"
;
char const *usage_poweroff = "66 poweroff [ -h ] [ -a ] [ -f|F ] [ -m message ] [ -t time ] [ -W ] when" ;
char const *help_poweroff =
"\npoweroff the system\n"
"\n"
"options:\n"
" -h: print this help\n"
" -a: use access control\n"
" -f: sync filesytem and immediately poweroff the system\n"
" -F: do not sync filesytem and immediately poweroff the system\n"
" -m: replace the default message by message\n"
" -t: grace time period between SIGTERM and SIGKILL\n"
" -W: do not send a wall message to users\n"
;
char const *usage_reboot = "66 reboot [ -h ] [ -a ] [ -f|F ] [ -m message ] [ -t time ] [ -W ] when" ;
char const *help_reboot =
"\nreboot the system\n"
"\n"
"options:\n"
" -h: print this help\n"
" -a: use access control\n"
" -f: sync filesytem and immediately reboot the system\n"
" -F: do not sync filesytem and immediately reboot the system\n"
" -m: replace the default message by message\n"
" -t: grace time period between SIGTERM and SIGKILL\n"
" -W: do not send a wall message to users\n"
;
char const *usage_halt = "66 halt [ -h ] [ -a ] [ -f|F ] [ -m message ] [ -t time ] [ -W ] when" ;
char const *help_halt =
"\nhalt the system\n"
"\n"
"options:\n"
" -h: print this help\n"
" -a: use access control\n"
" -f: sync filesytem and immediately halt the system\n"
" -F: do not sync filesytem and immediately halt the system\n"
" -m: replace the default message by message\n"
" -t: grace time period between SIGTERM and SIGKILL\n"
" -W: do not send a wall message to users\n"
;
/*
* ssexec_shutdown_wrapper.c
*
* Copyright (c) 2018-2021 Eric Vidal <eric@obarun.org>
*
* All rights reserved.
*
* This file is part of Obarun. It is subject to the license terms in
* the LICENSE file found in the top-level directory of this
* distribution.
* This file may not be copied, modified, propagated, or distributed
* except according to the terms contained in the LICENSE file./
*/
#include <string.h>
#include <sys/types.h>
#include <oblibs/log.h>
#include <oblibs/string.h>
#include <oblibs/environ.h>
#include <skalibs/sgetopt.h>
#include <skalibs/exec.h>
#include <66/ssexec.h>
#include <66/config.h>
int ssexec_shutdown_wrapper(int argc, char const *const *argv, ssexec_t *info)
{
log_flow() ;
uint8_t acl = 0, force = 0, nowall = 0 ;
char what[strlen(argv[0])] ;
char const *msg = 0 ;
char const *time = 0 ;
char *when = "now" ;
char *command = 0 ;
auto_strings(what, argv[0]) ;
{
subgetopt l = SUBGETOPT_ZERO ;
for (;;) {
int opt = subgetopt_r(argc, argv, OPTS_SHUTDOWN_WRAPPER, &l) ;
if (opt == -1) break ;
switch (opt) {
case 'h' :
info_help(info->help, info->usage) ;
return 0 ;
case 'f' :
force = 1 ;
break ;
case 'F' :
force = 2 ;
break ;
case 'm' :
msg = l.arg ;
break ;
case 'a' :
acl++ ;
break ;
case 't' :
time = l.arg ;
break ;
case 'W' :
nowall++ ;
break ;
default:
log_usage(info->usage, "\n", info->help) ;
}
}
argc -= l.ind ; argv += l.ind ;
}
if (argv[0])
when = (char *) argv[0] ;
if (!strcmp(what, "poweroff")) {
command = "-p" ;
} else if (!strcmp(what, "reboot")) {
command = "-r" ;
} else if (!strcmp(what, "halt")) {
command = "-h" ;
} else
log_die(LOG_EXIT_USER, "invalid shutdown command: ", what) ;
if (force) {
unsigned int nargc = 5 + (force > 1 ? 1 : 0) + (nowall ? 1 : 0) ;
char const *newargv[nargc] ;
unsigned int m = 0 ;
newargv[m++] = SS_BINPREFIX "66-hpr" ;
newargv[m++] = "-f" ;
if (force > 1)
newargv[m++] = "-n" ;
if (nowall)
newargv[m++] = "-W" ;
newargv[m++] = command ;
newargv[m++] = "-l" ;
newargv[m++] = info->live.s ;
newargv[m] = 0 ;
xexec_ae(newargv[0], newargv, (char const *const *) environ) ;
}
unsigned int nargc = 5 + (time ? 2 : 0) + (acl ? 1 : 0) + (msg ? 1 : 0) ;
char const *newargv[nargc] ;
unsigned int m = 0 ;
newargv[m++] = SS_BINPREFIX "66-shutdown" ;
newargv[m++] = command ;
if (time) {
newargv[m++] = "-t" ;
newargv[m++] = time ;
}
if (acl)
newargv[m++] = "-a" ;
newargv[m++] = "-l" ;
newargv[m++] = info->live.s ;
newargv[m++] = when ;
if (msg)
newargv[m++] = msg ;
newargv[m] = 0 ;
xexec_ae(newargv[0], newargv, (char const *const *) environ) ;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment