start_a_child_client(cib_subsystem, NULL); }
sleep(CLIENT_EXIT_WAIT); waitpid(this_subsys->pid, &pid_status, WNOHANG);  if(CL_PID_EXISTS(this_subsys->pid)) { cl_log(LOG_ERR, "Process %s is still active with pid=%d", this_subsys->command, this_subsys->pid); result = I_FAIL; } }
do_cib_control(long long action,	       enum crmd_fsa_state cur_state,	       enum crmd_fsa_input current_input,	       void *data){	enum crmd_fsa_input result = I_NULL;		FNIN();		if(action & A_CIB_STOP || action & A_CIB_RESTART) {		if(cib_subsystem != NULL) {			clear_bit_inplace(&fsa_input_register,R_CIB_CONNECTED);						// make sure we do a shutdown			if(cib_subsystem->command != NULL)				ha_free(cib_subsystem->command);			cib_subsystem->command = ha_strdup("cib/cib -k");						start_a_child_client(cib_subsystem, NULL);		} // else we havent been started yet	}		if(action & A_CIB_START || action & A_CIB_RESTART) {		if(cib_subsystem == NULL) {			cib_subsystem = (struct crm_subsystem_s*)				ha_malloc(sizeof(struct crm_subsystem_s));						cib_subsystem->pid = 0;				cib_subsystem->respawn = 1;				cib_subsystem->command = NULL;			cib_subsystem->u_runas = -1;	 			cib_subsystem->g_runas = -1;	 			cib_subsystem->path = ha_strdup(BIN_DIR);			}				// make sure we always do a (re)start here		if(cib_subsystem->command != NULL)			ha_free(cib_subsystem->command);		cib_subsystem->command = ha_strdup("cib/cib -r");			if(start_a_child_client(cib_subsystem, NULL) == FALSE)			result = I_FAIL;	}		FNRET(result);}