Re-indent to a standard tw of 8.
This commit is contained in:
		| @@ -45,7 +45,7 @@ const char libeinfo_copyright[] = "Copyright (c) 2007-2008 Roy Marples"; | ||||
| #include <strings.h> | ||||
| #include <syslog.h> | ||||
| #ifdef HAVE_TERMCAP | ||||
| #include <termcap.h> | ||||
| # include <termcap.h> | ||||
| #endif | ||||
| #include <unistd.h> | ||||
|  | ||||
| @@ -78,24 +78,24 @@ hidden_proto(ewarnx) | ||||
| hidden_proto(ewend) | ||||
| hidden_proto(ewendv) | ||||
|  | ||||
|     /* Incase we cannot work out how many columns from ioctl, supply a default */ | ||||
| /* Incase we cannot work out how many columns from ioctl, supply a default */ | ||||
| #define DEFAULT_COLS		 80 | ||||
|  | ||||
| #define OK					"ok" | ||||
| #define NOT_OK				"!!" | ||||
| #define OK			"ok" | ||||
| #define NOT_OK			"!!" | ||||
|  | ||||
| /* Number of spaces for an indent */ | ||||
| #define INDENT_WIDTH		2 | ||||
|  | ||||
| /* How wide can the indent go? */ | ||||
| #define INDENT_MAX			40 | ||||
| #define INDENT_MAX		40 | ||||
|  | ||||
| /* Default colours */ | ||||
| #define GOOD    2  | ||||
| #define WARN    3 | ||||
| #define BAD     1 | ||||
| #define HILITE  6 | ||||
| #define BRACKET 4 | ||||
| #define GOOD                    2  | ||||
| #define WARN                    3 | ||||
| #define BAD                     1 | ||||
| #define HILITE                  6 | ||||
| #define BRACKET                 4 | ||||
|  | ||||
| /* We fallback to these escape codes if termcap isn't available | ||||
|  * like say /usr isn't mounted */ | ||||
| @@ -106,6 +106,12 @@ hidden_proto(ewendv) | ||||
| #define ME "\033[m" | ||||
| #define UP "\033[A" | ||||
|  | ||||
| #define _GET_CAP(_d, _c) strlcpy (_d, tgoto (_c, 0, 0), sizeof (_d)); | ||||
| #define _ASSIGN_CAP(_v) { \ | ||||
| 	_v = p; \ | ||||
| 	p += strlcpy (p, tmp, sizeof (ebuffer) - (p - ebuffer)) + 1; \ | ||||
| } | ||||
|  | ||||
| /* A pointer to a string to prefix to einfo/ewarn/eerror messages */ | ||||
| static const char *_eprefix = NULL; | ||||
|  | ||||
| @@ -246,17 +252,17 @@ static bool yesno (const char *value) | ||||
| 	} | ||||
|  | ||||
| 	if (strcasecmp (value, "yes") == 0 || | ||||
| 		strcasecmp (value, "y") == 0 || | ||||
| 		strcasecmp (value, "true") == 0 || | ||||
| 		strcasecmp (value, "on") == 0 || | ||||
| 		strcasecmp (value, "1") == 0) | ||||
| 	    strcasecmp (value, "y") == 0 || | ||||
| 	    strcasecmp (value, "true") == 0 || | ||||
| 	    strcasecmp (value, "on") == 0 || | ||||
| 	    strcasecmp (value, "1") == 0) | ||||
| 		return (true); | ||||
|  | ||||
| 	if (strcasecmp (value, "no") != 0 && | ||||
| 		strcasecmp (value, "n") != 0 && | ||||
| 		strcasecmp (value, "false") != 0 && | ||||
| 		strcasecmp (value, "off") != 0 && | ||||
| 		strcasecmp (value, "0") != 0) | ||||
| 	    strcasecmp (value, "n") != 0 && | ||||
| 	    strcasecmp (value, "false") != 0 && | ||||
| 	    strcasecmp (value, "off") != 0 && | ||||
| 	    strcasecmp (value, "0") != 0) | ||||
| 		errno = EINVAL; | ||||
|  | ||||
| 	return (false); | ||||
| @@ -388,12 +394,6 @@ static bool colour_terminal (FILE * __EINFO_RESTRICT f) | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| #define _GET_CAP(_d, _c) strlcpy (_d, tgoto (_c, 0, 0), sizeof (_d)); | ||||
| #define _ASSIGN_CAP(_v) { \ | ||||
| 	_v = p; \ | ||||
| 	p += strlcpy (p, tmp, sizeof (ebuffer) - (p - ebuffer)) + 1; \ | ||||
| } | ||||
|  | ||||
| 	/* Now setup our colours */ | ||||
| 	p = ebuffer; | ||||
| 	for (i = 0; i < sizeof (ecolors) / sizeof (ecolors[0]); i++) { | ||||
| @@ -402,7 +402,7 @@ static bool colour_terminal (FILE * __EINFO_RESTRICT f) | ||||
| 		if (ecolors[i].name) { | ||||
| 			const char *bold = _md; | ||||
| 			c = ecolors[i].def; | ||||
| 			 | ||||
|  | ||||
| 			/* See if the user wants to override the colour | ||||
| 			 * We use a :col;bold: format like 2;1: for bold green | ||||
| 			 * and 1;0: for a normal red */ | ||||
| @@ -441,8 +441,8 @@ static bool colour_terminal (FILE * __EINFO_RESTRICT f) | ||||
| 	} | ||||
|  | ||||
| 	_GET_CAP (tmp, _ce) | ||||
| 	_ASSIGN_CAP (flush) | ||||
| 	_GET_CAP (tmp, _up); | ||||
| 		_ASSIGN_CAP (flush) | ||||
| 		_GET_CAP (tmp, _up); | ||||
| 	_ASSIGN_CAP (up); | ||||
| 	strlcpy (tmp, _ch, sizeof (tmp)); | ||||
| 	_ASSIGN_CAP (goto_column); | ||||
| @@ -557,26 +557,27 @@ const char *ecolor (einfo_color_t color) | ||||
| 	return (_ecolor (f, color)); | ||||
| } | ||||
|  | ||||
| #define LASTCMD(_cmd) \ | ||||
| #define LASTCMD(_cmd) { \ | ||||
| 	unsetenv ("EINFO_LASTCMD"); \ | ||||
| 	setenv ("EINFO_LASTCMD", _cmd, 1); | ||||
| 	setenv ("EINFO_LASTCMD", _cmd, 1); \ | ||||
| } | ||||
|  | ||||
| #define EINFOVN(_file, _color) \ | ||||
| { \ | ||||
| 	char *_e = getenv ("EINFO_LASTCMD"); \ | ||||
| 	if (_e && ! colour_terminal (_file) && strcmp (_e, "ewarn") != 0 && \ | ||||
| 		_e[strlen (_e) - 1] == 'n') \ | ||||
| 		fprintf (_file, "\n"); \ | ||||
| 	    _e[strlen (_e) - 1] == 'n') \ | ||||
| 	fprintf (_file, "\n"); \ | ||||
| 	if (_eprefix) \ | ||||
| 	fprintf (_file, "%s%s%s|", _ecolor (_file, _color), _eprefix, _ecolor (_file, ECOLOR_NORMAL)); \ | ||||
| 	fprintf (_file, " %s*%s ", _ecolor (_file, _color), _ecolor (_file, ECOLOR_NORMAL)); \ | ||||
| 	retval += _eindent (_file); \ | ||||
| { \ | ||||
| 	va_list _ap; \ | ||||
| 	va_copy (_ap, ap); \ | ||||
| 	retval += vfprintf (_file, fmt, _ap) + 3; \ | ||||
| 	va_end (_ap); \ | ||||
| } \ | ||||
| 	{ \ | ||||
| 		va_list _ap; \ | ||||
| 		va_copy (_ap, ap); \ | ||||
| 		retval += vfprintf (_file, fmt, _ap) + 3; \ | ||||
| 		va_end (_ap); \ | ||||
| 	} \ | ||||
| 	if (colour_terminal (_file)) \ | ||||
| 	fprintf (_file, "%s", flush); \ | ||||
| } | ||||
| @@ -769,7 +770,7 @@ int ebegin (const char *__EINFO_RESTRICT fmt, ...) | ||||
| hidden_def(ebegin) | ||||
|  | ||||
| static void _eend (FILE * __EINFO_RESTRICT fp, int col, einfo_color_t color, | ||||
| 				   const char *msg) | ||||
| 		   const char *msg) | ||||
| { | ||||
| 	int i; | ||||
| 	int cols; | ||||
| @@ -793,8 +794,8 @@ static void _eend (FILE * __EINFO_RESTRICT fp, int col, einfo_color_t color, | ||||
|  | ||||
| 	if (cols > 0 && colour_terminal (fp)) { | ||||
| 		fprintf (fp, "%s%s %s[%s%s%s]%s\n", up, tgoto (goto_column, 0, cols), | ||||
| 				 ecolor (ECOLOR_BRACKET), ecolor (color), msg, | ||||
| 				 ecolor (ECOLOR_BRACKET), ecolor (ECOLOR_NORMAL)); | ||||
| 			 ecolor (ECOLOR_BRACKET), ecolor (color), msg, | ||||
| 			 ecolor (ECOLOR_BRACKET), ecolor (ECOLOR_NORMAL)); | ||||
| 	} else { | ||||
| 		if (col > 0) | ||||
| 			for (i = 0; i < cols - col; i++) | ||||
| @@ -823,8 +824,8 @@ static int _do_eend (const char *cmd, int retval, const char *__EINFO_RESTRICT f | ||||
| 	} | ||||
|  | ||||
| 	_eend (fp, col, | ||||
| 		   retval == 0 ? ECOLOR_GOOD : ECOLOR_BAD, | ||||
| 		   retval == 0 ? OK : NOT_OK); | ||||
| 	       retval == 0 ? ECOLOR_GOOD : ECOLOR_BAD, | ||||
| 	       retval == 0 ? OK : NOT_OK); | ||||
| 	return (retval); | ||||
| } | ||||
|  | ||||
| @@ -1013,7 +1014,7 @@ hidden_def(ebeginv) | ||||
| int eendv (int retval, const char *__EINFO_RESTRICT fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 	 | ||||
|  | ||||
| 	if (! is_verbose ()) | ||||
| 		return (0); | ||||
|  | ||||
|   | ||||
| @@ -98,7 +98,7 @@ static bool pid_is_exec (pid_t pid, const char *exec) | ||||
| } | ||||
|  | ||||
| pid_t *rc_find_pids (const char *exec, const char *cmd, | ||||
| 					 uid_t uid, pid_t pid) | ||||
| 		     uid_t uid, pid_t pid) | ||||
| { | ||||
| 	DIR *procdir; | ||||
| 	struct dirent *entry; | ||||
| @@ -192,7 +192,7 @@ librc_hidden_def(rc_find_pids) | ||||
| # endif | ||||
|  | ||||
| pid_t *rc_find_pids (const char *exec, const char *cmd, | ||||
| 					 uid_t uid, pid_t pid) | ||||
| 		     uid_t uid, pid_t pid) | ||||
| { | ||||
| 	static kvm_t *kd = NULL; | ||||
| 	char errbuf[_POSIX2_LINE_MAX]; | ||||
| @@ -212,7 +212,7 @@ pid_t *rc_find_pids (const char *exec, const char *cmd, | ||||
|  | ||||
| #ifdef _KVM_GETPROC2 | ||||
| 	kp = kvm_getproc2 (kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc2), | ||||
| 					   &processes); | ||||
| 			   &processes); | ||||
| #else | ||||
| 	kp = kvm_getprocs (kd, KERN_PROC_PROC, 0, &processes); | ||||
| #endif | ||||
| @@ -226,7 +226,7 @@ pid_t *rc_find_pids (const char *exec, const char *cmd, | ||||
|  | ||||
| 		if (cmd) { | ||||
| 			if (! _GET_KINFO_COMM (kp[i]) || | ||||
| 				strcmp (cmd, _GET_KINFO_COMM (kp[i])) != 0) | ||||
| 			    strcmp (cmd, _GET_KINFO_COMM (kp[i])) != 0) | ||||
| 				continue; | ||||
| 		} | ||||
|  | ||||
| @@ -262,8 +262,8 @@ librc_hidden_def(rc_find_pids) | ||||
| #endif | ||||
|  | ||||
| static bool _match_daemon (const char *path, const char *file, | ||||
| 						   const char *mexec, const char *mname, | ||||
| 						   const char *mpidfile) | ||||
| 			   const char *mexec, const char *mname, | ||||
| 			   const char *mpidfile) | ||||
| { | ||||
| 	char *line; | ||||
| 	char *ffile = rc_strcatpaths (path, file, (char *) NULL); | ||||
| @@ -304,8 +304,8 @@ static bool _match_daemon (const char *path, const char *file, | ||||
| } | ||||
|  | ||||
| bool rc_service_daemon_set (const char *service, const char *exec, | ||||
| 							const char *name, const char *pidfile, | ||||
| 							bool started) | ||||
| 			    const char *name, const char *pidfile, | ||||
| 			    bool started) | ||||
| { | ||||
| 	char *dirpath; | ||||
| 	char *file = NULL; | ||||
| @@ -325,7 +325,7 @@ bool rc_service_daemon_set (const char *service, const char *exec, | ||||
| 	} | ||||
|  | ||||
| 	dirpath = rc_strcatpaths (RC_SVCDIR, "daemons", | ||||
| 							  basename_c (service), (char *) NULL); | ||||
| 				  basename_c (service), (char *) NULL); | ||||
|  | ||||
| 	if (exec) { | ||||
| 		i = strlen (exec) + 6; | ||||
| @@ -358,7 +358,7 @@ bool rc_service_daemon_set (const char *service, const char *exec, | ||||
|  | ||||
| 			if (! oldfile) { | ||||
| 				if (_match_daemon (dirpath, d->d_name, | ||||
| 								   mexec, mname, mpidfile)) | ||||
| 						   mexec, mname, mpidfile)) | ||||
| 				{ | ||||
| 					unlink (file); | ||||
| 					oldfile = file; | ||||
| @@ -402,7 +402,7 @@ bool rc_service_daemon_set (const char *service, const char *exec, | ||||
| librc_hidden_def(rc_service_daemon_set) | ||||
|  | ||||
| bool rc_service_started_daemon (const char *service, const char *exec, | ||||
| 								int indx) | ||||
| 				int indx) | ||||
| { | ||||
| 	char *dirpath; | ||||
| 	char *file; | ||||
| @@ -416,8 +416,8 @@ bool rc_service_started_daemon (const char *service, const char *exec, | ||||
| 		return (false); | ||||
|  | ||||
| 	dirpath = rc_strcatpaths (RC_SVCDIR, "daemons", basename_c (service), | ||||
| 							  (char *) NULL); | ||||
| 	 | ||||
| 				  (char *) NULL); | ||||
|  | ||||
| 	i = strlen (exec) + 6; | ||||
| 	mexec = xmalloc (sizeof (char) * i); | ||||
| 	snprintf (mexec, i, "exec=%s", exec); | ||||
| @@ -468,7 +468,7 @@ bool rc_service_daemons_crashed (const char *service) | ||||
| 		return (false); | ||||
|  | ||||
| 	dirpath = rc_strcatpaths (RC_SVCDIR, "daemons", basename_c (service), | ||||
| 							  (char *) NULL); | ||||
| 				  (char *) NULL); | ||||
|  | ||||
| 	if (! (dp = opendir (dirpath))) { | ||||
| 		free (dirpath); | ||||
|   | ||||
| @@ -89,7 +89,7 @@ void rc_deptree_free (rc_depinfo_t *deptree) | ||||
| librc_hidden_def(rc_deptree_free) | ||||
|  | ||||
| static rc_depinfo_t *get_depinfo (const rc_depinfo_t *deptree, | ||||
| 								  const char *service) | ||||
| 				  const char *service) | ||||
| { | ||||
| 	const rc_depinfo_t *di; | ||||
|  | ||||
| @@ -104,7 +104,7 @@ static rc_depinfo_t *get_depinfo (const rc_depinfo_t *deptree, | ||||
| } | ||||
|  | ||||
| static rc_deptype_t *get_deptype (const rc_depinfo_t *depinfo, | ||||
| 								  const char *type) | ||||
| 				  const char *type) | ||||
| { | ||||
| 	rc_deptype_t *dt; | ||||
|  | ||||
| @@ -212,16 +212,16 @@ static bool valid_service (const char *runlevel, const char *service) | ||||
| 	rc_service_state_t state = rc_service_state (service); | ||||
|  | ||||
| 	return ((strcmp (runlevel, bootlevel) != 0 && | ||||
| 			 rc_service_in_runlevel (service, bootlevel)) || | ||||
| 			rc_service_in_runlevel (service, runlevel) || | ||||
| 			state & RC_SERVICE_COLDPLUGGED || | ||||
| 			state & RC_SERVICE_STARTED); | ||||
| 		 rc_service_in_runlevel (service, bootlevel)) || | ||||
| 		rc_service_in_runlevel (service, runlevel) || | ||||
| 		state & RC_SERVICE_COLDPLUGGED || | ||||
| 		state & RC_SERVICE_STARTED); | ||||
| } | ||||
|  | ||||
| static bool get_provided1 (const char *runlevel, struct lhead *providers, | ||||
| 						   rc_deptype_t *deptype, | ||||
| 						   const char *level, bool coldplugged, | ||||
| 						   rc_service_state_t state) | ||||
| 			   rc_deptype_t *deptype, | ||||
| 			   const char *level, bool coldplugged, | ||||
| 			   rc_service_state_t state) | ||||
| { | ||||
| 	char *service; | ||||
| 	int i; | ||||
| @@ -235,8 +235,8 @@ static bool get_provided1 (const char *runlevel, struct lhead *providers, | ||||
| 			ok = rc_service_in_runlevel (service, level); | ||||
| 		else if (coldplugged) | ||||
| 			ok = (s & RC_SERVICE_COLDPLUGGED && | ||||
| 				  ! rc_service_in_runlevel (service, runlevel) && | ||||
| 				  ! rc_service_in_runlevel (service, bootlevel)); | ||||
| 			      ! rc_service_in_runlevel (service, runlevel) && | ||||
| 			      ! rc_service_in_runlevel (service, bootlevel)); | ||||
|  | ||||
| 		if (! ok) | ||||
| 			continue; | ||||
| @@ -249,8 +249,8 @@ static bool get_provided1 (const char *runlevel, struct lhead *providers, | ||||
| 			case RC_SERVICE_STARTING: | ||||
| 			case RC_SERVICE_STOPPING: | ||||
| 				ok = (s & RC_SERVICE_STARTING || | ||||
| 					  s & RC_SERVICE_STOPPING || | ||||
| 					  s & RC_SERVICE_INACTIVE); | ||||
| 				      s & RC_SERVICE_STOPPING || | ||||
| 				      s & RC_SERVICE_INACTIVE); | ||||
| 				break; | ||||
| 			default: | ||||
| 				break; | ||||
| @@ -276,8 +276,8 @@ static bool get_provided1 (const char *runlevel, struct lhead *providers, | ||||
|    provided dependancy can change depending on runlevel state. | ||||
|    */ | ||||
| static char **get_provided (const rc_depinfo_t *deptree, | ||||
| 							const rc_depinfo_t *depinfo, | ||||
| 							const char *runlevel, int options) | ||||
| 			    const rc_depinfo_t *depinfo, | ||||
| 			    const char *runlevel, int options) | ||||
| { | ||||
| 	rc_deptype_t *dt; | ||||
| 	struct lhead providers;  | ||||
| @@ -286,7 +286,7 @@ static char **get_provided (const rc_depinfo_t *deptree, | ||||
|  | ||||
| 	if (! deptree || ! depinfo) | ||||
| 		return (NULL); | ||||
| 	 | ||||
|  | ||||
| 	if (rc_service_exists (depinfo->service)) | ||||
| 		return (NULL); | ||||
|  | ||||
| @@ -312,7 +312,7 @@ static char **get_provided (const rc_depinfo_t *deptree, | ||||
| 	{ | ||||
| 		STRLIST_FOREACH (dt->services, service, i) | ||||
| 			if (rc_service_in_runlevel (service, runlevel) || | ||||
| 				rc_service_in_runlevel (service, bootlevel)) | ||||
| 			    rc_service_in_runlevel (service, bootlevel)) | ||||
| 				rc_strlist_add (&providers.list, service); | ||||
|  | ||||
| 		if (providers.list) | ||||
| @@ -373,7 +373,7 @@ static char **get_provided (const rc_depinfo_t *deptree, | ||||
| 		return (providers.list); | ||||
|  | ||||
| 	if (bootlevel && (strcmp (runlevel, bootlevel) != 0) | ||||
| 		&& (get_provided1 (runlevel, &providers, dt, bootlevel, false, RC_SERVICE_STOPPED))) | ||||
| 	    && (get_provided1 (runlevel, &providers, dt, bootlevel, false, RC_SERVICE_STOPPED))) | ||||
| 		return (providers.list); | ||||
|  | ||||
| 	/* Still nothing? OK, list all services */ | ||||
| @@ -384,10 +384,10 @@ static char **get_provided (const rc_depinfo_t *deptree, | ||||
| } | ||||
|  | ||||
| static void visit_service (const rc_depinfo_t *deptree, | ||||
| 						   const char * const *types, | ||||
| 						   struct lhead *sorted, struct lhead *visited, | ||||
| 						   const rc_depinfo_t *depinfo, | ||||
| 						   const char *runlevel, int options) | ||||
| 			   const char * const *types, | ||||
| 			   struct lhead *sorted, struct lhead *visited, | ||||
| 			   const rc_depinfo_t *depinfo, | ||||
| 			   const char *runlevel, int options) | ||||
| { | ||||
| 	int i, j, k; | ||||
| 	char *lp; | ||||
| @@ -428,26 +428,26 @@ static void visit_service (const rc_depinfo_t *deptree, | ||||
| 					{ | ||||
| 						di = get_depinfo (deptree, lp); | ||||
| 						if (di && (strcmp (item, "ineed") == 0 || | ||||
| 								   strcmp (item, "needsme") == 0 || | ||||
| 								   valid_service (runlevel, di->service))) | ||||
| 							   strcmp (item, "needsme") == 0 || | ||||
| 							   valid_service (runlevel, di->service))) | ||||
| 							visit_service (deptree, types, sorted, visited, di, | ||||
| 										   runlevel, options | RC_DEP_TRACE); | ||||
| 								       runlevel, options | RC_DEP_TRACE); | ||||
| 					} | ||||
| 					rc_strlist_free (provides); | ||||
| 				} | ||||
| 				else | ||||
| 					if (di && (strcmp (item, "ineed") == 0 || | ||||
| 							   strcmp (item, "needsme") == 0 || | ||||
| 							   valid_service (runlevel, service))) | ||||
| 						   strcmp (item, "needsme") == 0 || | ||||
| 						   valid_service (runlevel, service))) | ||||
| 						visit_service (deptree, types, sorted, visited, di, | ||||
| 									   runlevel, options | RC_DEP_TRACE); | ||||
| 							       runlevel, options | RC_DEP_TRACE); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/* Now visit the stuff we provide for */ | ||||
| 	if (options & RC_DEP_TRACE && | ||||
| 		(dt = get_deptype (depinfo, "iprovide"))) | ||||
| 	    (dt = get_deptype (depinfo, "iprovide"))) | ||||
| 	{ | ||||
| 		STRLIST_FOREACH (dt->services, service, i) | ||||
| 		{ | ||||
| @@ -458,7 +458,7 @@ static void visit_service (const rc_depinfo_t *deptree, | ||||
| 						if (strcmp (lp, depinfo->service) == 0) | ||||
| 						{ | ||||
| 							visit_service (deptree, types, sorted, visited, di, | ||||
| 										   runlevel, options | RC_DEP_TRACE); | ||||
| 								       runlevel, options | RC_DEP_TRACE); | ||||
| 							break; | ||||
| 						} | ||||
| 					rc_strlist_free (provides); | ||||
| @@ -475,7 +475,7 @@ static void visit_service (const rc_depinfo_t *deptree, | ||||
| } | ||||
|  | ||||
| char **rc_deptree_depend (const rc_depinfo_t *deptree, | ||||
| 						  const char *service, const char *type) | ||||
| 			  const char *service, const char *type) | ||||
| { | ||||
| 	rc_depinfo_t *di; | ||||
| 	rc_deptype_t *dt; | ||||
| @@ -484,7 +484,7 @@ char **rc_deptree_depend (const rc_depinfo_t *deptree, | ||||
| 	char *svc; | ||||
|  | ||||
| 	if (! (di = get_depinfo (deptree, service)) || | ||||
| 		! (dt = get_deptype (di, type))) | ||||
| 	    ! (dt = get_deptype (di, type))) | ||||
| 	{ | ||||
| 		errno = ENOENT; | ||||
| 		return (NULL); | ||||
| @@ -499,9 +499,9 @@ char **rc_deptree_depend (const rc_depinfo_t *deptree, | ||||
| librc_hidden_def(rc_deptree_depend) | ||||
|  | ||||
| char **rc_deptree_depends (const rc_depinfo_t *deptree, | ||||
| 						   const char *const *types, | ||||
| 						   const char *const *services, | ||||
| 						   const char *runlevel, int options) | ||||
| 			   const char *const *types, | ||||
| 			   const char *const *services, | ||||
| 			   const char *runlevel, int options) | ||||
| { | ||||
| 	struct lhead sorted; | ||||
| 	struct lhead visited; | ||||
| @@ -527,7 +527,7 @@ char **rc_deptree_depends (const rc_depinfo_t *deptree, | ||||
| 		} | ||||
| 		if (types) | ||||
| 			visit_service (deptree, types, &sorted, &visited, | ||||
| 						   di, runlevel, options); | ||||
| 				       di, runlevel, options); | ||||
| 	} | ||||
|  | ||||
| 	rc_strlist_free (visited.list); | ||||
| @@ -535,9 +535,9 @@ char **rc_deptree_depends (const rc_depinfo_t *deptree, | ||||
| } | ||||
| librc_hidden_def(rc_deptree_depends) | ||||
|  | ||||
| static const char * const order_types[] = { "ineed", "iuse", "iafter", NULL }; | ||||
| 	static const char * const order_types[] = { "ineed", "iuse", "iafter", NULL }; | ||||
| char **rc_deptree_order (const rc_depinfo_t *deptree, const char *runlevel, | ||||
| 						 int options) | ||||
| 			 int options) | ||||
| { | ||||
| 	char **list = NULL; | ||||
| 	char **services = NULL; | ||||
| @@ -553,8 +553,8 @@ char **rc_deptree_order (const rc_depinfo_t *deptree, const char *runlevel, | ||||
|  | ||||
| 	/* When shutting down, list all running services */ | ||||
| 	if (strcmp (runlevel, RC_LEVEL_SINGLE) == 0 || | ||||
| 		strcmp (runlevel, RC_LEVEL_SHUTDOWN) == 0 || | ||||
| 		strcmp (runlevel, RC_LEVEL_REBOOT) == 0) | ||||
| 	    strcmp (runlevel, RC_LEVEL_SHUTDOWN) == 0 || | ||||
| 	    strcmp (runlevel, RC_LEVEL_REBOOT) == 0) | ||||
| 	{ | ||||
| 		list = rc_services_in_state (RC_SERVICE_STARTED); | ||||
|  | ||||
| @@ -585,8 +585,8 @@ char **rc_deptree_order (const rc_depinfo_t *deptree, const char *runlevel, | ||||
| 	/* Now we have our lists, we need to pull in any dependencies | ||||
| 	   and order them */ | ||||
| 	services = rc_deptree_depends (deptree, order_types, (const char **) list, | ||||
| 								   runlevel, | ||||
| 								   RC_DEP_STRICT | RC_DEP_TRACE | options); | ||||
| 				       runlevel, | ||||
| 				       RC_DEP_STRICT | RC_DEP_TRACE | options); | ||||
| 	rc_strlist_free (list); | ||||
|  | ||||
| 	if (reverse) | ||||
| @@ -680,10 +680,10 @@ bool rc_deptree_update_needed (void) | ||||
|  | ||||
| 	/* Quick test to see if anything we use has changed */ | ||||
| 	if (! is_newer_than (RC_DEPTREE, RC_INITDIR) || | ||||
| 		! is_newer_than (RC_DEPTREE, RC_CONFDIR) || | ||||
| 		! is_newer_than (RC_DEPTREE, RC_INITDIR_LOCAL) || | ||||
| 		! is_newer_than (RC_DEPTREE, RC_CONFDIR_LOCAL) || | ||||
| 		! is_newer_than (RC_DEPTREE, "/etc/rc.conf")) | ||||
| 	    ! is_newer_than (RC_DEPTREE, RC_CONFDIR) || | ||||
| 	    ! is_newer_than (RC_DEPTREE, RC_INITDIR_LOCAL) || | ||||
| 	    ! is_newer_than (RC_DEPTREE, RC_CONFDIR_LOCAL) || | ||||
| 	    ! is_newer_than (RC_DEPTREE, "/etc/rc.conf")) | ||||
| 		return (true); | ||||
|  | ||||
| 	/* Some init scripts dependencies change depending on config files | ||||
| @@ -701,14 +701,14 @@ bool rc_deptree_update_needed (void) | ||||
| } | ||||
| librc_hidden_def(rc_deptree_update_needed) | ||||
|  | ||||
| /* This is a 5 phase operation | ||||
|    Phase 1 is a shell script which loads each init script and config in turn | ||||
|    and echos their dependency info to stdout | ||||
|    Phase 2 takes that and populates a depinfo object with that data | ||||
|    Phase 3 adds any provided services to the depinfo object | ||||
|    Phase 4 scans that depinfo object and puts in backlinks | ||||
|    Phase 5 saves the depinfo object to disk | ||||
|    */ | ||||
| 	/* This is a 5 phase operation | ||||
| 	   Phase 1 is a shell script which loads each init script and config in turn | ||||
| 	   and echos their dependency info to stdout | ||||
| 	   Phase 2 takes that and populates a depinfo object with that data | ||||
| 	   Phase 3 adds any provided services to the depinfo object | ||||
| 	   Phase 4 scans that depinfo object and puts in backlinks | ||||
| 	   Phase 5 saves the depinfo object to disk | ||||
| 	   */ | ||||
| bool rc_deptree_update (void) | ||||
| { | ||||
| 	char *depends; | ||||
| @@ -819,9 +819,9 @@ bool rc_deptree_update (void) | ||||
| 			/* .sh files are not init scripts */ | ||||
| 			len = strlen (depend); | ||||
| 			if (len > 2 && | ||||
| 				depend[len - 3] == '.' && | ||||
| 				depend[len - 2] == 's' && | ||||
| 				depend[len - 1] == 'h') | ||||
| 			    depend[len - 3] == '.' && | ||||
| 			    depend[len - 2] == 's' && | ||||
| 			    depend[len - 1] == 'h') | ||||
| 				continue; | ||||
|  | ||||
| 			rc_strlist_addsort (&deptype->services, depend); | ||||
| @@ -835,8 +835,8 @@ bool rc_deptree_update (void) | ||||
| 			} | ||||
| 			/* If we're after something, remove us from the before list */ | ||||
| 			if (strcmp (type, "iafter") == 0 || | ||||
| 				strcmp (type, "ineed") == 0 || | ||||
| 				strcmp (type, "iuse") == 0) { | ||||
| 			    strcmp (type, "ineed") == 0 || | ||||
| 			    strcmp (type, "iuse") == 0) { | ||||
| 				if ((dt = get_deptype (depinfo, "ibefore"))) | ||||
| 					rc_strlist_delete (&dt->services, depend); | ||||
| 			} | ||||
| @@ -886,8 +886,8 @@ next: | ||||
| 					if (strcmp (deptype->type, "ineed") == 0) | ||||
| 					{ | ||||
| 						fprintf (stderr, | ||||
| 								 "Service `%s' needs non existant service `%s'\n", | ||||
| 								 depinfo->service, service); | ||||
| 							 "Service `%s' needs non existant service `%s'\n", | ||||
| 							 depinfo->service, service); | ||||
| 					}  | ||||
| 					continue; | ||||
| 				} | ||||
| @@ -947,7 +947,7 @@ next: | ||||
| 				STRLIST_FOREACH (deptype->services, service, j) | ||||
| 				{ | ||||
| 					fprintf (fp, "depinfo_%d_%s_%d='%s'\n", i, deptype->type, | ||||
| 							 k, service); | ||||
| 						 k, service); | ||||
| 					k++; | ||||
| 				} | ||||
| 			} | ||||
|   | ||||
| @@ -39,15 +39,15 @@ bool rc_yesno (const char *value) | ||||
| 	} | ||||
|  | ||||
| 	if (strcasecmp (value, "yes") == 0 || | ||||
| 		strcasecmp (value, "y") == 0 || | ||||
| 		strcasecmp (value, "true") == 0 || | ||||
| 		strcasecmp (value, "1") == 0) | ||||
| 	    strcasecmp (value, "y") == 0 || | ||||
| 	    strcasecmp (value, "true") == 0 || | ||||
| 	    strcasecmp (value, "1") == 0) | ||||
| 		return (true); | ||||
|  | ||||
| 	if (strcasecmp (value, "no") != 0 && | ||||
| 		strcasecmp (value, "n") != 0 && | ||||
| 		strcasecmp (value, "false") != 0 && | ||||
| 		strcasecmp (value, "0") != 0) | ||||
| 	    strcasecmp (value, "n") != 0 && | ||||
| 	    strcasecmp (value, "false") != 0 && | ||||
| 	    strcasecmp (value, "0") != 0) | ||||
| 		errno = EINVAL; | ||||
|  | ||||
| 	return (false); | ||||
|   | ||||
| @@ -71,9 +71,9 @@ char *rc_strlist_addu (char ***list, const char *item) | ||||
| librc_hidden_def(rc_strlist_addu) | ||||
|  | ||||
| static char *_rc_strlist_addsort (char ***list, const char *item, | ||||
| 								  int (*sortfunc) (const char *s1, | ||||
| 												   const char *s2), | ||||
| 								  bool uniq) | ||||
| 				  int (*sortfunc) (const char *s1, | ||||
| 						   const char *s2), | ||||
| 				  bool uniq) | ||||
| { | ||||
| 	char **newlist; | ||||
| 	char **lst = *list; | ||||
|   | ||||
| @@ -90,8 +90,8 @@ static char **ls_dir (const char *dir, int options) | ||||
|  | ||||
| 				/* .sh files are not init scripts */ | ||||
| 				if (l > 2 && d->d_name[l - 3] == '.' && | ||||
| 					d->d_name[l - 2] == 's' && | ||||
| 					d->d_name[l - 1] == 'h') | ||||
| 				    d->d_name[l - 2] == 's' && | ||||
| 				    d->d_name[l - 1] == 'h') | ||||
| 					continue; | ||||
| 			} | ||||
| 			if (options & LS_DIR) { | ||||
| @@ -227,7 +227,7 @@ bool rc_runlevel_exists (const char *runlevel) | ||||
| } | ||||
| librc_hidden_def(rc_runlevel_exists) | ||||
|  | ||||
| /* Resolve a service name to it's full path */ | ||||
| 	/* Resolve a service name to it's full path */ | ||||
| char *rc_service_resolve (const char *service) | ||||
| { | ||||
| 	char buffer[PATH_MAX]; | ||||
| @@ -285,8 +285,8 @@ bool rc_service_exists (const char *service) | ||||
|  | ||||
| 	/* .sh files are not init scripts */ | ||||
| 	if (len > 2 && service[len - 3] == '.' && | ||||
| 		service[len - 2] == 's' && | ||||
| 		service[len - 1] == 'h') | ||||
| 	    service[len - 2] == 's' && | ||||
| 	    service[len - 1] == 'h') | ||||
| 		return (false); | ||||
|  | ||||
| 	if (! (file = rc_service_resolve (service))) | ||||
| @@ -367,7 +367,7 @@ bool rc_service_in_runlevel (const char *service, const char *runlevel) | ||||
| 		return (false); | ||||
|  | ||||
| 	file = rc_strcatpaths (RC_RUNLEVELDIR, runlevel, basename_c (service), | ||||
| 						   (char *) NULL); | ||||
| 			       (char *) NULL); | ||||
| 	retval = exists (file); | ||||
| 	free (file); | ||||
|  | ||||
| @@ -396,7 +396,7 @@ bool rc_service_mark (const char *service, const rc_service_state_t state) | ||||
| 		} | ||||
|  | ||||
| 		file = rc_strcatpaths (RC_SVCDIR, rc_parse_service_state (state), base, | ||||
| 							   (char *) NULL); | ||||
| 				       (char *) NULL); | ||||
| 		if (exists (file)) | ||||
| 			unlink (file); | ||||
| 		i = symlink (init, file); | ||||
| @@ -420,21 +420,21 @@ bool rc_service_mark (const char *service, const rc_service_state_t state) | ||||
| 		int s = rc_service_state_names[i].state; | ||||
|  | ||||
| 		if ((s != skip_state && | ||||
| 			 s != RC_SERVICE_STOPPED && | ||||
| 			 s != RC_SERVICE_COLDPLUGGED && | ||||
| 			 s != RC_SERVICE_SCHEDULED) && | ||||
| 			(! skip_wasinactive || s != RC_SERVICE_WASINACTIVE)) | ||||
| 		     s != RC_SERVICE_STOPPED && | ||||
| 		     s != RC_SERVICE_COLDPLUGGED && | ||||
| 		     s != RC_SERVICE_SCHEDULED) && | ||||
| 		    (! skip_wasinactive || s != RC_SERVICE_WASINACTIVE)) | ||||
| 		{ | ||||
| 			file = rc_strcatpaths (RC_SVCDIR, rc_parse_service_state (s), base, | ||||
| 								   (char *) NULL); | ||||
| 					       (char *) NULL); | ||||
| 			if (exists (file)) { | ||||
| 				if ((state == RC_SERVICE_STARTING || | ||||
| 					 state == RC_SERVICE_STOPPING) && | ||||
| 					s == RC_SERVICE_INACTIVE) | ||||
| 				     state == RC_SERVICE_STOPPING) && | ||||
| 				    s == RC_SERVICE_INACTIVE) | ||||
| 				{ | ||||
| 					char *wasfile = rc_strcatpaths (RC_SVCDIR, | ||||
| 													rc_parse_service_state (RC_SERVICE_WASINACTIVE), | ||||
| 													base, (char *) NULL); | ||||
| 									rc_parse_service_state (RC_SERVICE_WASINACTIVE), | ||||
| 									base, (char *) NULL); | ||||
|  | ||||
| 					symlink (init, wasfile); | ||||
| 					skip_wasinactive = true; | ||||
| @@ -448,8 +448,8 @@ bool rc_service_mark (const char *service, const rc_service_state_t state) | ||||
|  | ||||
| 	/* Remove the exclusive state if we're inactive */ | ||||
| 	if (state == RC_SERVICE_STARTED || | ||||
| 		state == RC_SERVICE_STOPPED || | ||||
| 		state == RC_SERVICE_INACTIVE) | ||||
| 	    state == RC_SERVICE_STOPPED || | ||||
| 	    state == RC_SERVICE_INACTIVE) | ||||
| 	{ | ||||
| 		file = rc_strcatpaths (RC_SVCDIR, "exclusive", base, (char *) NULL); | ||||
| 		unlink (file);  | ||||
| @@ -504,7 +504,7 @@ rc_service_state_t rc_service_state (const char *service) | ||||
|  | ||||
| 	for (i = 0; rc_service_state_names[i].name; i++) { | ||||
| 		char *file = rc_strcatpaths (RC_SVCDIR, rc_service_state_names[i].name, | ||||
| 									 basename_c (service), (char*) NULL); | ||||
| 					     basename_c (service), (char*) NULL); | ||||
| 		if (exists (file)) { | ||||
| 			if (rc_service_state_names[i].state <= 0x10) | ||||
| 				state = rc_service_state_names[i].state; | ||||
| @@ -531,7 +531,7 @@ char *rc_service_value_get (const char *service, const char *option) | ||||
| 	FILE *fp; | ||||
| 	char *line = NULL; | ||||
| 	char *file = rc_strcatpaths (RC_SVCDIR, "options", service, option, | ||||
| 								 (char *) NULL); | ||||
| 				     (char *) NULL); | ||||
|  | ||||
| 	if ((fp = fopen (file, "r"))) { | ||||
| 		line = rc_getline (fp); | ||||
| @@ -544,7 +544,7 @@ char *rc_service_value_get (const char *service, const char *option) | ||||
| librc_hidden_def(rc_service_value_get) | ||||
|  | ||||
| bool rc_service_value_set (const char *service, const char *option, | ||||
| 						   const char *value) | ||||
| 			   const char *value) | ||||
| { | ||||
| 	FILE *fp; | ||||
| 	char *path = rc_strcatpaths (RC_SVCDIR, "options", service, (char *) NULL); | ||||
| @@ -585,7 +585,7 @@ static pid_t _exec_service (const char *service, const char *arg) | ||||
|  | ||||
| 	/* We create a fifo so that other services can wait until we complete */ | ||||
| 	fifo = rc_strcatpaths (RC_SVCDIR, "exclusive", basename_c (service), | ||||
| 						   (char *) NULL); | ||||
| 			       (char *) NULL); | ||||
|  | ||||
| 	if (mkfifo (fifo, 0600) != 0 && errno != EEXIST) { | ||||
| 		free (fifo); | ||||
| @@ -638,7 +638,7 @@ pid_t rc_service_start (const char *service) | ||||
| librc_hidden_def(rc_service_start) | ||||
|  | ||||
| bool rc_service_schedule_start (const char *service, | ||||
| 								const char *service_to_start) | ||||
| 				const char *service_to_start) | ||||
| { | ||||
| 	char *dir; | ||||
| 	char *init; | ||||
| @@ -650,7 +650,7 @@ bool rc_service_schedule_start (const char *service, | ||||
| 		return (false); | ||||
|  | ||||
| 	dir = rc_strcatpaths (RC_SVCDIR, "scheduled", basename_c (service), | ||||
| 						  (char *) NULL); | ||||
| 			      (char *) NULL); | ||||
| 	if (mkdir (dir, 0755) != 0 && errno != EEXIST) { | ||||
| 		free (dir); | ||||
| 		return (false); | ||||
| @@ -670,7 +670,7 @@ librc_hidden_def(rc_service_schedule_start) | ||||
| bool rc_service_schedule_clear (const char *service) | ||||
| { | ||||
| 	char *dir = rc_strcatpaths (RC_SVCDIR, "scheduled", basename_c (service), | ||||
| 								(char *) NULL); | ||||
| 				    (char *) NULL); | ||||
| 	bool retval; | ||||
|  | ||||
| 	if (! (retval = rm_dir (dir, true)) && errno == ENOENT) | ||||
| @@ -699,7 +699,7 @@ char **rc_services_in_runlevel (const char *runlevel) | ||||
|  | ||||
| 	/* These special levels never contain any services */ | ||||
| 	if (strcmp (runlevel, RC_LEVEL_SYSINIT) == 0 || | ||||
| 		strcmp (runlevel, RC_LEVEL_SINGLE) == 0) | ||||
| 	    strcmp (runlevel, RC_LEVEL_SINGLE) == 0) | ||||
| 		return (NULL); | ||||
|  | ||||
| 	dir = rc_strcatpaths (RC_RUNLEVELDIR, runlevel, (char *) NULL); | ||||
| @@ -712,7 +712,7 @@ librc_hidden_def(rc_services_in_runlevel) | ||||
| char **rc_services_in_state (rc_service_state_t state) | ||||
| { | ||||
| 	char *dir = rc_strcatpaths (RC_SVCDIR, rc_parse_service_state (state), | ||||
| 								(char *) NULL); | ||||
| 				    (char *) NULL); | ||||
| 	char **list = NULL; | ||||
|  | ||||
| 	if (state == RC_SERVICE_SCHEDULED) { | ||||
| @@ -776,7 +776,7 @@ bool rc_service_add (const char *runlevel, const char *service) | ||||
| 	} | ||||
|  | ||||
| 	file = rc_strcatpaths (RC_RUNLEVELDIR, runlevel, basename_c (service), | ||||
| 						   (char *) NULL); | ||||
| 			       (char *) NULL); | ||||
| 	retval = (symlink (init, file) == 0); | ||||
| 	free (init); | ||||
| 	free (file); | ||||
| @@ -793,7 +793,7 @@ bool rc_service_delete (const char *runlevel, const char *service) | ||||
| 		return (false); | ||||
|  | ||||
| 	file = rc_strcatpaths (RC_RUNLEVELDIR, runlevel, basename_c (service), | ||||
| 						   (char *) NULL); | ||||
| 			       (char *) NULL); | ||||
| 	if (unlink (file) == 0) | ||||
| 		retval = true; | ||||
|  | ||||
| @@ -811,7 +811,7 @@ char **rc_services_scheduled_by (const char *service) | ||||
|  | ||||
| 	STRLIST_FOREACH (dirs, dir, i) { | ||||
| 		char *file = rc_strcatpaths (RC_SVCDIR, "scheduled", dir, service, | ||||
| 									 (char *) NULL); | ||||
| 					     (char *) NULL); | ||||
| 		if (exists (file)) | ||||
| 			rc_strlist_add (&list, file); | ||||
| 		free (file); | ||||
| @@ -825,7 +825,7 @@ librc_hidden_def(rc_services_scheduled_by) | ||||
| char **rc_services_scheduled (const char *service) | ||||
| { | ||||
| 	char *dir = rc_strcatpaths (RC_SVCDIR, "scheduled", basename_c (service), | ||||
| 								(char *) NULL); | ||||
| 				    (char *) NULL); | ||||
| 	char **list = NULL; | ||||
|  | ||||
| 	list = ls_dir (dir, LS_INITD); | ||||
|   | ||||
| @@ -37,7 +37,7 @@ static void usage (int exit_status) | ||||
| 	printf ("\n\nOptions: [" getoptstring "]\n"); | ||||
| 	for (i = 0; longopts[i].name; ++i) { | ||||
| 		int len = printf ("  -%c, --%s %s", longopts[i].val, longopts[i].name, | ||||
| 		                  has_arg[longopts[i].has_arg]); | ||||
| 				  has_arg[longopts[i].has_arg]); | ||||
|  | ||||
| 		char *lo = xstrdup (longopts_help[i]); | ||||
| 		char *p = lo; | ||||
|   | ||||
| @@ -75,7 +75,7 @@ static int do_check (char *path, uid_t uid, gid_t gid, mode_t mode, int file) | ||||
| 		} | ||||
| 	} else { | ||||
| 		if ((file && S_ISDIR (st.st_mode)) || | ||||
| 			(! file && ! S_ISDIR (st.st_mode))) | ||||
| 		    (! file && ! S_ISDIR (st.st_mode))) | ||||
| 		{ | ||||
| 			if (file) | ||||
| 				eerror ("%s: is a directory", path); | ||||
| @@ -84,7 +84,7 @@ static int do_check (char *path, uid_t uid, gid_t gid, mode_t mode, int file) | ||||
| 			return (-1); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|  | ||||
| 	if (mode && (st.st_mode & 0777) != mode) { | ||||
| 		einfo ("%s: correcting mode", applet); | ||||
| 		if (chmod (path, mode)) { | ||||
| @@ -126,7 +126,7 @@ static int parse_mode (mode_t *mode, char *text) | ||||
| } | ||||
|  | ||||
| static int parse_owner (struct passwd **user, struct group **group, | ||||
| 						const char *owner) | ||||
| 			const char *owner) | ||||
| { | ||||
| 	char *u = xstrdup (owner); | ||||
| 	char *g = strchr (u, ':'); | ||||
| @@ -164,7 +164,7 @@ static int parse_owner (struct passwd **user, struct group **group, | ||||
| static struct option longopts[] = { | ||||
| 	{ "directory",      0, NULL, 'd'}, | ||||
| 	{ "file",           0, NULL, 'f'}, | ||||
| 	{ "mode",			1, NULL, 'm'}, | ||||
| 	{ "mode",           1, NULL, 'm'}, | ||||
| 	{ "owner",          1, NULL, 'o'}, | ||||
| 	longopts_COMMON | ||||
| }; | ||||
| @@ -191,7 +191,7 @@ int checkpath (int argc, char **argv) | ||||
| 	applet = basename_c (argv[0]); | ||||
|  | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, | ||||
| 							   longopts, (int *) 0)) != -1) | ||||
| 				   longopts, (int *) 0)) != -1) | ||||
| 	{ | ||||
| 		switch (opt) { | ||||
| 			case 'd': | ||||
| @@ -202,11 +202,13 @@ int checkpath (int argc, char **argv) | ||||
| 				break; | ||||
| 			case 'm': | ||||
| 				if (parse_mode (&mode, optarg) != 0) | ||||
| 					eerrorx ("%s: invalid mode `%s'", applet, optarg); | ||||
| 					eerrorx ("%s: invalid mode `%s'", | ||||
| 						 applet, optarg); | ||||
| 				break; | ||||
| 			case 'o': | ||||
| 				if (parse_owner (&pw, &gr, optarg) != 0) | ||||
| 					eerrorx ("%s: owner `%s' not found", applet, optarg); | ||||
| 					eerrorx ("%s: owner `%s' not found", | ||||
| 						 applet, optarg); | ||||
| 				break; | ||||
|  | ||||
| 				case_RC_COMMON_GETOPT | ||||
|   | ||||
| @@ -81,7 +81,7 @@ static struct mntent *getmntfile (const char *file) | ||||
| 		if (strcmp (file, ent->mnt_dir) == 0) | ||||
| 			break; | ||||
| 	END_ENT; | ||||
| 	 | ||||
|  | ||||
| 	return (ent); | ||||
| } | ||||
| #endif | ||||
| @@ -134,7 +134,7 @@ int fstabinfo (int argc, char **argv) | ||||
| 	unsetenv ("EINFO_QUIET"); | ||||
|  | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, | ||||
| 							   longopts, (int *) 0)) != -1) | ||||
| 				   longopts, (int *) 0)) != -1) | ||||
| 	{ | ||||
| 		switch (opt) { | ||||
| 			case 'b': | ||||
| @@ -156,9 +156,9 @@ int fstabinfo (int argc, char **argv) | ||||
| 						START_ENT; | ||||
| 						while ((ent = GET_ENT)) { | ||||
| 							if (((optarg[0] == '=' && i == ENT_PASS (ent)) || | ||||
| 								 (optarg[0] == '<' && i > ENT_PASS (ent)) || | ||||
| 								 (optarg[0] == '>' && i < ENT_PASS (ent))) && | ||||
| 								strcmp (ENT_FILE (ent), "none") != 0) | ||||
| 							     (optarg[0] == '<' && i > ENT_PASS (ent)) || | ||||
| 							     (optarg[0] == '>' && i < ENT_PASS (ent))) && | ||||
| 							    strcmp (ENT_FILE (ent), "none") != 0) | ||||
| 								rc_strlist_add (&files, ENT_FILE (ent)); | ||||
| 						} | ||||
| 						END_ENT; | ||||
| @@ -182,7 +182,7 @@ int fstabinfo (int argc, char **argv) | ||||
| 				} | ||||
| 				break; | ||||
|  | ||||
| 			case_RC_COMMON_GETOPT | ||||
| 				case_RC_COMMON_GETOPT | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -86,8 +86,8 @@ struct args { | ||||
| }; | ||||
|  | ||||
| static int process_mount (char ***list, struct args *args, | ||||
| 						  char *from, char *to, char *fstype, char *options, | ||||
| 						  int netdev) | ||||
| 			  char *from, char *to, char *fstype, char *options, | ||||
| 			  int netdev) | ||||
| { | ||||
| 	char *p; | ||||
|  | ||||
| @@ -107,24 +107,24 @@ static int process_mount (char ***list, struct args *args, | ||||
| 			return (1); | ||||
| 	} else { | ||||
| 		if (args->node_regex && | ||||
| 			regexec (args->node_regex, from, 0, NULL, 0) != 0) | ||||
| 		    regexec (args->node_regex, from, 0, NULL, 0) != 0) | ||||
| 			return (1); | ||||
| 		if (args->skip_node_regex && | ||||
| 			regexec (args->skip_node_regex, from, 0, NULL, 0) == 0) | ||||
| 		    regexec (args->skip_node_regex, from, 0, NULL, 0) == 0) | ||||
| 			return (1); | ||||
|  | ||||
| 		if (args->fstype_regex && | ||||
| 			regexec (args->fstype_regex, fstype, 0, NULL, 0) != 0) | ||||
| 		    regexec (args->fstype_regex, fstype, 0, NULL, 0) != 0) | ||||
| 			return (-1); | ||||
| 		if (args->skip_fstype_regex && | ||||
| 			regexec (args->skip_fstype_regex, fstype, 0, NULL, 0) == 0) | ||||
| 		    regexec (args->skip_fstype_regex, fstype, 0, NULL, 0) == 0) | ||||
| 			return (-1); | ||||
|  | ||||
| 		if (args->options_regex && | ||||
| 			regexec (args->options_regex, options, 0, NULL, 0) != 0) | ||||
| 		    regexec (args->options_regex, options, 0, NULL, 0) != 0) | ||||
| 			return (-1); | ||||
| 		if (args->skip_options_regex && | ||||
| 			regexec (args->skip_options_regex, options, 0, NULL, 0) == 0) | ||||
| 		    regexec (args->skip_options_regex, options, 0, NULL, 0) == 0) | ||||
| 			return (-1); | ||||
| 	} | ||||
|  | ||||
| @@ -247,11 +247,11 @@ static char **find_mounts (struct args *args) | ||||
| 		} | ||||
|  | ||||
| 		process_mount (&list, args, | ||||
| 					   mnts[i].f_mntfromname, | ||||
| 					   mnts[i].f_mntonname, | ||||
| 					   mnts[i].f_fstypename, | ||||
| 					   options, | ||||
| 					   netdev); | ||||
| 			       mnts[i].f_mntfromname, | ||||
| 			       mnts[i].f_mntonname, | ||||
| 			       mnts[i].f_fstypename, | ||||
| 			       options, | ||||
| 			       netdev); | ||||
|  | ||||
| 		free (options); | ||||
| 		options = NULL; | ||||
| @@ -271,7 +271,7 @@ static struct mntent *getmntfile (const char *file) | ||||
| 		if (strcmp (file, ent->mnt_dir) == 0) | ||||
| 			break; | ||||
| 	endmntent (fp); | ||||
| 	 | ||||
|  | ||||
| 	return (ent); | ||||
| } | ||||
|  | ||||
| @@ -395,7 +395,7 @@ int mountinfo (int argc, char **argv) | ||||
| 	args.netdev = net_ignore; | ||||
|  | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, | ||||
| 							   longopts, (int *) 0)) != -1) | ||||
| 				   longopts, (int *) 0)) != -1) | ||||
| 	{ | ||||
| 		switch (opt) { | ||||
| 			case 'e': | ||||
| @@ -456,7 +456,7 @@ int mountinfo (int argc, char **argv) | ||||
| 	REG_FREE (args.skip_node_regex); | ||||
| 	REG_FREE (args.options_regex); | ||||
| 	REG_FREE (args.skip_options_regex); | ||||
| 	 | ||||
|  | ||||
| 	rc_strlist_reverse (nodes); | ||||
|  | ||||
| 	result = EXIT_FAILURE; | ||||
|   | ||||
| @@ -99,7 +99,7 @@ int rc_depend (int argc, char **argv) | ||||
| 	applet = basename_c (argv[0]);  | ||||
|  | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, | ||||
| 							   longopts, (int *) 0)) != -1) | ||||
| 				   longopts, (int *) 0)) != -1) | ||||
| 	{ | ||||
| 		switch (opt) { | ||||
| 			case 's': | ||||
| @@ -116,7 +116,7 @@ int rc_depend (int argc, char **argv) | ||||
| 				options &= RC_DEP_TRACE; | ||||
| 				break; | ||||
|  | ||||
| 			case_RC_COMMON_GETOPT | ||||
| 				case_RC_COMMON_GETOPT | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -140,7 +140,7 @@ int rc_depend (int argc, char **argv) | ||||
| 		rc_strlist_add (&list, argv[optind]); | ||||
| 		errno = 0; | ||||
| 		depends = rc_deptree_depends (deptree, NULL, (const char **) list, | ||||
| 									  runlevel, 0); | ||||
| 					      runlevel, 0); | ||||
| 		if (! depends && errno == ENOENT) | ||||
| 			eerror ("no dependency info for service `%s'", argv[optind]); | ||||
| 		else | ||||
| @@ -167,7 +167,7 @@ int rc_depend (int argc, char **argv) | ||||
| 	} | ||||
|  | ||||
| 	depends = rc_deptree_depends (deptree, (const char **) types, | ||||
| 								  (const char **) services, runlevel, options); | ||||
| 				      (const char **) services, runlevel, options); | ||||
|  | ||||
| 	if (depends) { | ||||
| 		STRLIST_FOREACH (depends, service, i) { | ||||
|   | ||||
| @@ -96,7 +96,7 @@ static void write_log (int logfd, const char *buffer, size_t bytes) | ||||
| 					in_term = true; | ||||
| 				break; | ||||
| 		} | ||||
| 		 | ||||
|  | ||||
| 		if (! in_escape) { | ||||
| 			write (logfd, p++, 1); | ||||
| 			continue; | ||||
| @@ -159,7 +159,7 @@ void rc_logger_open (const char *level) | ||||
| 		eerrorx ("pipe: %s", strerror (errno)); | ||||
| 	for (i = 0; i < 2; i++) | ||||
| 		if ((s = fcntl (signal_pipe[i], F_GETFD, 0) == -1 || | ||||
| 			 fcntl (signal_pipe[i], F_SETFD, s | FD_CLOEXEC) == -1)) | ||||
| 		     fcntl (signal_pipe[i], F_SETFD, s | FD_CLOEXEC) == -1)) | ||||
| 			eerrorx ("fcntl: %s", strerror (errno)); | ||||
|  | ||||
| 	tcgetattr (STDOUT_FILENO, &tt); | ||||
| @@ -213,7 +213,7 @@ void rc_logger_open (const char *level) | ||||
| 							if (logbuf_size - logbuf_len < bytes) { | ||||
| 								logbuf_size += BUFSIZ * 10; | ||||
| 								logbuf = xrealloc (logbuf, sizeof (char ) * | ||||
| 												   logbuf_size); | ||||
| 										   logbuf_size); | ||||
| 							} | ||||
|  | ||||
| 							memcpy (logbuf + logbuf_len, buffer, bytes); | ||||
| @@ -242,7 +242,7 @@ void rc_logger_open (const char *level) | ||||
| 			/* Try and cat our new logfile to a more permament location and then | ||||
| 			 * punt it */ | ||||
| 			system (MOVELOG); | ||||
| 			 | ||||
|  | ||||
| 			exit (0); | ||||
| 		default: | ||||
| 			setpgid (rc_logger_pid, 0); | ||||
| @@ -251,8 +251,8 @@ void rc_logger_open (const char *level) | ||||
| 			dup2 (slave_tty, STDOUT_FILENO); | ||||
| 			dup2 (slave_tty, STDERR_FILENO); | ||||
| 			if (slave_tty != STDIN_FILENO && | ||||
| 				slave_tty != STDOUT_FILENO && | ||||
| 				slave_tty != STDERR_FILENO) | ||||
| 			    slave_tty != STDOUT_FILENO && | ||||
| 			    slave_tty != STDERR_FILENO) | ||||
| 				close (slave_tty); | ||||
| 			close (signal_pipe[0]); | ||||
| 			signal_pipe[0] = -1; | ||||
|   | ||||
| @@ -186,7 +186,7 @@ char **env_filter (void) | ||||
| 		/* Ensure our PATH is prefixed with the system locations first | ||||
| 		   for a little extra security */ | ||||
| 		if (strcmp (env_name, "PATH") == 0 && | ||||
| 			strncmp (PATH_PREFIX, env_var, pplen) != 0) | ||||
| 		    strncmp (PATH_PREFIX, env_var, pplen) != 0) | ||||
| 		{ | ||||
| 			got_path = true; | ||||
| 			env_len = strlen (env_name) + strlen (env_var) + pplen + 2; | ||||
| @@ -233,7 +233,7 @@ char **env_filter (void) | ||||
| 	return (env); | ||||
| } | ||||
|  | ||||
| 	/* Other systems may need this at some point, but for now it's Linux only */ | ||||
| /* Other systems may need this at some point, but for now it's Linux only */ | ||||
| #ifdef __linux__ | ||||
| static bool file_regex (const char *file, const char *regex) | ||||
| { | ||||
| @@ -338,7 +338,7 @@ char **env_config (void) | ||||
| 	} else if (file_regex ("/proc/cpuinfo", "UML")) { | ||||
| 		snprintf (sys, sizeof (sys), "UML"); | ||||
| 	} else if (file_regex ("/proc/self/status", | ||||
| 						   "(s_context|VxID|envID):[[:space:]]*[1-9]")) | ||||
| 			       "(s_context|VxID|envID):[[:space:]]*[1-9]")) | ||||
| 	{ | ||||
| 		snprintf (sys, sizeof (sys), "VPS"); | ||||
| 	} | ||||
| @@ -381,7 +381,7 @@ char **env_config (void) | ||||
|  | ||||
| 	errno = 0; | ||||
| 	if ((! rc_conf_yesno ("rc_color") && errno == 0) || | ||||
| 		rc_conf_yesno ("rc_nocolor")) | ||||
| 	    rc_conf_yesno ("rc_nocolor")) | ||||
| 		rc_strlist_add (&env, "EINFO_COLOR=no"); | ||||
|  | ||||
| 	free (runlevel); | ||||
|   | ||||
| @@ -167,7 +167,7 @@ void rc_plugin_run (rc_hook_t hook, const char *value) | ||||
| 			 * plugin will probably hang when running in silent mode. */ | ||||
| 			for (i = 0; i < 2; i++) | ||||
| 				if ((flags = fcntl (pfd[i], F_GETFD, 0)) < 0 || | ||||
| 					fcntl (pfd[i], F_SETFD, flags | FD_CLOEXEC) < 0) | ||||
| 				    fcntl (pfd[i], F_SETFD, flags | FD_CLOEXEC) < 0) | ||||
| 					eerror ("fcntl: %s", strerror (errno)); | ||||
|  | ||||
| 			/* We run the plugin in a new process so we never crash | ||||
| @@ -214,7 +214,7 @@ void rc_plugin_run (rc_hook_t hook, const char *value) | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				 | ||||
|  | ||||
| 				free (buffer); | ||||
| 				close (pfd[0]); | ||||
|  | ||||
|   | ||||
| @@ -48,9 +48,9 @@ static const char *types_nua[] = { "ineed", "iuse", "iafter", NULL }; | ||||
| static void print_level (char *level) | ||||
| { | ||||
| 	printf ("Runlevel: %s%s%s\n", | ||||
| 			ecolor (ECOLOR_HILITE), | ||||
| 			level, | ||||
| 			ecolor (ECOLOR_NORMAL)); | ||||
| 		ecolor (ECOLOR_HILITE), | ||||
| 		level, | ||||
| 		ecolor (ECOLOR_NORMAL)); | ||||
| } | ||||
|  | ||||
| static void print_service (char *service) | ||||
| @@ -121,7 +121,7 @@ int rc_status (int argc, char **argv) | ||||
| 	int depopts = RC_DEP_STRICT | RC_DEP_START | RC_DEP_TRACE; | ||||
|  | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, longopts, | ||||
| 							   (int *) 0)) != -1) | ||||
| 				   (int *) 0)) != -1) | ||||
| 		switch (opt) { | ||||
| 			case 'a': | ||||
| 				levels = rc_runlevel_list (); | ||||
| @@ -155,7 +155,7 @@ int rc_status (int argc, char **argv) | ||||
| 				rc_strlist_free (services); | ||||
| 				exit (EXIT_SUCCESS); | ||||
|  | ||||
| 			case_RC_COMMON_GETOPT | ||||
| 				case_RC_COMMON_GETOPT | ||||
| 		} | ||||
|  | ||||
| 	while (optind < argc) | ||||
| @@ -178,8 +178,8 @@ int rc_status (int argc, char **argv) | ||||
| 		services = rc_services_in_runlevel (level); | ||||
| 		if (deptree) { | ||||
| 			ordered = rc_deptree_depends (deptree, types_nua, | ||||
| 										  (const char **) services, | ||||
| 										  level, depopts); | ||||
| 						      (const char **) services, | ||||
| 						      level, depopts); | ||||
| 			rc_strlist_free (services); | ||||
| 			services = ordered; | ||||
| 			ordered = NULL; | ||||
|   | ||||
| @@ -59,14 +59,14 @@ static int add (const char *runlevel, const char *service) | ||||
| 		eerror ("%s: service `%s' does not exist", applet, service); | ||||
| 	else if (rc_service_in_runlevel (service, runlevel)) { | ||||
| 		ewarn ("%s: %s already installed in runlevel `%s'; skipping", | ||||
| 			   applet, service, runlevel); | ||||
| 		       applet, service, runlevel); | ||||
| 		retval = 0; | ||||
| 	} else if (rc_service_add (runlevel, service)) { | ||||
| 		einfo ("%s added to runlevel %s", service, runlevel); | ||||
| 		retval = 1; | ||||
| 	} else | ||||
| 		eerror ("%s: failed to add service `%s' to runlevel `%s': %s", | ||||
| 				applet, service, runlevel, strerror (errno)); | ||||
| 			applet, service, runlevel, strerror (errno)); | ||||
|  | ||||
| 	return (retval); | ||||
| } | ||||
| @@ -83,10 +83,10 @@ static int delete (const char *runlevel, const char *service) | ||||
|  | ||||
| 	if (errno == ENOENT) | ||||
| 		eerror ("%s: service `%s' is not in the runlevel `%s'", | ||||
| 				applet, service, runlevel); | ||||
| 			applet, service, runlevel); | ||||
| 	else  | ||||
| 		eerror ("%s: failed to remove service `%s' from runlevel `%s': %s", | ||||
| 				applet, service, runlevel, strerror (errno)); | ||||
| 			applet, service, runlevel, strerror (errno)); | ||||
|  | ||||
| 	return (retval); | ||||
| } | ||||
| @@ -162,7 +162,7 @@ int rc_update (int argc, char **argv) | ||||
| 	applet = basename_c (argv[0]);  | ||||
|  | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, | ||||
| 							   longopts, (int *) 0)) != -1) | ||||
| 				   longopts, (int *) 0)) != -1) | ||||
| 	{ | ||||
| 		switch (opt) { | ||||
| 			case 'a': | ||||
| @@ -175,15 +175,15 @@ int rc_update (int argc, char **argv) | ||||
| 				action |= DOSHOW; | ||||
| 				break; | ||||
|  | ||||
| 			case_RC_COMMON_GETOPT | ||||
| 				case_RC_COMMON_GETOPT | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	verbose = rc_yesno (getenv ("EINFO_VERBOSE")); | ||||
|  | ||||
| 	if ((action & DOSHOW   && action != DOSHOW) || | ||||
| 		(action & DOADD    && action != DOADD) || | ||||
| 		(action & DODELETE && action != DODELETE)) | ||||
| 	    (action & DOADD    && action != DOADD) || | ||||
| 	    (action & DODELETE && action != DODELETE)) | ||||
| 		eerrorx ("%s: cannot mix commands", applet); | ||||
|  | ||||
| 	/* We need to be backwards compatible */ | ||||
| @@ -192,7 +192,7 @@ int rc_update (int argc, char **argv) | ||||
| 			if (strcmp (argv[optind], "add") == 0) | ||||
| 				action = DOADD; | ||||
| 			else if (strcmp (argv[optind], "delete") == 0 || | ||||
| 					 strcmp (argv[optind], "del") == 0) | ||||
| 				 strcmp (argv[optind], "del") == 0) | ||||
| 				action = DODELETE; | ||||
| 			else if (strcmp (argv[optind], "show") == 0) | ||||
| 				action = DOSHOW; | ||||
|   | ||||
							
								
								
									
										188
									
								
								src/rc/rc.c
									
									
									
									
									
								
							
							
						
						
									
										188
									
								
								src/rc/rc.c
									
									
									
									
									
								
							| @@ -123,8 +123,8 @@ static void clean_failed (void) | ||||
| 	if ((dp = opendir (RC_SVCDIR "/failed"))) { | ||||
| 		while ((d = readdir (dp))) { | ||||
| 			if (d->d_name[0] == '.' && | ||||
| 				(d->d_name[1] == '\0' || | ||||
| 				(d->d_name[1] == '.' && d->d_name[2] == '\0'))) | ||||
| 			    (d->d_name[1] == '\0' || | ||||
| 			     (d->d_name[1] == '.' && d->d_name[2] == '\0'))) | ||||
| 				continue; | ||||
|  | ||||
| 			i = strlen (RC_SVCDIR "/failed/") + strlen (d->d_name) + 1; | ||||
| @@ -133,7 +133,7 @@ static void clean_failed (void) | ||||
| 			if (path) { | ||||
| 				if (unlink (path)) | ||||
| 					eerror ("%s: unlink `%s': %s", applet, path, | ||||
| 							strerror (errno)); | ||||
| 						strerror (errno)); | ||||
| 				free (path); | ||||
| 			} | ||||
| 		} | ||||
| @@ -147,7 +147,7 @@ static void cleanup (void) | ||||
| 		pidlist_t *pl = service_pids; | ||||
|  | ||||
| 		rc_plugin_unload (); | ||||
| 		 | ||||
|  | ||||
| 		if (! rc_in_plugin && termios_orig) { | ||||
| 			tcsetattr (fileno (stdin), TCSANOW, termios_orig); | ||||
| 			free (termios_orig); | ||||
| @@ -204,21 +204,21 @@ static int do_e (int argc, char **argv) | ||||
|  | ||||
| 	if (strcmp (applet, "eval_ecolors") == 0) { | ||||
| 		printf ("GOOD='%s'\nWARN='%s'\nBAD='%s'\nHILITE='%s'\nBRACKET='%s'\nNORMAL='%s'\n", | ||||
| 				ecolor (ECOLOR_GOOD), | ||||
| 				ecolor (ECOLOR_WARN), | ||||
| 				ecolor (ECOLOR_BAD), | ||||
| 				ecolor (ECOLOR_HILITE), | ||||
| 				ecolor (ECOLOR_BRACKET), | ||||
| 				ecolor (ECOLOR_NORMAL)); | ||||
| 			ecolor (ECOLOR_GOOD), | ||||
| 			ecolor (ECOLOR_WARN), | ||||
| 			ecolor (ECOLOR_BAD), | ||||
| 			ecolor (ECOLOR_HILITE), | ||||
| 			ecolor (ECOLOR_BRACKET), | ||||
| 			ecolor (ECOLOR_NORMAL)); | ||||
| 		exit (EXIT_SUCCESS); | ||||
| 	} | ||||
|  | ||||
| 	if (argc > 0) { | ||||
|  | ||||
| 		if (strcmp (applet, "eend") == 0 || | ||||
| 			strcmp (applet, "ewend") == 0 || | ||||
| 			strcmp (applet, "veend") == 0 || | ||||
| 			strcmp (applet, "vweend") == 0) | ||||
| 		    strcmp (applet, "ewend") == 0 || | ||||
| 		    strcmp (applet, "veend") == 0 || | ||||
| 		    strcmp (applet, "vweend") == 0) | ||||
| 		{ | ||||
| 			errno = 0; | ||||
| 			retval = strtol (argv[0], NULL, 0); | ||||
| @@ -229,7 +229,7 @@ static int do_e (int argc, char **argv) | ||||
| 				argv++; | ||||
| 			} | ||||
| 		} else if (strcmp (applet, "esyslog") == 0 || | ||||
| 				   strcmp (applet, "elog") == 0) { | ||||
| 			   strcmp (applet, "elog") == 0) { | ||||
| 			char *dot = strchr (argv[0], '.'); | ||||
| 			if ((level = syslog_decode (dot + 1, prioritynames)) == -1) | ||||
| 				eerrorx ("%s: invalid log level `%s'", applet, argv[0]); | ||||
| @@ -405,7 +405,7 @@ static int do_mark_service (int argc, char **argv) | ||||
| 		if (runscript_pid && sscanf (runscript_pid, "%d", &pid) == 1) | ||||
| 			if (kill (pid, SIGHUP) != 0) | ||||
| 				eerror ("%s: failed to signal parent %d: %s", | ||||
| 						applet, pid, strerror (errno)); | ||||
| 					applet, pid, strerror (errno)); | ||||
|  | ||||
| 		/* Remove the exclusive time test. This ensures that it's not | ||||
| 		   in control as well */ | ||||
| @@ -415,7 +415,7 @@ static int do_mark_service (int argc, char **argv) | ||||
| 			4; | ||||
| 		mtime = xmalloc (l); | ||||
| 		snprintf (mtime, l, RC_SVCDIR "exclusive/%s.%s", | ||||
| 				  svcname, runscript_pid); | ||||
| 			  svcname, runscript_pid); | ||||
| 		if (exists (mtime) && unlink (mtime) != 0) | ||||
| 			eerror ("%s: unlink: %s", applet, strerror (errno)); | ||||
| 		free (mtime); | ||||
| @@ -436,7 +436,7 @@ static int do_value (int argc, char **argv) | ||||
| 		eerrorx ("%s: no option specified", applet); | ||||
|  | ||||
| 	if (strcmp (applet, "service_get_value") == 0 || | ||||
| 		strcmp (applet, "get_options") == 0) | ||||
| 	    strcmp (applet, "get_options") == 0) | ||||
| 	{ | ||||
| 		char *option = rc_service_value_get (service, argv[0]); | ||||
| 		if (option) { | ||||
| @@ -445,7 +445,7 @@ static int do_value (int argc, char **argv) | ||||
| 			ok = true; | ||||
| 		} | ||||
| 	} else if (strcmp (applet, "service_set_value") == 0 || | ||||
| 			   strcmp (applet, "save_options") == 0) | ||||
| 		   strcmp (applet, "save_options") == 0) | ||||
| 		ok = rc_service_value_set (service, argv[0], argv[1]); | ||||
| 	else | ||||
| 		eerrorx ("%s: unknown applet", applet); | ||||
| @@ -493,7 +493,7 @@ static char *proc_getent (const char *ent) | ||||
| 	} | ||||
|  | ||||
| 	if ((proc = rc_getline (fp)) && | ||||
| 		(p = strstr (proc, ent))) | ||||
| 	    (p = strstr (proc, ent))) | ||||
| 	{  | ||||
| 		i = p - proc; | ||||
| 		if (i == '\0' || proc[i - 1] == ' ') { | ||||
| @@ -554,9 +554,9 @@ static bool want_interactive (void) | ||||
| 		return (false); | ||||
|  | ||||
| 	if (PREVLEVEL && | ||||
| 		strcmp (PREVLEVEL, "N") != 0 && | ||||
| 		strcmp (PREVLEVEL, "S") != 0 && | ||||
| 		strcmp (PREVLEVEL, "1") != 0) | ||||
| 	    strcmp (PREVLEVEL, "N") != 0 && | ||||
| 	    strcmp (PREVLEVEL, "S") != 0 && | ||||
| 	    strcmp (PREVLEVEL, "1") != 0) | ||||
| 		return (false); | ||||
|  | ||||
| 	if (! gotinteractive) { | ||||
| @@ -609,11 +609,11 @@ static void sulogin (bool cont) | ||||
| 				execle (SULOGIN, SULOGIN, (char *) NULL, newenv); | ||||
|  | ||||
| 			eerror ("%s: unable to exec `%s': %s", applet, SULOGIN, | ||||
| 					strerror (errno)); | ||||
| 				strerror (errno)); | ||||
| #else | ||||
| 			execle ("/bin/sh", "/bin/sh", (char *) NULL, newenv); | ||||
| 			eerror ("%s: unable to exec `/bin/sh': %s", applet, | ||||
| 					strerror (errno)); | ||||
| 				strerror (errno)); | ||||
| #endif | ||||
| 			_exit (EXIT_FAILURE); | ||||
| 		} | ||||
| @@ -637,11 +637,11 @@ static void single_user (void) | ||||
| #ifdef __linux__ | ||||
| 	execl ("/sbin/telinit", "/sbin/telinit", "S", (char *) NULL); | ||||
| 	eerrorx ("%s: unable to exec `/sbin/telinit': %s", | ||||
| 			 applet, strerror (errno)); | ||||
| 		 applet, strerror (errno)); | ||||
| #else | ||||
| 	if (kill (1, SIGTERM) != 0) | ||||
| 		eerrorx ("%s: unable to send SIGTERM to init (pid 1): %s", | ||||
| 				 applet, strerror (errno)); | ||||
| 			 applet, strerror (errno)); | ||||
| 	exit (EXIT_SUCCESS); | ||||
| #endif | ||||
| } | ||||
| @@ -651,12 +651,12 @@ static bool set_ksoftlevel (const char *level) | ||||
| 	FILE *fp; | ||||
|  | ||||
| 	if (! level || | ||||
| 		strcmp (level, getenv ("RC_BOOTLEVEL")) == 0 || | ||||
| 		strcmp (level, RC_LEVEL_SINGLE) == 0 || | ||||
| 		strcmp (level, RC_LEVEL_SYSINIT) == 0) | ||||
| 	    strcmp (level, getenv ("RC_BOOTLEVEL")) == 0 || | ||||
| 	    strcmp (level, RC_LEVEL_SINGLE) == 0 || | ||||
| 	    strcmp (level, RC_LEVEL_SYSINIT) == 0) | ||||
| 	{ | ||||
| 		if (exists (RC_KSOFTLEVEL) && | ||||
| 			unlink (RC_KSOFTLEVEL) != 0) | ||||
| 		    unlink (RC_KSOFTLEVEL) != 0) | ||||
| 			eerror ("unlink `%s': %s", RC_KSOFTLEVEL, strerror (errno)); | ||||
| 		return (false); | ||||
| 	} | ||||
| @@ -786,11 +786,11 @@ static void handle_signal (int sig) | ||||
|  | ||||
| 			/* Only drop into single user mode if we're booting */ | ||||
| 			if ((PREVLEVEL && | ||||
| 				 (strcmp (PREVLEVEL, "S") == 0 || | ||||
| 				  strcmp (PREVLEVEL, "1") == 0)) || | ||||
| 				(RUNLEVEL && | ||||
| 				 (strcmp (RUNLEVEL, "S") == 0 || | ||||
| 				  strcmp (RUNLEVEL, "1") == 0))) | ||||
| 			     (strcmp (PREVLEVEL, "S") == 0 || | ||||
| 			      strcmp (PREVLEVEL, "1") == 0)) || | ||||
| 			    (RUNLEVEL && | ||||
| 			     (strcmp (RUNLEVEL, "S") == 0 || | ||||
| 			      strcmp (RUNLEVEL, "1") == 0))) | ||||
| 				single_user (); | ||||
|  | ||||
| 			exit (EXIT_FAILURE); | ||||
| @@ -814,7 +814,7 @@ static void run_script (const char *script) | ||||
| 	else if (pid == 0) { | ||||
| 		execl (script, script, (char *) NULL); | ||||
| 		eerror ("%s: unable to exec `%s': %s", | ||||
| 				script, applet, strerror (errno)); | ||||
| 			script, applet, strerror (errno)); | ||||
| 		_exit (EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| @@ -868,9 +868,9 @@ int main (int argc, char **argv) | ||||
| 	if (argc > 1 && (strcmp (argv[1], "--version") == 0)) { | ||||
| 		printf ("%s (OpenRC" | ||||
| #ifdef BRANDING | ||||
| 				" " BRANDING | ||||
| 			" " BRANDING | ||||
| #endif | ||||
| 				") version " VERSION "\n", applet); | ||||
| 			") version " VERSION "\n", applet); | ||||
| 		exit (EXIT_SUCCESS); | ||||
| 	} | ||||
|  | ||||
| @@ -885,7 +885,7 @@ int main (int argc, char **argv) | ||||
| 	else if (strcmp (applet, "rc-status") == 0) | ||||
| 		exit (rc_status (argc, argv)); | ||||
| 	else if (strcmp (applet, "rc-update") == 0 || | ||||
| 			 strcmp (applet, "update-rc") == 0) | ||||
| 		 strcmp (applet, "update-rc") == 0) | ||||
| 		exit (rc_update (argc, argv)); | ||||
| 	else if (strcmp (applet, "runscript") == 0) | ||||
| 		exit (runscript (argc, argv)); | ||||
| @@ -902,9 +902,9 @@ int main (int argc, char **argv) | ||||
| 		exit (do_e (argc, argv)); | ||||
|  | ||||
| 	if (strcmp (applet, "service_get_value") == 0 || | ||||
| 		strcmp (applet, "service_set_value") == 0 || | ||||
| 		strcmp (applet, "get_options") == 0 || | ||||
| 		strcmp (applet, "save_options") == 0) | ||||
| 	    strcmp (applet, "service_set_value") == 0 || | ||||
| 	    strcmp (applet, "get_options") == 0 || | ||||
| 	    strcmp (applet, "save_options") == 0) | ||||
| 		exit (do_value (argc, argv)); | ||||
|  | ||||
| 	if (strncmp (applet, "service_", strlen ("service_")) == 0) | ||||
| @@ -928,7 +928,7 @@ int main (int argc, char **argv) | ||||
| 		if (p && sscanf (p, "%d", &pid) == 1) { | ||||
| 			if (kill (pid, SIGUSR1) != 0) | ||||
| 				eerrorx ("rc-abort: failed to signal parent %d: %s", | ||||
| 						 pid, strerror (errno)); | ||||
| 					 pid, strerror (errno)); | ||||
| 			exit (EXIT_SUCCESS); | ||||
| 		} | ||||
| 		exit (EXIT_FAILURE); | ||||
| @@ -986,14 +986,14 @@ int main (int argc, char **argv) | ||||
| 	argc++; | ||||
| 	argv--; | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, | ||||
| 							   longopts, (int *) 0)) != -1) | ||||
| 				   longopts, (int *) 0)) != -1) | ||||
| 	{ | ||||
| 		switch (opt) { | ||||
| 			case 'o': | ||||
| 				if (strlen (optarg) == 0) | ||||
| 					optarg = NULL; | ||||
| 				exit (set_ksoftlevel (optarg) ? EXIT_SUCCESS : EXIT_FAILURE); | ||||
| 			case_RC_COMMON_GETOPT | ||||
| 				case_RC_COMMON_GETOPT | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -1035,9 +1035,9 @@ int main (int argc, char **argv) | ||||
| 	   */ | ||||
| 	if (newlevel) { | ||||
| 		if (strcmp (newlevel, RC_LEVEL_SYSINIT) == 0 && | ||||
| 			RUNLEVEL && | ||||
| 			(strcmp (RUNLEVEL, "S") == 0 || | ||||
| 			 strcmp (RUNLEVEL, "1") == 0)) | ||||
| 		    RUNLEVEL && | ||||
| 		    (strcmp (RUNLEVEL, "S") == 0 || | ||||
| 		     strcmp (RUNLEVEL, "1") == 0)) | ||||
| 		{ | ||||
| 			/* OK, we're either in runlevel 1 or single user mode */ | ||||
| 			struct utsname uts; | ||||
| @@ -1053,19 +1053,19 @@ int main (int argc, char **argv) | ||||
|  | ||||
| 			uname (&uts); | ||||
| 			printf ("\n   %sOpenRC %s" VERSION "%s is starting up %s%s%s\n\n", | ||||
| 					ecolor (ECOLOR_GOOD), ecolor (ECOLOR_HILITE), | ||||
| 					ecolor (ECOLOR_NORMAL), ecolor (ECOLOR_BRACKET), | ||||
| 				ecolor (ECOLOR_GOOD), ecolor (ECOLOR_HILITE), | ||||
| 				ecolor (ECOLOR_NORMAL), ecolor (ECOLOR_BRACKET), | ||||
| #ifdef BRANDING | ||||
| 					BRANDING | ||||
| 				BRANDING | ||||
| #else | ||||
| 					"" | ||||
| 				"" | ||||
| #endif | ||||
| 					, ecolor (ECOLOR_NORMAL)); | ||||
| 				, ecolor (ECOLOR_NORMAL)); | ||||
|  | ||||
| 			if (! rc_yesno (getenv ("EINFO_QUIET")) && | ||||
| 				rc_conf_yesno ("rc_interactive")) | ||||
| 			    rc_conf_yesno ("rc_interactive")) | ||||
| 				printf ("Press %sI%s to enter interactive boot mode\n\n", | ||||
| 						ecolor (ECOLOR_GOOD), ecolor (ECOLOR_NORMAL)); | ||||
| 					ecolor (ECOLOR_GOOD), ecolor (ECOLOR_NORMAL)); | ||||
|  | ||||
| 			setenv ("RC_SOFTLEVEL", newlevel, 1); | ||||
| 			rc_plugin_run (RC_HOOK_RUNLEVEL_START_IN, newlevel); | ||||
| @@ -1088,8 +1088,8 @@ int main (int argc, char **argv) | ||||
| 			exit (EXIT_SUCCESS); | ||||
| 		} else if (strcmp (newlevel, RC_LEVEL_SINGLE) == 0) { | ||||
| 			if (! RUNLEVEL || | ||||
| 				(strcmp (RUNLEVEL, "S") != 0 && | ||||
| 				 strcmp (RUNLEVEL, "1") != 0)) | ||||
| 			    (strcmp (RUNLEVEL, "S") != 0 && | ||||
| 			     strcmp (RUNLEVEL, "1") != 0)) | ||||
| 			{ | ||||
| 				/* Remember the current runlevel for when we come back */ | ||||
| 				set_ksoftlevel (runlevel); | ||||
| @@ -1097,27 +1097,27 @@ int main (int argc, char **argv) | ||||
| 			} | ||||
| 		} else if (strcmp (newlevel, RC_LEVEL_REBOOT) == 0) { | ||||
| 			if (! RUNLEVEL || | ||||
| 				strcmp (RUNLEVEL, "6") != 0) | ||||
| 			    strcmp (RUNLEVEL, "6") != 0) | ||||
| 			{ | ||||
| 				rc_logger_close (); | ||||
| 				execl (SHUTDOWN, SHUTDOWN, "-r", "now", (char *) NULL); | ||||
| 				eerrorx ("%s: unable to exec `" SHUTDOWN "': %s", | ||||
| 						 applet, strerror (errno)); | ||||
| 					 applet, strerror (errno)); | ||||
| 			} | ||||
| 		} else if (strcmp (newlevel, RC_LEVEL_SHUTDOWN) == 0) { | ||||
| 			if (! RUNLEVEL || | ||||
| 				strcmp (RUNLEVEL, "0") != 0) | ||||
| 			    strcmp (RUNLEVEL, "0") != 0) | ||||
| 			{ | ||||
| 				rc_logger_close (); | ||||
| 				execl (SHUTDOWN, SHUTDOWN, | ||||
| #ifdef __linux__ | ||||
| 					   "-h", | ||||
| 				       "-h", | ||||
| #else | ||||
| 					   "-p", | ||||
| 				       "-p", | ||||
| #endif | ||||
| 					   "now", (char *) NULL); | ||||
| 				       "now", (char *) NULL); | ||||
| 				eerrorx ("%s: unable to exec `" SHUTDOWN "': %s", | ||||
| 						 applet, strerror (errno)); | ||||
| 					 applet, strerror (errno)); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| @@ -1128,27 +1128,27 @@ int main (int argc, char **argv) | ||||
| 	/* We should only use ksoftlevel if we were in single user mode | ||||
| 	   If not, we need to erase ksoftlevel now. */ | ||||
| 	if (PREVLEVEL && | ||||
| 		(strcmp (PREVLEVEL, "1") == 0 || | ||||
| 		 strcmp (PREVLEVEL, "S") == 0 || | ||||
| 		 strcmp (PREVLEVEL, "N") == 0)) | ||||
| 	    (strcmp (PREVLEVEL, "1") == 0 || | ||||
| 	     strcmp (PREVLEVEL, "S") == 0 || | ||||
| 	     strcmp (PREVLEVEL, "N") == 0)) | ||||
| 	{ | ||||
| 		/* Try not to join boot and ksoftlevels together */ | ||||
| 		if (! newlevel || | ||||
| 			strcmp (newlevel, getenv ("RC_BOOTLEVEL")) != 0) | ||||
| 		    strcmp (newlevel, getenv ("RC_BOOTLEVEL")) != 0) | ||||
| 			if (get_ksoftlevel (ksoftbuffer, sizeof (ksoftbuffer))) | ||||
| 				newlevel = ksoftbuffer; | ||||
| 	} else if (! RUNLEVEL || | ||||
| 			   (strcmp (RUNLEVEL, "1") != 0 && | ||||
| 				strcmp (RUNLEVEL, "S") != 0 && | ||||
| 				strcmp (RUNLEVEL, "N") != 0)) | ||||
| 		   (strcmp (RUNLEVEL, "1") != 0 && | ||||
| 		    strcmp (RUNLEVEL, "S") != 0 && | ||||
| 		    strcmp (RUNLEVEL, "N") != 0)) | ||||
| 	{ | ||||
| 		set_ksoftlevel (NULL); | ||||
| 	} | ||||
|  | ||||
| 	if (newlevel && | ||||
| 		(strcmp (newlevel, RC_LEVEL_REBOOT) == 0 || | ||||
| 		 strcmp (newlevel, RC_LEVEL_SHUTDOWN) == 0 || | ||||
| 		 strcmp (newlevel, RC_LEVEL_SINGLE) == 0)) | ||||
| 	    (strcmp (newlevel, RC_LEVEL_REBOOT) == 0 || | ||||
| 	     strcmp (newlevel, RC_LEVEL_SHUTDOWN) == 0 || | ||||
| 	     strcmp (newlevel, RC_LEVEL_SINGLE) == 0)) | ||||
| 	{ | ||||
| 		going_down = true; | ||||
| 		rc_runlevel_set (newlevel); | ||||
| @@ -1190,12 +1190,12 @@ int main (int argc, char **argv) | ||||
| 	if ((dp = opendir (DEVBOOT))) { | ||||
| 		while ((d = readdir (dp))) { | ||||
| 			if (d->d_name[0] == '.' && | ||||
| 				(d->d_name[1] == '\0' || | ||||
| 				(d->d_name[1] == '.' && d->d_name[2] == '\0'))) | ||||
| 			    (d->d_name[1] == '\0' || | ||||
| 			     (d->d_name[1] == '.' && d->d_name[2] == '\0'))) | ||||
| 				continue; | ||||
|  | ||||
| 			if (rc_service_exists (d->d_name) && | ||||
| 				rc_service_plugable (d->d_name)) | ||||
| 			    rc_service_plugable (d->d_name)) | ||||
| 				rc_service_mark (d->d_name, RC_SERVICE_COLDPLUGGED); | ||||
|  | ||||
| 			i = strlen (DEVBOOT "/") + strlen (d->d_name) + 1; | ||||
| @@ -1204,7 +1204,7 @@ int main (int argc, char **argv) | ||||
| 			if (tmp) { | ||||
| 				if (unlink (tmp)) | ||||
| 					eerror ("%s: unlink `%s': %s", applet, tmp, | ||||
| 							strerror (errno)); | ||||
| 						strerror (errno)); | ||||
| 				free (tmp); | ||||
| 			} | ||||
| 		} | ||||
| @@ -1217,9 +1217,9 @@ int main (int argc, char **argv) | ||||
| 	   the device node to the init script to simulate the coldplug into | ||||
| 	   runlevel for our dependency tree to work. */ | ||||
| 	if (newlevel && strcmp (newlevel, bootlevel) == 0 && | ||||
| 		(strcmp (runlevel, RC_LEVEL_SINGLE) == 0 || | ||||
| 		 strcmp (runlevel, RC_LEVEL_SYSINIT) == 0) && | ||||
| 		rc_conf_yesno ("rc_coldplug")) | ||||
| 	    (strcmp (runlevel, RC_LEVEL_SINGLE) == 0 || | ||||
| 	     strcmp (runlevel, RC_LEVEL_SYSINIT) == 0) && | ||||
| 	    rc_conf_yesno ("rc_coldplug")) | ||||
| 	{ | ||||
| #if defined(__DragonFly__) || defined(__FreeBSD__) | ||||
| 		/* The net interfaces are easy - they're all in net /dev/net :) */ | ||||
| @@ -1229,7 +1229,7 @@ int main (int argc, char **argv) | ||||
| 				tmp = xmalloc (sizeof (char) * i); | ||||
| 				snprintf (tmp, i, "net.%s", d->d_name); | ||||
| 				if (rc_service_exists (tmp) && | ||||
| 					rc_service_plugable (tmp)) | ||||
| 				    rc_service_plugable (tmp)) | ||||
| 					rc_service_mark (tmp, RC_SERVICE_COLDPLUGGED); | ||||
| 				CHAR_FREE (tmp); | ||||
| 			} | ||||
| @@ -1242,7 +1242,7 @@ int main (int argc, char **argv) | ||||
| 		if ((dp = opendir ("/dev"))) { | ||||
| 			while ((d = readdir (dp))) { | ||||
| 				if (strncmp (d->d_name, "psm", 3) == 0 || | ||||
| 					strncmp (d->d_name, "ums", 3) == 0) | ||||
| 				    strncmp (d->d_name, "ums", 3) == 0) | ||||
| 				{ | ||||
| 					char *p = d->d_name + 3; | ||||
| 					if (p && isdigit ((int) *p)) { | ||||
| @@ -1250,7 +1250,7 @@ int main (int argc, char **argv) | ||||
| 						tmp = xmalloc (sizeof (char) * i); | ||||
| 						snprintf (tmp, i, "moused.%s", d->d_name); | ||||
| 						if (rc_service_exists (tmp) && | ||||
| 							rc_service_plugable (tmp)) | ||||
| 						    rc_service_plugable (tmp)) | ||||
| 							rc_service_mark (tmp, RC_SERVICE_COLDPLUGGED); | ||||
| 						CHAR_FREE (tmp); | ||||
| 					} | ||||
| @@ -1274,8 +1274,8 @@ int main (int argc, char **argv) | ||||
| 	rc_strlist_free (tmplist); | ||||
|  | ||||
| 	deporder = rc_deptree_depends (deptree, types_nua, | ||||
| 								   (const char **) stop_services, | ||||
| 								   runlevel, depoptions | RC_DEP_STOP); | ||||
| 				       (const char **) stop_services, | ||||
| 				       runlevel, depoptions | RC_DEP_STOP); | ||||
|  | ||||
| 	rc_strlist_free (stop_services); | ||||
| 	stop_services = deporder; | ||||
| @@ -1310,8 +1310,8 @@ int main (int argc, char **argv) | ||||
| 		rc_strlist_join (&coldplugged_services, tmplist); | ||||
| 		rc_strlist_free (tmplist); | ||||
| 		if (strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_SINGLE) != 0 && | ||||
| 			strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_SHUTDOWN) != 0 && | ||||
| 			strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_REBOOT) != 0) | ||||
| 		    strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_SHUTDOWN) != 0 && | ||||
| 		    strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_REBOOT) != 0) | ||||
| 		{ | ||||
| 			/* We need to include the boot runlevel services if we're not in it */ | ||||
| 			tmplist = rc_services_in_runlevel (bootlevel); | ||||
| @@ -1394,8 +1394,8 @@ int main (int argc, char **argv) | ||||
| 		   going to be started depends on us */ | ||||
| 		rc_strlist_add (&stopdeps, service); | ||||
| 		deporder = rc_deptree_depends (deptree, types_n, | ||||
| 									   (const char **) stopdeps, | ||||
| 									   runlevel, RC_DEP_STRICT); | ||||
| 					       (const char **) stopdeps, | ||||
| 					       runlevel, RC_DEP_STRICT); | ||||
| 		rc_strlist_free (stopdeps); | ||||
| 		stopdeps = NULL; | ||||
| 		found = false; | ||||
| @@ -1444,12 +1444,12 @@ int main (int argc, char **argv) | ||||
|  | ||||
| 	/* Run the halt script if needed */ | ||||
| 	if (strcmp (runlevel, RC_LEVEL_SHUTDOWN) == 0 || | ||||
| 		strcmp (runlevel, RC_LEVEL_REBOOT) == 0) | ||||
| 	    strcmp (runlevel, RC_LEVEL_REBOOT) == 0) | ||||
| 	{ | ||||
| 		rc_logger_close (); | ||||
| 		execl (HALTSH, HALTSH, runlevel, (char *) NULL); | ||||
| 		eerrorx ("%s: unable to exec `%s': %s", | ||||
| 				 applet, HALTSH, strerror (errno)); | ||||
| 			 applet, HALTSH, strerror (errno)); | ||||
| 	} | ||||
|  | ||||
| 	/* Single user is done now */ | ||||
| @@ -1468,8 +1468,8 @@ int main (int argc, char **argv) | ||||
|  | ||||
| 	/* Order the services to start */ | ||||
| 	deporder = rc_deptree_depends (deptree, types_nua, | ||||
| 								   (const char **) start_services, | ||||
| 								   runlevel, depoptions | RC_DEP_START); | ||||
| 				       (const char **) start_services, | ||||
| 				       runlevel, depoptions | RC_DEP_START); | ||||
| 	rc_strlist_free (start_services); | ||||
| 	start_services = deporder; | ||||
| 	deporder = NULL; | ||||
|   | ||||
| @@ -262,18 +262,18 @@ static void start_services (char **list) { | ||||
| 		return; | ||||
|  | ||||
| 	if (state & RC_SERVICE_INACTIVE || | ||||
| 		state & RC_SERVICE_WASINACTIVE || | ||||
| 		state & RC_SERVICE_STARTING || | ||||
| 		state & RC_SERVICE_STARTED) | ||||
| 	    state & RC_SERVICE_WASINACTIVE || | ||||
| 	    state & RC_SERVICE_STARTING || | ||||
| 	    state & RC_SERVICE_STARTED) | ||||
| 	{ | ||||
| 		STRLIST_FOREACH (list, svc, i) { | ||||
| 			if (rc_service_state (svc) & RC_SERVICE_STOPPED) { | ||||
| 				if (state & RC_SERVICE_INACTIVE || | ||||
| 					state & RC_SERVICE_WASINACTIVE) | ||||
| 				    state & RC_SERVICE_WASINACTIVE) | ||||
| 				{ | ||||
| 					rc_service_schedule_start (service, svc); | ||||
| 					ewarn ("WARNING: %s is scheduled to started when %s has started", | ||||
| 						   svc, applet); | ||||
| 					       svc, applet); | ||||
| 				} else | ||||
| 					rc_service_start (svc); | ||||
| 			} | ||||
| @@ -404,7 +404,7 @@ static bool svc_exec (const char *arg1, const char *arg2) | ||||
| 		eerrorx ("%s: pipe: %s", service, applet); | ||||
| 	for (i = 0; i < 2; i++) | ||||
| 		if ((flags = fcntl (signal_pipe[i], F_GETFD, 0) == -1 || | ||||
| 			 fcntl (signal_pipe[i], F_SETFD, flags | FD_CLOEXEC) == -1)) | ||||
| 		     fcntl (signal_pipe[i], F_SETFD, flags | FD_CLOEXEC) == -1)) | ||||
| 			eerrorx ("%s: fcntl: %s", service, strerror (errno)); | ||||
|  | ||||
| 	/* Open a pty for our prefixed output | ||||
| @@ -439,15 +439,15 @@ static bool svc_exec (const char *arg1, const char *arg2) | ||||
|  | ||||
| 		if (exists (RC_SVCDIR "/runscript.sh")) { | ||||
| 			execl (RC_SVCDIR "/runscript.sh", RC_SVCDIR "/runscript.sh", | ||||
| 				   service, arg1, arg2, (char *) NULL); | ||||
| 			       service, arg1, arg2, (char *) NULL); | ||||
| 			eerror ("%s: exec `" RC_SVCDIR "/runscript.sh': %s", | ||||
| 					service, strerror (errno)); | ||||
| 				service, strerror (errno)); | ||||
| 			_exit (EXIT_FAILURE); | ||||
| 		} else { | ||||
| 			execl (RC_LIBDIR "/sh/runscript.sh", RC_LIBDIR "/sh/runscript.sh", | ||||
| 				   service, arg1, arg2, (char *) NULL); | ||||
| 			       service, arg1, arg2, (char *) NULL); | ||||
| 			eerror ("%s: exec `" RC_LIBDIR "/sh/runscript.sh': %s", | ||||
| 					service, strerror (errno)); | ||||
| 				service, strerror (errno)); | ||||
| 			_exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 	} | ||||
| @@ -584,9 +584,9 @@ static void make_exclusive () | ||||
| 		exclusive = rc_strcatpaths (RC_SVCDIR, "exclusive", applet, (char *) NULL); | ||||
|  | ||||
| 	if (mkfifo (exclusive, 0600) != 0 && errno != EEXIST && | ||||
| 		(errno != EACCES || geteuid () == 0)) | ||||
| 	    (errno != EACCES || geteuid () == 0)) | ||||
| 		eerrorx ("%s: unable to create fifo `%s': %s", | ||||
| 				 applet, exclusive, strerror (errno)); | ||||
| 			 applet, exclusive, strerror (errno)); | ||||
|  | ||||
| 	path = rc_strcatpaths (RC_SVCDIR, "exclusive", applet, (char *) NULL); | ||||
| 	i = strlen (path) + 16; | ||||
| @@ -596,7 +596,7 @@ static void make_exclusive () | ||||
|  | ||||
| 	if (exists (mtime_test) && unlink (mtime_test) != 0) { | ||||
| 		eerror ("%s: unlink `%s': %s", | ||||
| 				applet, mtime_test, strerror (errno)); | ||||
| 			applet, mtime_test, strerror (errno)); | ||||
| 		free (mtime_test); | ||||
| 		mtime_test = NULL; | ||||
| 		return; | ||||
| @@ -604,7 +604,7 @@ static void make_exclusive () | ||||
|  | ||||
| 	if (symlink (service, mtime_test) != 0) { | ||||
| 		eerror ("%s: symlink `%s' to `%s': %s", | ||||
| 				applet, service, mtime_test, strerror (errno)); | ||||
| 			applet, service, mtime_test, strerror (errno)); | ||||
| 		free (mtime_test); | ||||
| 		mtime_test = NULL; | ||||
| 	} | ||||
| @@ -645,7 +645,7 @@ static void svc_start (bool deps) | ||||
|  | ||||
| 	if (rc_yesno (getenv ("IN_HOTPLUG")) || in_background) { | ||||
| 		if (! state & RC_SERVICE_INACTIVE && | ||||
| 			! state & RC_SERVICE_STOPPED) | ||||
| 		    ! state & RC_SERVICE_STOPPED) | ||||
| 			exit (EXIT_FAILURE); | ||||
| 		background = true; | ||||
| 	} | ||||
| @@ -694,11 +694,11 @@ static void svc_start (bool deps) | ||||
|  | ||||
| 		rc_strlist_free (need_services); | ||||
| 		need_services = rc_deptree_depends (deptree, types_n, svcl, | ||||
| 											softlevel, depoptions); | ||||
| 						    softlevel, depoptions); | ||||
|  | ||||
| 		rc_strlist_free (use_services); | ||||
| 		use_services = rc_deptree_depends (deptree, types_nu, svcl, | ||||
| 										   softlevel, depoptions); | ||||
| 						   softlevel, depoptions); | ||||
|  | ||||
| 		if (! rc_runlevel_starting ()) { | ||||
| 			STRLIST_FOREACH (use_services, svc, i) | ||||
| @@ -711,7 +711,7 @@ static void svc_start (bool deps) | ||||
|  | ||||
| 		/* Now wait for them to start */ | ||||
| 		services = rc_deptree_depends (deptree, types_nua, svcl, | ||||
| 									   softlevel, depoptions); | ||||
| 					       softlevel, depoptions); | ||||
|  | ||||
| 		/* We use tmplist to hold our scheduled by list */ | ||||
| 		rc_strlist_free (tmplist); | ||||
| @@ -725,7 +725,7 @@ static void svc_start (bool deps) | ||||
| 			/* Don't wait for services which went inactive but are now in | ||||
| 			 * starting state which we are after */ | ||||
| 			if (svcs & RC_SERVICE_STARTING && | ||||
| 				svcs & RC_SERVICE_WASINACTIVE) { | ||||
| 			    svcs & RC_SERVICE_WASINACTIVE) { | ||||
| 				bool use = false; | ||||
| 				STRLIST_FOREACH (use_services, svc2, j) | ||||
| 					if (strcmp (svc, svc2) == 0) { | ||||
| @@ -744,11 +744,11 @@ static void svc_start (bool deps) | ||||
| 			STRLIST_FOREACH (need_services, svc2, j) | ||||
| 				if (strcmp (svc, svc2) == 0) { | ||||
| 					if (svcs & RC_SERVICE_INACTIVE || | ||||
| 						svcs & RC_SERVICE_WASINACTIVE) | ||||
| 					    svcs & RC_SERVICE_WASINACTIVE) | ||||
| 						rc_strlist_add (&tmplist, svc); | ||||
| 					else | ||||
| 						eerrorx ("ERROR: cannot start %s as %s would not start", | ||||
| 								 applet, svc); | ||||
| 							 applet, svc); | ||||
| 				} | ||||
| 		} | ||||
|  | ||||
| @@ -786,7 +786,7 @@ static void svc_start (bool deps) | ||||
| 				p += snprintf (p, len, "%s", svc); | ||||
| 			} | ||||
| 			ewarnx ("WARNING: %s is scheduled to start when %s has started", | ||||
| 					applet, tmp); | ||||
| 				applet, tmp); | ||||
| 		} | ||||
|  | ||||
| 		rc_strlist_free (services); | ||||
| @@ -852,12 +852,12 @@ static void svc_stop (bool deps) | ||||
| 	rc_service_state_t state = rc_service_state (service); | ||||
|  | ||||
| 	if (rc_runlevel_stopping () && | ||||
| 		state & RC_SERVICE_FAILED) | ||||
| 	    state & RC_SERVICE_FAILED) | ||||
| 		exit (EXIT_FAILURE); | ||||
|  | ||||
| 	if (rc_yesno (getenv ("IN_HOTPLUG")) || in_background) | ||||
| 		if (! (state & RC_SERVICE_STARTED) &&  | ||||
| 			! (state & RC_SERVICE_INACTIVE)) | ||||
| 		    ! (state & RC_SERVICE_INACTIVE)) | ||||
| 			exit (EXIT_FAILURE); | ||||
|  | ||||
| 	if (state & RC_SERVICE_STOPPED) { | ||||
| @@ -875,7 +875,7 @@ static void svc_stop (bool deps) | ||||
| 	rc_plugin_run (RC_HOOK_SERVICE_STOP_IN, applet); | ||||
|  | ||||
| 	if (! rc_runlevel_stopping () && | ||||
| 		rc_service_in_runlevel (service, RC_LEVEL_BOOT)) | ||||
| 	    rc_service_in_runlevel (service, RC_LEVEL_BOOT)) | ||||
| 		ewarn ("WARNING: you are stopping a boot service"); | ||||
|  | ||||
| 	if (deps && ! (state & RC_SERVICE_WASINACTIVE)) { | ||||
| @@ -896,17 +896,17 @@ static void svc_stop (bool deps) | ||||
| 		tmplist = NULL; | ||||
| 		rc_strlist_free (services); | ||||
| 		services = rc_deptree_depends (deptree, types_m, svcl, | ||||
| 									   softlevel, depoptions); | ||||
| 					       softlevel, depoptions); | ||||
| 		rc_strlist_reverse (services); | ||||
| 		STRLIST_FOREACH (services, svc, i) { | ||||
| 			rc_service_state_t svcs = rc_service_state (svc); | ||||
| 			if (svcs & RC_SERVICE_STARTED ||  | ||||
| 				svcs & RC_SERVICE_INACTIVE) | ||||
| 			    svcs & RC_SERVICE_INACTIVE) | ||||
| 			{ | ||||
| 				svc_wait (deptree, svc); | ||||
| 				svcs = rc_service_state (svc); | ||||
| 				if (svcs & RC_SERVICE_STARTED ||  | ||||
| 					svcs & RC_SERVICE_INACTIVE) | ||||
| 				    svcs & RC_SERVICE_INACTIVE) | ||||
| 				{ | ||||
| 					pid_t pid = rc_service_stop (svc); | ||||
| 					if (! rc_conf_yesno ("rc_parallel")) | ||||
| @@ -928,15 +928,15 @@ static void svc_stop (bool deps) | ||||
| 				if (rc_runlevel_stopping ()) { | ||||
| 					/* If shutting down, we should stop even if a dependant failed */ | ||||
| 					if (softlevel && | ||||
| 						(strcmp (softlevel, RC_LEVEL_SHUTDOWN) == 0 || | ||||
| 						 strcmp (softlevel, RC_LEVEL_REBOOT) == 0 || | ||||
| 						 strcmp (softlevel, RC_LEVEL_SINGLE) == 0)) | ||||
| 					    (strcmp (softlevel, RC_LEVEL_SHUTDOWN) == 0 || | ||||
| 					     strcmp (softlevel, RC_LEVEL_REBOOT) == 0 || | ||||
| 					     strcmp (softlevel, RC_LEVEL_SINGLE) == 0)) | ||||
| 						continue; | ||||
| 					rc_service_mark (service, RC_SERVICE_FAILED); | ||||
| 				} | ||||
|  | ||||
| 				eerrorx ("ERROR:  cannot stop %s as %s is still up", | ||||
| 						 applet, svc); | ||||
| 					 applet, svc); | ||||
| 			} | ||||
| 		} | ||||
| 		rc_strlist_free (tmplist); | ||||
| @@ -945,7 +945,7 @@ static void svc_stop (bool deps) | ||||
| 		/* We now wait for other services that may use us and are stopping | ||||
| 		   This is important when a runlevel stops */ | ||||
| 		services = rc_deptree_depends (deptree, types_mua, svcl, | ||||
| 									   softlevel, depoptions); | ||||
| 					       softlevel, depoptions); | ||||
| 		STRLIST_FOREACH (services, svc, i) { | ||||
| 			if (rc_service_state (svc) & RC_SERVICE_STOPPED) | ||||
| 				continue; | ||||
| @@ -1161,7 +1161,7 @@ int runscript (int argc, char **argv) | ||||
|  | ||||
| 	/* Right then, parse any options there may be */ | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, | ||||
| 							   longopts, (int *) 0)) != -1) | ||||
| 				   longopts, (int *) 0)) != -1) | ||||
| 		switch (opt) { | ||||
| 			case 'd': | ||||
| 				setenv ("RC_DEBUG", "yes", 1); | ||||
| @@ -1209,7 +1209,7 @@ int runscript (int argc, char **argv) | ||||
| 			exit (EXIT_FAILURE); | ||||
|  | ||||
| 		if (strcmp (optarg, "status") != 0 && | ||||
| 			strcmp (optarg, "help") != 0) { | ||||
| 		    strcmp (optarg, "help") != 0) { | ||||
| 			/* Only root should be able to run us */ | ||||
| 		} | ||||
|  | ||||
| @@ -1223,7 +1223,7 @@ int runscript (int argc, char **argv) | ||||
| 		doneone = true; | ||||
|  | ||||
| 		if (strcmp (optarg, "describe") == 0 || | ||||
| 			strcmp (optarg, "help") == 0) | ||||
| 		    strcmp (optarg, "help") == 0) | ||||
| 		{ | ||||
| 			char *save = prefix; | ||||
|  | ||||
| @@ -1232,12 +1232,12 @@ int runscript (int argc, char **argv) | ||||
| 			svc_exec (optarg, NULL); | ||||
| 			eprefix (save); | ||||
| 		} else if (strcmp (optarg, "ineed") == 0 || | ||||
| 				   strcmp (optarg, "iuse") == 0 || | ||||
| 				   strcmp (optarg, "needsme") == 0 || | ||||
| 				   strcmp (optarg, "usesme") == 0 || | ||||
| 				   strcmp (optarg, "iafter") == 0 || | ||||
| 				   strcmp (optarg, "ibefore") == 0 || | ||||
| 				   strcmp (optarg, "iprovide") == 0) { | ||||
| 			   strcmp (optarg, "iuse") == 0 || | ||||
| 			   strcmp (optarg, "needsme") == 0 || | ||||
| 			   strcmp (optarg, "usesme") == 0 || | ||||
| 			   strcmp (optarg, "iafter") == 0 || | ||||
| 			   strcmp (optarg, "ibefore") == 0 || | ||||
| 			   strcmp (optarg, "iprovide") == 0) { | ||||
| 			int depoptions = RC_DEP_TRACE; | ||||
| 			const char *t[] = { optarg, NULL }; | ||||
| 			const char *s[] = { applet, NULL }; | ||||
| @@ -1264,7 +1264,7 @@ int runscript (int argc, char **argv) | ||||
| 				eerrorx ("%s: root access required", applet); | ||||
|  | ||||
| 			if (strcmp (optarg, "conditionalrestart") == 0 || | ||||
| 				strcmp (optarg, "condrestart") == 0) | ||||
| 			    strcmp (optarg, "condrestart") == 0) | ||||
| 			{ | ||||
| 				if (rc_service_state (service) & RC_SERVICE_STARTED) | ||||
| 					svc_restart (deps); | ||||
| @@ -1280,12 +1280,12 @@ int runscript (int argc, char **argv) | ||||
|  | ||||
| 				if (deps) { | ||||
| 					if (! in_background && | ||||
| 						! rc_runlevel_stopping () && | ||||
| 						rc_service_state (service) & RC_SERVICE_STOPPED) | ||||
| 					    ! rc_runlevel_stopping () && | ||||
| 					    rc_service_state (service) & RC_SERVICE_STOPPED) | ||||
| 						uncoldplug (); | ||||
|  | ||||
| 					if (in_background && | ||||
| 						rc_service_state (service) & RC_SERVICE_INACTIVE) | ||||
| 					    rc_service_state (service) & RC_SERVICE_INACTIVE) | ||||
| 					{ | ||||
| 						int j; | ||||
| 						STRLIST_FOREACH (restart_services, svc, j) | ||||
|   | ||||
| @@ -168,7 +168,7 @@ static int parse_signal (const char *sig) | ||||
|  | ||||
| 	for (i = 0; i < sizeof (signallist) / sizeof (signallist[0]); i++) | ||||
| 		if (strcmp (sig, signallist[i].name) == 0 || | ||||
| 			(s && strcmp (s, signallist[i].name) == 0)) | ||||
| 		    (s && strcmp (s, signallist[i].name) == 0)) | ||||
| 			return (signallist[i].signal); | ||||
|  | ||||
| 	eerrorx ("%s: `%s' is not a valid signal", applet, sig); | ||||
| @@ -186,9 +186,9 @@ static void parse_schedule_item (schedulelist_t *item, const char *string) | ||||
| 		errno = 0; | ||||
| 		if (sscanf (string, "%d", &item->value) != 1) | ||||
| 			eerrorx ("%s: invalid timeout value in schedule `%s'", applet, | ||||
| 					 string); | ||||
| 				 string); | ||||
| 	} else if ((after_hyph = string + (string[0] == '-')) && | ||||
| 			 ((sig = parse_signal (after_hyph)) != -1)) | ||||
| 		   ((sig = parse_signal (after_hyph)) != -1)) | ||||
| 	{ | ||||
| 		item->type = schedule_signal; | ||||
| 		item->value = (int) sig; | ||||
| @@ -253,7 +253,7 @@ static void parse_schedule (const char *string, int default_signal) | ||||
| 		if (next->type == schedule_forever) { | ||||
| 			if (repeatat) | ||||
| 				eerrorx ("%s: invalid schedule, `forever' appears more than once", | ||||
| 						 applet); | ||||
| 					 applet); | ||||
|  | ||||
| 			repeatat = next; | ||||
| 			continue; | ||||
| @@ -305,8 +305,8 @@ static pid_t get_pid (const char *pidfile, bool quiet) | ||||
|  | ||||
| /* return number of processed killed, -1 on error */ | ||||
| static int do_stop (const char *exec, const char *cmd, | ||||
| 					const char *pidfile, uid_t uid,int sig, | ||||
| 					bool quiet, bool verbose, bool test) | ||||
| 		    const char *pidfile, uid_t uid,int sig, | ||||
| 		    bool quiet, bool verbose, bool test) | ||||
| { | ||||
| 	pid_t *pids;  | ||||
| 	bool killed; | ||||
| @@ -338,7 +338,7 @@ static int do_stop (const char *exec, const char *cmd, | ||||
| 		killed = (kill (pids[i], sig) == 0 || errno == ESRCH ? true : false); | ||||
| 		if (verbose) | ||||
| 			eend (killed ? 0 : 1, "%s: failed to send signal %d to PID %d: %s", | ||||
| 				  applet, sig, pids[i], strerror (errno)); | ||||
| 			      applet, sig, pids[i], strerror (errno)); | ||||
| 		if (! killed) { | ||||
| 			nkilled = -1; | ||||
| 		} else { | ||||
| @@ -352,8 +352,8 @@ static int do_stop (const char *exec, const char *cmd, | ||||
| } | ||||
|  | ||||
| static int run_stop_schedule (const char *exec, const char *cmd, | ||||
| 							  const char *pidfile, uid_t uid, | ||||
| 							  bool quiet, bool verbose, bool test) | ||||
| 			      const char *pidfile, uid_t uid, | ||||
| 			      bool quiet, bool verbose, bool test) | ||||
| { | ||||
| 	schedulelist_t *item = schedule; | ||||
| 	int nkilled = 0; | ||||
| @@ -382,7 +382,7 @@ static int run_stop_schedule (const char *exec, const char *cmd, | ||||
| 			case schedule_signal: | ||||
| 				nrunning = 0; | ||||
| 				nkilled = do_stop (exec, cmd, pidfile, uid, item->value, | ||||
| 								   quiet, verbose, test); | ||||
| 						   quiet, verbose, test); | ||||
| 				if (nkilled == 0) { | ||||
| 					if (tkilled == 0) { | ||||
| 						if (! quiet) | ||||
| @@ -407,7 +407,7 @@ static int run_stop_schedule (const char *exec, const char *cmd, | ||||
|  | ||||
| 				while (nloops) { | ||||
| 					if ((nrunning = do_stop (exec, cmd, pidfile, | ||||
| 											 uid, 0, true, false, true)) == 0) | ||||
| 								 uid, 0, true, false, true)) == 0) | ||||
| 						return (true); | ||||
|  | ||||
| 					if (nanosleep (&ts, NULL) == -1) { | ||||
| @@ -584,7 +584,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 			eerror ("%s: invalid nice level `%s' (SSD_NICELEVEL)", applet, env); | ||||
|  | ||||
| 	while ((opt = getopt_long (argc, argv, getoptstring, longopts, | ||||
| 							   (int *) 0)) != -1) | ||||
| 				   (int *) 0)) != -1) | ||||
| 		switch (opt) { | ||||
| 			case 'K':  /* --stop */ | ||||
| 				stop = true; | ||||
| @@ -702,7 +702,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 				redirect_stderr = optarg; | ||||
| 				break; | ||||
|  | ||||
| 			case_RC_COMMON_GETOPT | ||||
| 				case_RC_COMMON_GETOPT | ||||
| 		} | ||||
|  | ||||
| 	quiet = rc_yesno (getenv ("EINFO_QUIET")); | ||||
| @@ -712,9 +712,9 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 	 * instead of forcing --stop --oknodo as well */ | ||||
| 	if (! start && ! stop) | ||||
| 		if (sig != SIGINT && | ||||
| 			sig != SIGTERM && | ||||
| 			sig != SIGQUIT && | ||||
| 			sig != SIGKILL) | ||||
| 		    sig != SIGTERM && | ||||
| 		    sig != SIGQUIT && | ||||
| 		    sig != SIGKILL) | ||||
| 		{ | ||||
| 			oknodo = true; | ||||
| 			stop = true; | ||||
| @@ -737,7 +737,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
|  | ||||
| 	if ((redirect_stdout || redirect_stderr) && ! background) | ||||
| 		eerrorx ("%s: --stdout and --stderr are only relevant with --background", | ||||
| 				 applet); | ||||
| 			 applet); | ||||
|  | ||||
| 	argc -= optind; | ||||
| 	argv += optind; | ||||
| @@ -839,7 +839,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 		if (nicelevel) { | ||||
| 			if (setpriority (PRIO_PROCESS, mypid, nicelevel) == -1) | ||||
| 				eerrorx ("%s: setpritory %d: %s", applet, nicelevel, | ||||
| 						 strerror(errno)); | ||||
| 					 strerror(errno)); | ||||
| 		} | ||||
|  | ||||
| 		if (ch_root && chroot (ch_root) < 0) | ||||
| @@ -852,7 +852,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 			FILE *fp = fopen (pidfile, "w"); | ||||
| 			if (! fp) | ||||
| 				eerrorx ("%s: fopen `%s': %s", applet, pidfile, strerror | ||||
| 						 (errno)); | ||||
| 					 (errno)); | ||||
| 			fprintf (fp, "%d\n", mypid); | ||||
| 			fclose (fp); | ||||
| 		} | ||||
| @@ -902,7 +902,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 		/* Clean the environment of any RC_ variables */ | ||||
| 		STRLIST_FOREACH (environ, env, i) { | ||||
| 			if (strncmp (env, "RC_", 3) == 0 || | ||||
| 				strncmp (env, "SSD_NICELEVEL=", strlen ("SSD_NICELEVEL=")) == 0) | ||||
| 			    strncmp (env, "SSD_NICELEVEL=", strlen ("SSD_NICELEVEL=")) == 0) | ||||
| 				continue; | ||||
|  | ||||
| 			/* For the path, remove the rcscript bin dir from it */ | ||||
| @@ -918,9 +918,9 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 				p += 5; | ||||
| 				while ((token = strsep (&p, ":"))) { | ||||
| 					if (strcmp (token, RC_LIBDIR "/bin") == 0 || | ||||
| 						strcmp (token, RC_LIBDIR "/sbin") == 0) | ||||
| 					    strcmp (token, RC_LIBDIR "/sbin") == 0) | ||||
| 						continue; | ||||
| 					 | ||||
|  | ||||
| 					t = strlen (token); | ||||
| 					if (newpath) { | ||||
| 						l = strlen (newpath); | ||||
| @@ -949,15 +949,15 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 		stderr_fd = devnull_fd; | ||||
| 		if (redirect_stdout) { | ||||
| 			if ((stdout_fd = open (redirect_stdout, O_WRONLY | O_CREAT | O_APPEND, | ||||
| 								   S_IRUSR | S_IWUSR)) == -1) | ||||
| 					       S_IRUSR | S_IWUSR)) == -1) | ||||
| 				eerrorx ("%s: unable to open the logfile for stdout `%s': %s", | ||||
| 						 applet, redirect_stdout, strerror (errno)); | ||||
| 					 applet, redirect_stdout, strerror (errno)); | ||||
| 		} | ||||
| 		if (redirect_stderr) { | ||||
| 			if ((stderr_fd = open (redirect_stderr, O_WRONLY | O_CREAT | O_APPEND, | ||||
| 								   S_IRUSR | S_IWUSR)) == -1) | ||||
| 					       S_IRUSR | S_IWUSR)) == -1) | ||||
| 				eerrorx ("%s: unable to open the logfile for stderr `%s': %s", | ||||
| 						 applet, redirect_stderr, strerror (errno)); | ||||
| 					 applet, redirect_stderr, strerror (errno)); | ||||
| 		} | ||||
|  | ||||
| 		if (background) { | ||||
| @@ -1011,7 +1011,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 		int nloops = START_WAIT / POLL_INTERVAL; | ||||
| 		int nloopsp = WAIT_PIDFILE / POLL_INTERVAL; | ||||
| 		bool alive = false; | ||||
| 		 | ||||
|  | ||||
| 		ts.tv_sec = 0; | ||||
| 		ts.tv_nsec = POLL_INTERVAL; | ||||
|  | ||||
| @@ -1049,7 +1049,7 @@ int start_stop_daemon (int argc, char **argv) | ||||
| 					if (get_pid (pidfile, true) == -1) { | ||||
| 						if (! nloopsp) | ||||
| 							eerrorx ("%s: did not create a valid pid in `%s'", | ||||
| 									 applet, pidfile); | ||||
| 								 applet, pidfile); | ||||
| 						alive = true; | ||||
| 					} else | ||||
| 						nloopsp = 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user