Split our rc commands out into general use vs service commands
This commit is contained in:
		
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -56,6 +56,8 @@ install:: | ||||
| 	if test $(LIB) != "lib" ; then \ | ||||
| 		sed -i'.bak' -e 's,/lib/,/$(LIB)/,g' $(DESTDIR)/$(RC_LIB)/sh/functions.sh || exit $$? ; \ | ||||
| 		rm -f $(DESTDIR)/$(RC_LIB)/sh/functions.sh.bak ; \ | ||||
| 		sed -i'.bak' -e 's,/lib/,/$(LIB)/,g' $(DESTDIR)/$(RC_LIB)/sh/rc-functions.sh || exit $$? ; \ | ||||
| 		rm -f $(DESTDIR)/$(RC_LIB)/sh/rc-functions.sh.bak ; \ | ||||
| 	fi | ||||
|  | ||||
| layout: | ||||
|   | ||||
| @@ -59,4 +59,10 @@ get_bootparam() { | ||||
| 	return 1 | ||||
| } | ||||
|  | ||||
| # Add our sbin to $PATH | ||||
| case "${PATH}" in | ||||
| 	/lib/rc/sbin|/lib/rc/sbin:*) ;; | ||||
| 	*) export PATH="/lib/rc/sbin:${PATH}" ;; | ||||
| esac | ||||
|  | ||||
| # vim: set ts=4 : | ||||
|   | ||||
							
								
								
									
										37
									
								
								src/Makefile
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								src/Makefile
									
									
									
									
									
								
							| @@ -65,22 +65,23 @@ LIB_TARGETS = $(LIBEINFOSO) $(LIBRCSO) | ||||
| SBIN_TARGETS = rc | ||||
| SYS_WHITELIST = env_whitelist | ||||
|  | ||||
| TARGET = $(LIB_TARGETS) $(BIN_TARGETS) $(SBIN_TARGETS) $(PRIV_BIN_TARGETS) | ||||
| TARGET = $(LIB_TARGETS) $(BIN_TARGETS) $(SBIN_TARGETS) | ||||
|  | ||||
| RCLINKS = einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \ | ||||
| 	      eindent eoutdent esyslog eval_ecolors \ | ||||
| 	      veinfo vewarn vebegin veend vewend veindent veoutdent \ | ||||
| 	      service_starting service_inactive service_started \ | ||||
| 	      service_stopping service_stopped \ | ||||
| 	      service_inactive service_wasinactive \ | ||||
| 	      service_coldplugged \ | ||||
| 	      mark_service_starting mark_service_inactive mark_service_started \ | ||||
| 	      mark_service_stopping mark_service_stopped \ | ||||
| 	      mark_service_inactive mark_service_wasinactive \ | ||||
| 	      mark_service_coldplugged \ | ||||
| 	      get_options save_options rc-abort rc-depend \ | ||||
| 	      is_runlevel_start is_runlevel_stop service_started_daemon \ | ||||
| 		  checkown fstabinfo mountinfo | ||||
| RC_BINLINKS = einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \ | ||||
| 			  eindent eoutdent esyslog eval_ecolors \ | ||||
| 			  veinfo vewarn vebegin veend vewend veindent veoutdent \ | ||||
| 			  service_starting service_inactive service_started \ | ||||
| 			  service_stopping service_stopped \ | ||||
| 			  service_inactive service_wasinactive \ | ||||
| 			  service_coldplugged \ | ||||
| 			  is_runlevel_start is_runlevel_stop service_started_daemon \ | ||||
| 			  checkown fstabinfo mountinfo rc-depend | ||||
| RC_SBINLINKS =  mark_service_starting mark_service_inactive \ | ||||
| 				mark_service_started \ | ||||
| 				mark_service_stopping mark_service_stopped \ | ||||
| 				mark_service_inactive mark_service_wasinactive \ | ||||
| 				mark_service_coldplugged \ | ||||
| 				get_options save_options rc-abort | ||||
| BINLINKS = rc-status | ||||
| SBINLINKS = env-update rc-update runscript start-stop-daemon | ||||
|  | ||||
| @@ -122,7 +123,7 @@ rc: $(LIBEINFOSO) $(LIBRCSO) $(RCOBJS) | ||||
| 	$(CC) $(LDFLAGS) -o rc $(RCOBJS) $(LDLIBS) $(LDLIBS_RC) | ||||
|  | ||||
| links: rc | ||||
| 	for x in $(BINLINKS) $(SBINLINKS) $(RCLINKS) $(RCPRIVLINKS); do ln -sf rc $$x; done | ||||
| 	for x in $(BINLINKS) $(SBINLINKS) $(RC_BINLINKS) $(RC_SBINLINKS); do ln -sf rc $$x; done | ||||
|  | ||||
| install: $(TARGET) | ||||
| 	install -m 0755 -d $(DESTDIR)/$(LIB) | ||||
| @@ -138,9 +139,11 @@ install: $(TARGET) | ||||
| 	install -m 0755 -d $(DESTDIR)/$(RC_LIB)/conf.d | ||||
| 	install -m 0644 $(SYS_WHITELIST) $(DESTDIR)/$(RC_LIB)/conf.d | ||||
| 	install -m 0755 -d $(DESTDIR)/$(RC_LIB)/bin | ||||
| 	install -m 0755 -d $(DESTDIR)/$(RC_LIB)/sbin | ||||
| 	for x in $(BINLINKS); do ln -sf ../sbin/rc $(DESTDIR)/bin/$$x; done | ||||
| 	for x in $(SBINLINKS); do ln -sf rc $(DESTDIR)/sbin/$$x; done | ||||
| 	for x in $(RCLINKS); do ln -sf ../../../sbin/rc $(DESTDIR)/$(RC_LIB)/bin/$$x; done | ||||
| 	for x in $(RC_BINLINKS); do ln -sf ../../../sbin/rc $(DESTDIR)/$(RC_LIB)/bin/$$x; done | ||||
| 	for x in $(RC_SBINLINKS); do ln -sf ../../../sbin/rc $(DESTDIR)/$(RC_LIB)/sbin/$$x; done | ||||
| 	if test "$(PAM)" = "pam" ; then \ | ||||
| 		install -m 0755 -d $(DESTDIR)/etc/pam.d ; \ | ||||
| 		install -m 0644 start-stop-daemon.pam $(DESTDIR)/etc/pam.d/start-stop-daemon ; \ | ||||
|   | ||||
| @@ -860,24 +860,38 @@ int start_stop_daemon (int argc, char **argv) | ||||
| #endif | ||||
|  | ||||
| 		/* Clean the environment of any RC_ variables */ | ||||
| 		STRLIST_FOREACH (environ, env, i) | ||||
| 			if (env && strncmp (env, "RC_", 3) != 0) { | ||||
| 				/* For the path r, remove the rcscript bin dir from it */ | ||||
| 				if (strncmp (env, "PATH=" RC_LIBDIR "/bin:", | ||||
| 							 strlen ("PATH=" RC_LIBDIR "/bin:")) == 0) | ||||
| 				{ | ||||
| 					char *path = env; | ||||
| 					char *newpath; | ||||
| 					int len; | ||||
| 					path += strlen ("PATH=" RC_LIBDIR "/bin:"); | ||||
| 					len = sizeof (char *) * strlen (path) + 6; | ||||
| 					newpath = rc_xmalloc (len); | ||||
| 					snprintf (newpath, len, "PATH=%s", path); | ||||
| 					rc_strlist_add (&newenv, newpath); | ||||
| 					free (newpath); | ||||
| 				} else | ||||
| 					rc_strlist_add (&newenv, env); | ||||
| 			} | ||||
| 		STRLIST_FOREACH (environ, env, i) { | ||||
| 			if (strncmp (env, "RC_", 3) == 0 || | ||||
| 				strncmp (env, "SSD_NICELEVEL=", strlen ("SSD_NICELEVEL=")) == 0) | ||||
| 				continue; | ||||
|  | ||||
| 			/* For the path, remove the rcscript bin dir from it */ | ||||
| 			if (strncmp (env, "PATH=", 5) == 0) { | ||||
| 				char *path = rc_xstrdup (env); | ||||
| 				char *newpath = NULL; | ||||
| 				char *p = path; | ||||
| 				char *token; | ||||
|  | ||||
| 				p += 5; | ||||
| 				while ((token = strsep (&p, ":"))) { | ||||
| 					if (strcmp (token, RC_LIBDIR "/bin") == 0 || | ||||
| 						strcmp (token, RC_LIBDIR "/sbin") == 0) | ||||
| 						continue; | ||||
| 					 | ||||
| 					if (newpath) | ||||
| 						asprintf (&newpath, "%s:%s", newpath, token); | ||||
| 					else | ||||
| 						asprintf (&newpath, "PATH=%s", token); | ||||
| 				} | ||||
| 				rc_strlist_add (&newenv, newpath); | ||||
| 				free (path); | ||||
| 				free (newpath); | ||||
| 			} else | ||||
| 				rc_strlist_add (&newenv, env); | ||||
| 		} | ||||
|  | ||||
| 		STRLIST_FOREACH (newenv, env, i) | ||||
| 			einfo ("env %s", env); | ||||
|  | ||||
| 		umask (022); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user