return FALSE; 
 /* starting a started X is not an error */ return TRUE; 
start_subsystem(struct crm_subsystem_s*	the_subsystem){	pid_t       pid;	struct stat buf;	int         s_res;	crm_info("Starting sub-system \"%s\"", the_subsystem->command);	if (the_subsystem->pid > 0) {		crm_err("Client %s already running as pid %d",			the_subsystem->command, (int) the_subsystem->pid);		return FALSE;	}	/*	 * We want to ensure that the exec will succeed before	 * we bother forking.	 */	if (access(the_subsystem->path, F_OK|X_OK) != 0) {		cl_perror("Cannot (access) exec %s", the_subsystem->path);		return FALSE;	}	s_res = stat(the_subsystem->command, &buf);	if(s_res != 0) {		cl_perror("Cannot (stat) exec %s", the_subsystem->command);		return FALSE;	}		/* We need to fork so we can make child procs not real time */	switch(pid=fork()) {		case -1:			crm_err("Cannot fork.");			return FALSE;		default:	/* Parent */			the_subsystem->pid = pid;			return TRUE;		case 0:		/* Child */			break;	}	crm_info("Executing \"%s\" (pid %d)",		 the_subsystem->command, (int) getpid());	unsigned int	j;	struct rlimit	oflimits;	const char 	*devnull = "/dev/null";		/* A precautionary measure */	getrlimit(RLIMIT_NOFILE, &oflimits);	for (j=0; j < oflimits.rlim_cur; ++j) {		close(j);	}		(void)open(devnull, O_RDONLY);	/* Stdin:  fd 0 */	(void)open(devnull, O_WRONLY);	/* Stdout: fd 1 */	(void)open(devnull, O_WRONLY);	/* Stderr: fd 2 */		(void)execl("/bin/sh", "sh", "-c", the_subsystem->command,		    (const char *)NULL);		/* Should not happen */	cl_perror("FATAL: Cannot exec %s", the_subsystem->command);	exit(100); /* Suppress respawning */	return TRUE; /* never reached */}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/8aca57811edd101785cc7c91e9c0ae7a8a93cded/subsystems.c/buggy/crm/crmd/subsystems.c