return run_command(centry, "-r", TRUE);
if (access(centry->path, F_OK|X_OK) != 0) { cl_perror("Cannot (access) exec %s", centry->path); return FALSE; }  s_res = stat(centry->command, &buf); if(s_res != 0) { cl_perror("Cannot (stat) exec %s", centry->command); return FALSE; }    switch(pid=fork()) {  case -1: cl_log(LOG_ERR, "start_a_child_client: Cannot fork."); return FALSE;  default:	 centry->pid = pid; return TRUE;  case 0:		 break; }   cl_make_normaltime(); setpgid(0,0);   if (centry->shortrcount > 0) { alarm(0); sleep(1); }  cmd_with_options[size] = 0;  cl_log(LOG_INFO, "Executing \"%s\" (pid %d)", centry->command, (int) getpid());  if(CL_SIGINTERRUPT(SIGALRM, 0) < 0) { cl_perror("Cannot set interrupt for child process %s", centry->command); }else{ const char *	devnull = "/dev/null"; unsigned int	j; struct rlimit		oflimits; CL_SIGNAL(SIGCHLD, SIG_DFL); alarm(0); CL_IGNORE_SIG(SIGALRM);   getrlimit(RLIMIT_NOFILE, &oflimits); for (j=0; j < oflimits.rlim_cur; ++j) { close(j); } (void)devnull;  (void)open(devnull, O_RDONLY);	 (void)open(devnull, O_WRONLY);	 (void)open(devnull, O_WRONLY);	  (void)execl("/bin/sh", "sh", "-c", centry->command, (const char *)NULL);   cl_perror("Cannot exec %s", centry->command); }  exit(100);   return TRUE;
start_subsystem(struct crm_subsystem_s*	centry){	cl_log(LOG_INFO, "Starting sub-system \"%s\"", centry->command);	if (centry->pid != 0) {		cl_log(LOG_ERR, "OOPS! client %s already running as pid %d"		       ,	centry->command, (int) centry->pid);	}	return run_command(centry, "-r", TRUE);}